Операторы перехода используется для передачи управления из одного блока кода в другой при наступлении определённых условий. Различные операторы перехода могут использоваться только в определённых конструкциях языка. В Fore имеются следующие виды операторов перехода:
Оператор Break прерывает текущий выполняющийся цикл и передает управление на оператор, следующий сразу за циклом. Если в блоке, содержащем данный оператор, нет ни одного объемлющего цикла, то оператор ничего не делает.
Пример:
Sub Main;
Var
i: Integer;
Begin
For i := 1 To 20 Do
Debug.WriteLine("Hi");
Break;
Debug.WriteLine("Hello");
End For;
End Sub Main;
В результате выполнения примера в консоль выведется только «Hi».
Оператор Continue прерывает выполнение текущей итерации цикла и переходит к выполнению следующей итерации. Если в блоке, содержащем данный оператор, нет ни одного объемлющего цикла, то оператор ничего не делает.
Пример:
Sub Main;
Var
i: Integer;
Begin
For i := 1 To 2 Do
Debug.WriteLine(i);
Continue;
Debug.WriteLine("Hello");
End For;
End Sub Main;
В результате выполнения примера цикл выполнится два раза и слово Hello в консоль выводится не будет.
Оператор Return предназначен для осуществления выхода из подпрограммы.
В случае процедур данный оператор используется без параметра и инициирует возврат в точку вызова процедуры.
В случае функции после ключевого слова Return должно следовать выражение, которое возвращается в точку вызова функции. Тип выражения должен соответствовать типу функции.
Оператор Return в тексте подпрограммы может встретиться несколько раз. Если в ходе выполнения подпрограммы не был выполнен ни один из операторов Return, то осуществляется выход из подпрограммы по концу ее тела. Если подпрограмма является функцией и выход из функции осуществляется не по оператору Return, а по концу тела функции, то результатом функции будет считаться некоторое случайное значение.
Пример:
Sub ReturnSample;
Function GetSummAB(a: Integer; b: Integer): Integer;
Begin
a := b;
b := 10;
Return a + b;
End Function GetSummAB;
Var
a: Integer;
Begin
a := 2;
If GetSummAB(a, 2) = 12 Then
Return
End If;
Debug.WriteLine("End");
End Sub ReturnSample;
При выполнении метода ReturnSample вызывается вложенная функция GetSummAB. Результатом функции является сумма двух аргументов. В процедуре проверяется результат функции GetSummAB. Если результат равен «12», то осуществляется выход из процедуры.
См. также: