Операторы выбора используются для изменения пути выполнения программы в зависимости от значения какого-либо выражения. В Fore.NET имеются следующие условные операторы:
Условный оператор ?: возвращает одно из двух значений в зависимости от значения передаваемого логического выражения.
Если выражение возвращает значение True, то вычисляется и становится результатом выражение, следующее за символом «?». Если выражение возвращает значение False, то вычисляется и становится результатом выражение, следующее за символом «:». В любом случае возвращается только одно из двух выражений.
Imports System;
Imports System.Diagnostics;
Sub TestChoice();
Var
RndObj: Random = New Random();
i, j: Double;
Begin
i := RndObj.NextDouble();
j := RndObj.NextDouble();
Debug.WriteLine(i > j ? "i>j" : "i<j");
End Sub;
Оператор If используется для выбора одного из возможных путей выполнения программы в зависимости от значения логического выражения.
Оператор выполняется следующим образом:
Последовательно вычисляются значения логических выражений в условиях If и Elseif.
Если значение вычисленного выражения для какого-либо условия равно True, то выполняется блок соответствующий данному условию. После завершения выполнения блока управление передается в завершающую точку оператора.
Если ни одно из условий не было выполнено (значения всех выражений оказались равны False), то при наличии блока Else управление передается ему и после его завершения управление передается в завершающую точку оператора.
Если ни одно из условий не было выполнено и в операторе отсутствует блок Else, то управление сразу передается в завершающую точку оператора.
Sub TestIf();
Var
a, b: Integer;
c: Double;
Begin
//...
//Получение значений a, b, c
//...
If (a > b) And (b > c) Then
c := a - b;
Elseif (a < b) And (b < c) Then
c := b - a;
Else
c := (a + b) / 2
End If;
//...
End Sub;
Оператор Select используется для выбора списка операторов для выполнения, которым соответствуют определенные метки, путем сопоставления метки со значением выражения. В заголовке оператора Select указывается выражение посредством вычисления которого будет определяться выполняемый блок операторов. Тип выражения в заголовке оператора называется определяющим типом. Константные выражения в списках меток должны иметь значения, которые могут быть неявно приведены к определяющему типу оператора. Если два или более значений меток имеют одинаковое значение возникает ошибка компиляции.
Оператор Select выполняется следующим образом:
Вычисляется выражение в заголовке и приводится к определяющему типу.
Если значение одной из констант в метке Case равно значению выражения, то производится выполнение блока соответствующего этой метке. После завершения выполнения блока управление передается в завершающую точку оператора.
Если ни одно из значений меток не совпало со значением управляющего выражения, то при наличии блока Else управление передается ему и после его завершения управление передается в завершающую точку оператора.
Если ни одно из значений меток не совпало со значением управляющего выражения и в операторе отсутствует блок Else, то управление сразу передается в завершающую точку оператора.
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<>[0,2]";
End Select;
End Function;
См. также: