End If
b=5
MsgBox ("До свидания!")
End Sub
Строки начала и конца процедуры записаны без отступа. Мы видим, что процедура состоит из четырех операторов: а=, If, b= и MsgBox. Все они выполняются по порядку, один за другим, поэтому каждый из них записан с одинаковым отступом. Если оператор сложный, то есть включает в себя другие операторы (мы знаем пока один такой оператор — If), то составляющие его операторы записываются еще правее. Так, у нас операторы Ь=0, а=Ь+5 и с=0 входят в состав оператора If и должны выполняться по порядку один за другим, поэтому их отступ слева одинаков и больше, чем у If.
Сделано все это для удобства чтения программы, для того, чтобы глаз мог сразу же уловить структуру программы, а именно, из каких частей состоит как сама программа, так и каждый из элементов, ее составляющих. Впрочем, вам с первого взгляда может показаться, что такая запись, наоборот, неудобна для чтения. Однако, заметьте, что она принята во всем мире и глаза профессиональных программистов привыкли именно к ней. Настолько привыкли, что программа, записанная без соблюдения ступенчатого стиля, вызывает раздражение.
Конечно, допустимы и некоторые отклонения от ступенчатого стиля. Например, как я уже говорил, несколько коротких похожих операторов вполне можно записать в одну строку:
а=0: b=0: с=0: f=4
Этим мы экономим дефицитное место по вертикали экрана или листа бумаги.
Вложенные операторы If
Согласно синтаксической схеме оператора If, после Then и Else может стоять любой оператор Visual Basic, в том числе и If.
Решим задачу: В компьютер вводится число (пусть для конкретности это будет дальность какого-нибудь выстрела). Если оно находится в интервале от 28 до 30, то напечатать текст ПОПАЛ, иначе — НЕ ПОПАЛ.
Сначала составим алгоритм: Введи число. Если оно меньше 28, то печатай НЕ ПОПАЛ, в противном случае надо еще подумать. А о чем же думать? А вот о чем: Если число меньше 30, то печатай ПОПАЛ, иначе печатай НЕ ПОПАЛ.
А теперь по составленному алгоритму напишем программу:
Private Sub Command1_Click()
а = InputBox("Введите дальность выстрела")
If а < 28 Then
MsgBox ("НЕ ПОПАЛ")
Else
If а < 30 Then MsgBox ("ПОПАЛ") Else MsgBox ("HE ПОПАЛ")
End If
End Sub
Здесь оператор If a < 30 входит в состав оператора If а < 28. Говорят, что он вложен в него.
Эту же программу можно записать и без вложенного If:
Private Sub Command1_Click()
a = InputBox("Введите дальность выстрела")
If a < 28 Then
MsgBox ("HE ПОПАЛ")
Elself a < 30 Then
MsgBox ("ПОПАЛ")
Else
MsgBox ("HE ПОПАЛ")
End If
End Sub
Задание 26: В компьютер вводятся длины трех отрезков. Компьютер должен ответить на вопрос, правда ли, что эти отрезки могут образовать треугольник.
Указание: Для этого каждый отрезок должен быть меньше суммы длин двух других отрезков.
Логические операции
Применение вложенных 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, поставленный между двумя условиями, говорит о том, что должны выполняться сразу оба эти условия.