Разбираем оператор If на примерах

Выучим сначала три английских слова:

If читается "иф" переводится "если"
Then читается "зэн" переводится "то"
Else читается "элз" переводится "иначе"

Теперь приведем пример записи нового для вас оператора:

If a=28 Then Debug.WriteLine(f) Else k=44

Переводится он так:

ЕСЛИ a=28 ТО пиши f ИНАЧЕ присвой k значение 44

Другими словами, мы предлагаем компьютеру прежде, чем что-то делать, сначала подумать, правда ли, что a=28 , и если правда, то выполнить оператор Debug.WriteLine(f), в противном случае выполнить оператор k=44. Таким образом, мы с вами впервые написали оператор, при выполнении которого компьютер не просто выполняет, что приказано, а сначала думает и делает выбор (пока одного из двух).

Мы видим, что оператор If включает в себя другие операторы, которые выполняются или не выполняются в зависимости от какого-то условия. Тем не менее, вся эта запись считается одним оператором If. Чтобы привыкнуть к оператору If, рассмотрим пару задач.

Задача 1. Компьютер должен перемножить два числа - 167 и 121. Если их произведение превышает 20000, то компьютер должен напечатать текст ПРОИЗВЕДЕНИЕ БОЛЬШОЕ, иначе текст ПРОИЗВЕДЕНИЕ МАЛЕНЬКОЕ. После этого компьютер в любом случае должен напечатать само произведение.

Программа:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim a, b, y As Integer

a = 167

b = 121

y = a * b

If y > 20000 Then Debug.WriteLine("ПРОИЗВЕДЕНИЕ БОЛЬШОЕ") _

Else Debug.WriteLine("ПРОИЗВЕДЕНИЕ МАЛЕНЬКОЕ")

Debug.WriteLine(y)

End Sub

Пояснение: В процедуре 5 операторов, не считая оператора Dim, последний из них – Debug.WriteLine(y). Поскольку все 5 операторов выполняются по порядку, то он выполнится обязательно. Оператор If у нас – однострочный, пусть вас не вводит в заблуждение то, что он занимает физически две строки, ведь в конце первой из них я поставил знак переноса.

Обязательно выполните эту программу в пошаговом режиме. Обратите внимание, что подсветка после If y > 20000 Then перескакивает на Debug.WriteLine ("ПРОИЗВЕДЕНИЕ БОЛЬШОЕ"), а затем на Debug.WriteLine(y).

Теперь замените в программе a = 167 на a = 1 и снова выполните программу в пошаговом режиме. Обратите внимание, что теперь подсветка после If y > 20000 Then перескакивает на Debug.WriteLine("ПРОИЗВЕДЕНИЕ МАЛЕНЬКОЕ"), а затем уже на Debug.WriteLine(y).

Задача 2. В компьютер вводятся два произвольных положительных числа – длины сторон двух кубиков. Компьютер должен подсчитать объем одного из них – того, что больше по размеру.

Обозначим a1 - сторону одного кубика, a2 - сторону другого, bol - сторону большего кубика, V - объем кубика. Приведем три варианта программы:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim a1, a2 As Double

a1 = InputBox("Введите сторону одного кубика")

a2 = InputBox("Введите сторону другого кубика")

If a1 > a2 Then Debug.WriteLine(a1 * a1 * a1) Else Debug.WriteLine(a2 * a2 * a2)

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim a1, a2, V As Double

a1 = InputBox("Введите сторону одного кубика")

a2 = InputBox("Введите сторону другого кубика")

If a1 > a2 Then V = a1 ^ 3 Else V = a2 ^ 3

Debug.WriteLine(V)

End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

Dim a1, a2, bol As Double

a1 = InputBox("Введите сторону одного кубика")

a2 = InputBox("Введите сторону другого кубика")

If a1 > a2 Then bol = a1 Else bol = a2

Debug.WriteLine(bol ^ 3)

End Sub

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

If без Else. Оператор If можно записывать и без части Else. Например,

If s<t Then w=a+1

Это означает, что если s<t, то нужно выполнить оператор w=a+1, в противном случае ничего не делать, а просто перейти к следующему оператору. Фрагмент

a = 6

If a > 5 Then a = a + 10

Debug.WriteLine(a)

напечатает 16, а фрагмент

a = 2

If a > 5 Then a = a + 10

Debug.WriteLine(a)

напечатает 2.

Еще один пример: Пусть в компьютер вводится слово. Компьютер должен просто распечатать его. Однако, если введенным словом будет «колхозник», то компьютер должен напечатать вместо него слово «фермер».

Вот как будет выглядеть наша программа-«цензор»:

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

Dim Slovo As String

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

If Slovo = "колхозник" Then Slovo = "фермер"

Debug.WriteLine(Slovo)

End Sub

Несколько операторов после Then и Else. До сих пор мы после Then и после Else писали только по одному оператору. А если нужно больше?

Задача: Если a не равно 4, выполнить операторы b=3 и Debug.WriteLine(b), а в противном случае - операторы b=0, a=b+5 и с=0.

Вот оператор, решающий эту задачу:

If a <> 4 Then b = 3 : Button4.Width = 50 Else b = 0 : a = b + 5 : c = 0

Как видите, после Then и Else можно писать по нескольку операторов, разделенных двоеточиями. Однако, чаще для этого применяют многострочный If.

Наши рекомендации