Для примера рассмотрим простейшую задачу: В компьютер вводится слово. Компьютер должен просто распечатать его. Однако, если введенным словом будет "колхозник", то компьютер должен напечатать вместо него слово "фермер".
Вот как будет выглядеть наша программа-"цензор":
Dim Slovo As String
Private Sub Command1_Click()
Slovo = InputBox("Введите слово")
If Slovo = "колхозник" Then Slovo = "фермер"
Debug.Print Slovo
End Sub
До сих пор мы после Then и после Else писали только по одному оператору. А если нужно больше?
Задача: Если а не равно 4, выполнить операторы Ь=3 и Print Ь, а в противном случае — операторы Ь=0, а=Ь+5 и с=0.
Вот оператор, решающий эту задачу:
If а <> 4 Then b=3: Print b Else Ь=0: а=Ь+5: с=0
Как видите, после Then и Else можно писать по нескольку операторов, разделенных двоеточиями.
Правила записи однострочного оператора If
Любой оператор Visual Basic нужно записывать по определенным грамматическим правилам, в противном случае Visual Basic выдает сообщение об ошибке. У каждого человеческого языка есть своя грамматика, включающая в себя правила, по которым должны выстраиваться в цепочку слова и другие элементы языка, чтобы получилось правильное предложение. Совокупность этих правил образует часть грамматики, называемую синтаксисом. В языках программирования тоже есть предложения. Такими предложениями здесь являются операторы. Очевидно, у языков программирования тоже должен быть свой синтаксис, который описывает правила, по которым записываются операторы языка и из операторов составляется программа. После того, как человек запускает программу на выполнение, любая порядочная среда программирования прежде, чем действительно выполнять ее, сначала проверит, нет ли в ней синтаксических ошибок, и если есть, то программу выполнять не будет, а выдаст сообщение, указывающее человеку, в чем ошибка. А Visual Basic проверяет программу еще на стадии ввода кода.
У Visual Basic есть две формы оператора If: однострочная и многострочная.
Пока мы пользовались только однострочным If и поэтому приведем правило записи только для него. Приведем это правило в виде синтаксической схемы:
If условие Then операторы Else операторы
Как понимать эту схему? Ее следует понимать, как образец, шаблон записи оператора, указывающий порядок, в котором оператор записывается из отдельных слов. Слова, которые в схеме я записал жирными буквами, при записи оператора просто копируются. Вместо слов, которые в схеме записаны курсивом, нужно при записи оператора подставить то, что они означают. Поясним, что обозначают эти слова.
операторы ∙ любой оператор Visual Basic или группа операторов, разделенных двоеточиями
условие ∙ пока под условием будем понимать два арифметических или строковых выражения, соединенных знаком сравнения
знак сравнения ∙ знаков сравнения шесть: > больше; >= больше или равно; = равно; < меньше; <= меньше или равно; <> не равно
Пример:
If 5*а+4 <= a*b Then Print b Else a=b+5
Здесь
Print b — один оператор,
a=b+5 — другой оператор,
5*a+4 <= a*b — условие,
5*a+4 — одно выражение,
a*b — другое выражение,
<= — знак сравнения.
Вы уже видели, что однострочный оператор If можно записывать в краткой форме. Вот синтаксическая схема для этой формы:
If условие Then операторы
Таким образом, это уже вторая синтаксическая схема, касающаяся одного оператора. Удобно же весь синтаксис оператора иметь перед глазами в одной схеме. Соединим две схемы в одну. Вот эта схема:
Синтаксическая схема однострочного оператора If:
If условие Then операторы [Else операторы]
Квадратные скобки здесь означают, что их содержимое можно писать, а можно и не писать в операторе.
Полезное замечание: Вычисляя выражения, стоящие в условии оператора If, Visual Basic не записывает их значения в память. Например, после выполнения фрагмента — b=6: If b+1>0 Then s=20 — в ячейке Ь будет храниться 6, а не 7. То же относится и к выражениям из оператора Print. Например: Ь=6: Print Ь+1. И здесь тоже в ячейке Ь останется храниться 6, а не 7. И вообще, информация в ячейках памяти не меняется при вычислении выражений без присвоения.
Примеры работы оператора If:
Задания 15–17: Определить без компьютера, что будет напечатано при выполнении следующих фрагментов программ: