Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
8 Мб
Скачать
☆

1.6.Ступенчатая запись программы

Ступенчатая запись программы - это как правила хорошего тона - можно и не соблюдать, но посмотрят косо.

Возьмем бессмысленную программу и посмотрим, как она записана. Конкретнее - обратим внимание на то, на что не обращает внимания компьютер, а именно на отступы от левого края листа в записи каждой строки.

Private Sub Command1_Click()

a = InputBox("Введите число")

If a > 4 Then

b=3

Print b

Else

b=0

a=b+5

с=0

End If

b=5

MsgBox ("До свидания!")

End Sub

Строки начала и конца процедуры записаны без отступа. Мы видим, что процедура состоит из четырх операторов: а=, If, b= и MsgBox. Все они выполняются по порядку, один за другим, поэтому каждый из них записан с одинаковым отступом. Если оператор сложный, то есть включает в себя другие операторы (мы знаем пока один такой оператор - If), то составляющие его операторы записываются еще правее. Так, у нас операторы b=0, a=b+5 и с=0 входят в состав оператора If и должны выполняться по порядку один за другим, поэтому их отступ слева одинаков и больше, чем у If.

Сделано все это для удобства чтения программы, для того, чтобы глаз мог сразу же уловить структуру программы, а именно, из каких частей состоит как сама программа, так и каждый из элементов, ее составляющих. Впрочем, вам с первого взгляда может показаться, что такая запись, наоборот, неудобна для чтения. Однако, заметьте, что она принята во всем мире и глаза профессиональных программистов привыкли именно к ней. Настолько привыкли, что программа, записанная без соблюдения ступенчатого стиля, вызывает раздражение.

Конечно, допустимы и некоторые отклонения от ступенчатого стиля. Например, как я уже говорил, несколько коротких похожих операторов вполне можно записать в одну строку:

a=0: b=0: c=0: f=4

Этим мы экономим дефицитное место по вертикали экрана или листа бумаги.

1.7.Вложенные операторы If. Логические операции и выражения

Умный компьютер решает сложные логические задачи. Для этого нужны сложные средства языка. Рассмотрим их.

Вложенные операторы If

Согласно синтаксической схеме оператора If, после Then и Else может стоять любой оператор Visual Basic, в том числе и If.

Решим задачу: В компьютер вводится число (пусть для конкретности это будет дальность какого-нибудь выстрела). Если оно находится в интервале от 28 до 30, то напечатать текст ПОПАЛ, иначе - НЕ ПОПАЛ.

Сначала составим алгоритм: Введи число. Если оно меньше 28, то печатай НЕ ПОПАЛ, в противном случае надо еще подумать. А о чем же думать? А вот о чем: Если число меньше 30, то печатай ПОПАЛ, иначе печатай НЕ ПОПАЛ.

А теперь по составленному алгоритму напишем программу:

Private Sub Command1_Click()

a = InputBox("Введите дальность выстрела")

If a < 28 Then

MsgBox ("НЕ ПОПАЛ")

Else

If a < 30 Then MsgBox ("ПОПАЛ") Else MsgBox ("НЕ ПОПАЛ")

End If

End Sub

Здесь оператор If a < 30 входит в состав оператора If a < 28. Говорят, что он вложен в него.

Эту же программу можно записать и без вложенного If:

Private Sub Command1_Click()

a = InputBox("Введите дальность выстрела")

If a < 28 Then

MsgBox ("НЕ ПОПАЛ")

ElseIf a < 30 Then

MsgBox ("ПОПАЛ")

Else

MsgBox ("НЕ ПОПАЛ")

End If

End Sub

Задание 26: Усложним задание 19 из 1.3: В компьютер вводятся длины трех отрезков. Компьютер должен ответить на вопрос, правда ли, что эти отрезки могут образовать треугольник.

Указание: Для этого каждый отрезок должен быть меньше суммы длин двух других отрезков.

Логические операции

Применение вложенных If создает довольно громоздкую, трудную для понимания программу. Поэтому в Visual Basic есть возможность записывать многие программы короче и понятнее, используя вместо вложенных друг в друга If только один If. Для этого используются так называемые логические операции. Что это такое, разберем на примерах.

Задача "Разборчивая принцесса". В прихожей у принцессы - длинная очередь женихов. Принцессе нравятся только голубоглазые маленького роста. Устав принимать женихов и отбирать из них подходящих, принцесса вместо себя поставила компьютер, написав для него программу, которая говорит ВЫ МНЕ ПОДОЙДЕТЕ тем, у кого цвет глаз голубой и рост меньше 140 см. Остальным программа говорит ДО СВИДАНИЯ.

Вот эта программа:

Dim Tsvet As String 'Цвет

Dim Rost As Integer: 'Рост

Private Sub Command1_Click()

Tsvet = InputBox("Каков цвет ваших глаз?")

Rost = InputBox("Введите ваш рост в сантиметрах")

If Tsvet = "Голубой" And Rost < 140 Then Print "ВЫ МНЕ ПОДОЙДЕТЕ" Else Print "ДО СВИДАНИЯ"

End Sub

Мы видим, что условие в операторе If уже не такое простое, как мы описывали раньше, а сложное, то есть состоящее из двух условий, соединенных знаком логической операции And (переводится "и"). Весь оператор If можно прочесть так - если цвет глаз голубой И рост меньше 140 сантиметров, то печатай ВЫ МНЕ ПОДОЙДЕТЕ, иначе печатай ДО СВИДАНИЯ.

Знак логической операции And, поставленный между двумя условиями, говорит о том, что должны выполняться сразу оба эти условия.

Поэтому наш оператор If ответит ДО СВИДАНИЯ и высоким голубоглазым, и высоким неголубоглазым, и маленьким неголубоглазым. И лишь маленьким голубоглазым он ответит ВЫ МНЕ ПОДОЙДЕТЕ. В общем, And - строгий знак.

Программа для задачи ПОПАЛ - НЕ ПОПАЛ при использовании логических операций значительно упростится:

Private Sub Command1_Click()

a = InputBox("Введите дальность выстрела")

If a > 28 And a < 30 Then MsgBox ("ПОПАЛ") Else MsgBox ("НЕ ПОПАЛ")

End Sub

Задача "Неразборчивая принцесса". Неразборчивой принцессе нравятся все маленькие независимо от цвета глаз и все голубоглазые независимо от роста. Программа неразборчивой принцессы будет отличаться от программы разборчивой одним единственным знаком логической операции:

If Tsvet ="Голубой" Or Rost<140 'Если цвет голубой ИЛИ рост<140

Знак логической операции Or переводится "или".

Поставленный между двумя условиями, знак Or говорит о том, что достаточно, если будет выполняться хотя бы одно из них.

Поэтому теперь оператор If ответит ВЫ МНЕ ПОДОЙДЕТЕ и высоким голубоглазым и маленьким голубоглазым и маленьким неголубоглазым. И лишь высоким неголубоглазым он ответит ДО СВИДАНИЯ.

Знаками And и Or можно объединять сколько угодно условий. Например:

If a>2 Or x=b Or c<>1 Then k=99 Else k=33

Здесь выполнится оператор k=99, если верно хотя бы одно из трех условий, и лишь когда все три неверны, будет выполняться оператор k=33.

Кроме логических операций And и Or применяется еще логическая операция Not (переводится "НЕ"). Запись If Not a>b Then... переводится так - ЕСЛИ НЕПРАВДА, ЧТО a больше b, ТО.... Вот фрагмент:

a=2: b=3: If Not a>b Then k=1 Else k=0

Здесь выполнится оператор k=1, так как неправда, что 2>3.

Логические выражения

Выражения

a>b

a > 28 And a < 30

Tsvet ="Голубой" Or Rost<140

a>2 Or x=b Or c<>1

имеют ту общую черту, что про каждое из них можно сказать, верно оно или нет в каждый момент времени. Такие выражения называются логическими выражениями. Если логическое выражение верно, то говорят, что оно имеет значение True (Правда). Если логическое выражение неверно, то говорят, что оно имеет значение False (Ложь). Любое логическое выражение может стоять в качестве условия в операторе If.

Логические выражения могут быть сложными - содержать одновременно операции And, Or, Not. Например, такое:

a>2 And  Not b>3  Or  s>8

Чтобы его понять, нужно знать порядок действий. В арифметике сначала выполняется умножение, потом сложение. В логических выражениях сначала выполняется Not, затем And, затем Or. Для облегчения понимания не возбраняется расставлять скобки:

(a>2 And  (Not b>3))  Or  s>8

Это выражение равносильно предыдущему.

Скобки можно расставлять и чтобы изменить порядок действий:

a>2 And  Not (b>3  Or  s>8)

Примеры:

ФРАГМЕНТ

РЕЗУЛЬТАТ

a=8: b=6: If a>b And b>7 Then k=1 Else k=0

k=0

a=8: b=6: If a>b Or b>7 Then k=1 Else k=0

k=1

a=8: b=6: If a<b Or b>7 Then k=1 Else k=0

k=0

a=8: b=6: If Not a=8 Then k=1 Else k=0

k=0

Задание 27: "Замысловатая принцесса". Определите, кто нравится принцессе, по фрагменту из ее программы:

If Tsvet ="Черный" And (Rost<180 Or Rost>184) Then Print "ВЫ МНЕ ПОДОЙДЕТЕ" Else Print "ДО СВИДАНИЯ"

Задание 28: Усложним нашу задачу про ПОПАЛ - НЕ ПОПАЛ: Человек вводит в компьютер число. Если оно находится в интервале от 28 до 30, то нужно напечатать текст ПОПАЛ, если оно больше или равно 30 - то ПЕРЕЛЕТ, если оно находится на отрезке от 0 до 28, то НЕДОЛЕТ, если число меньше нуля - НЕ БЕЙ ПО СВОИМ.

Задание 29:

Человек вводит с клавиатуры строку, смысл которой - приветствие при встрече. Компьютер тоже должен ответить приветствием. Отвечать нужно в соответствии со следующей таблицей:

ПРИВЕТСТВИЕ ЧЕЛОВЕКА

ОТВЕТ КОМПЬЮТЕРА

Привет

Привет

Здравствуйте

Здравствуйте

Добрый день

Салют

Приветик

Салют

Салют

Салют

Здравия желаю

Вольно

Любое другое приветствие

Я вас не понимаю

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]