Операторы в программе-обработчике событий выполняются в той последовательности, в которой они записаны. Однако достаточно часто требуется изменить порядок выполнения операторов в зависимости от выполнения (или невыполнения) определенного условия.
Выбор одного из альтернативных путей работы программного кода в зависимости от результата проверки какого-либо условия (логического выражения) в Delphi обеспечивают два оператора: условный оператор Ifи оператор выбора Case.
Условный оператор If существует в двух формах: полной и сокращенной, и схематично может быть изображен следующим образом:
Сокращенная форма | Полная форма |
Структура условного оператора имеет следующий синтаксис:
Сокращенная форма |
If Лог_выр Then Оператор; |
Полная форма |
If Лог_вырThen Оператор_1 Else Оператор_2; |
Выполнение оператора заключается в следующем: если логическое выражение, записанное после ключевого слова If, принимает значение True, то выполняется оператор после ключевого слова Then, а если оно имеет значение False, то выполняется оператор, следующий за ключевым словом Else, если таковой имеется. Например,
If a=0 Then x:=x+1;
If x < 9 Then b:=’False!’ Else b:=’True!’;
Замечание. Перед Else точка с запятой не ставится.
Каждый из операторов, входящих в состав условного оператора может быть простым или составным. Кроме того, один условный оператор может входить в состав другого, например:
If Условие_1 Then
If Условие_2 Then Оператор_1
Else Оператор_2
Else Оператор_3;
При вложенности условных операторов каждое Else соответствует тому Then, которое непосредственно ему предшествует. Поэтому для наглядности и лучшего восприятия структуры программы, особенно при использовании вложенных операторов, лучше писать Else под соответствующим Тhеn.
Оператор выбора Case. Оператор выбора позволяет обрабатывать в программе несколько условий и аналогичен блоку конструкций if...Then...Else. Используется он для частичного облегчения программирования задач, в которых содержится большое число различных проверок. Его также удобно применять тогда, когда выполнение одного из многочисленных действий зависит от значения какой-либо переменной. Синтаксис оператора выбора Case:
Case k of
A1: Оператор_1;
A2: Оператор_2;
........
AN: Оператор_N
[Else Оператор, выполняемый в случае, если значение выражения не попало ни в один из списков констант A1, A2,…,AN]
End;
Замечание. Здесь и далее квадратные скобки служат для обозначения необязательной части в структурах операторов.
Выполнение оператора начинается с вычисления выражения-селектора k, затем полученное значение сравнивается с константами A1,…,AN (метками ветвей) и выполняется соответствующий оператор.
Выражение-селектор k может иметь только простой порядковый тип (целый, символьный, логический); константы A1,…,AN должны быть того же типа, что и селектор. Если константы представляют диапазон чисел, то вместо списка можно указать первую и последнюю константу диапазона, разделив их двумя точками.