Условный оператор If или как компьютер делает выбор
Теперь посмотрим, как писать разветвляющиеся программы на Visual Basic. Выучим сначала три английских слова:
If читается "иф" переводится "если"
Then читается "зэн" переводится "то"
Else читается "элз" переводится "иначе"
Теперь приведем пример записи нового для вас оператора:
If а=28 Then Print f Else k=44
Переводится он так:
ЕСЛИ а=28 ТО печатай f ИНАЧЕ присвой переменной к значение 44.
Другими словами, мы предлагаем компьютеру сначала подумать, правда ли, что а=28, и если правда, то выполнить оператор Print f, в противном случае выполнить оператор к=44. Таким образом, мы с вами впервые написали оператор,
при выполнении которого компьютер не просто выполняет, что приказано, а сначала думает и делает выбор (пока одного из двух).
Мы видим, что оператор If включает в себя другие операторы, которые выполняются или не выполняются в зависимости от какого-то условия. Тем не менее, вся эта запись считается одним оператором If. Чтобы привыкнуть к оператору If, рассмотрим пару задач.
Задача 1. Компьютер должен перемножить два числа — 167 и 121. Если их произведение превышает 2000, то компьютер должен напечатать текст ПРОИЗВЕДЕНИЕ БОЛЬШОЕ, иначе текст ПРОИЗВЕДЕНИЕ МАЛЕНЬКОЕ. После этого компьютер в любом случае должен напечатать само произведение.
Программа:
Dim a As Integer
Dim b As Integer
Dim у As Integer
Private Sub Form_Load()
a = 167
b = 121
Y = a * b
If Y > 20000 Then Debug.Print "ПРОИЗВЕДЕНИЕ БОЛЬШОЕ"
Else Debug.Print "ПРОИЗВЕДЕНИЕ МАЛЕНЬКОЕ"
Debug.Print у
End Sub
Пояснение: В процедуре 5 операторов, последний — Debug.Print у. Поскольку эти 5 операторов выполняются по порядку, то он выполнится обязательно.
Обязательно выполните эту программу в пошаговом режиме. Обратите внимание, что подсветка после If у > 20000 Then перескакивает на Debug.Print "ПРОИЗВЕДЕНИЕ БОЛЬШОЕ", а затем на Debug.Print у.
Теперь замените в программе а = 167 на а = 1 и снова выполните программу в пошаговом режиме. Обратите внимание, что теперь подсветка после If у > 20000 Then перескакивает на Debug.Print "ПРОИЗВЕДЕНИЕ МАЛЕНЬКОЕ", а затем уже на Debug.Print у.
Задача 2. В компьютер вводятся два произвольных положительных числа — длины сторон двух кубиков. Компьютер должен подсчитать объем одного кубика — большего по размеру.
Обозначим а1 — сторону одного кубика, а2 — сторону другого, bo1 — сторону большего кубика, V — объем кубика. Приведем три варианта программы:
ВАРИАНТ 1
Dim a1 As Double
Dim a2 As Double
Private Sub Command1 Click()
a1 = InputBox("Введите сторону одного кубика")
а2 = InputBox("Введите сторону другого кубика")
If a1 > а2 Then Debug. Print a1 * a1 * a1 Else Debug.Print a2 * a2 * a2
End Sub
ВАРИАНТ 2
Dim a1 As Double
Dim a2 As Double
Dim V As Double
Private Sub Command1 Click()
a1 = InputBox("Введите сторону одного кубика")
а2 = InputBox("Введите сторону другого кубика")
If a1 > а2 Then V = a1 * a1 * a1 Else V = a2 * a2 * a2
Debug.Print V
End Sub
ВАРИАНТ 3
Dim a1 As Double
Dim a2 As Double
Dim bo1 As Double
Private Sub Command1 Click()
a1 = InputBox("Введите сторону одного кубика")
а2 = InputBox("Введите сторону другого кубика")
If a1 > а2 Then bo1 = a1 Else bo1 = a2 Debug.Print bo1 * bo1 * bo1
End Sub
Каждый из вариантов должен быть вами понят. Если возникают трудности, то используйте пошаговый режим и следите за значениями переменных. Для каждого варианта пошаговый режим используйте два раза — когда первый кубик больше и когда второй кубик больше. Как видите, одна задача может решаться разными программами.
Итак, если паровая машина избавила человека от тяжелого физического труда, то оператор if избавил человека от тяжелого умственного труда, в нашем случае — от необходимости решать, какое из двух чисел больше другого.
Оператор If можно записывать и без части Else. Например, If s<t Then w=a+1. Это означает, что если s<t, то нужно выполнить оператор w=a+l, в противном случае ничего не делать, а просто перейти к следующему оператору.