Операторы выбора используются для изменения пути выполнения программы в зависимости от значения какого-либо выражения.
selection-statement:
if-statement
switch-statement
Оператор If используется для выбора одного из возможных путей выполнения программы в зависимости от значения логического выражения.
if-statement:
If boolean-expression Then block elseif-clausesopt else-clauseopt End If
boolean-expression:
expression
elseif-clauses:
elseif-clause
elseif-clauses elseif-clause
elseif-clause:
Elseif boolean-expression Then block
else-clause:
Else block
Оператор If выполняется следующим образом:
Последовательно вычисляются значения логических выражений в условиях If и Elseif.
Если значение вычисленного выражения для какого-либо условия равно True, то выполняется блок соответствующий данному условию. После завершения выполнения блока управление передается в завершающую точку оператора.
Если ни одно из условий не было выполнено (значения всех выражений оказались равны False), то при наличии блока Else управление передается ему и после его завершения управление передается в завершающую точку оператора.
Если ни одно из условий не было выполнено и в операторе отсутствует блок Else, то управление сразу передается в завершающую точку оператора.
Private Sub TestIf();
Var
a, b: Integer;
c: Double;
Begin
//.....
// Условие
If a = 0 Then
c := b; // Операторы, выполняющиеся, если a=0
Else
c := b / a; // Операторы, выполняющиеся, если a<>0
End If;
//.....
End Sub;
Оператор Select используется для выбора списка операторов для выполнения, которым соответствуют определенные метки, путем сопоставления метки со значением выражения.
switch-statement:
Select Case expression switch-sections else-clauseopt End Select
switch-sections:
switch-section
switch-sections switch-section
switch-section:
Case switch-labels : block
switch-labels:
switch-label
switch-labels , switch-label
switch-label:
constant-expression
В заголовке оператора Select указывается выражение посредством вычисления которого будет определяться выполняемый блок операторов. Тип выражения в заголовке оператора называется определяющим типом. Константные выражения в списках меток должны иметь значения, которые могут быть неявно приведены к определяющему типу оператора. Если два или более значений меток имеют одинаковое значение возникает ошибка компиляции.
Оператор Select выполняется следующим образом:
Вычисляется выражение в заголовке и приводится к определяющему типу.
Если значение одной из констант в метке Case равно значению выражения, то производится выполнение блока соответствующего этой метке. После завершения выполнения блока управление передается в завершающую точку оператора.
Если ни одно из значений меток не совпало со значением управляющего выражения, то при наличии блока Else управление передается ему и после его завершения управление передается в завершающую точку оператора.
Если ни одно из значений меток не совпало со значением управляющего выражения и в операторе отсутствует блок Else, то управление сразу передается в завершающую точку оператора.
Private Function TestSelect(a: integer): string;
Begin
Select Case a
Case 0: Return "A=0";
Case 1: Return "A=1";
Case 2: Return "A=2";
Else Return "A>2";
End Select;
End Function TestSelect;
См.также: