Оператор перехода goto в Pascal
В языке Паскаль goto производит безусловный переход к оператору, заранее обозначенному меткой. Создать её можно с помощью зарезервированного слова label.
Помечаем оператор
label1: оператор
Описание меток происходит ПЕРЕД объявлением переменных и констант с использованием служебного слова label.
label 1,2,3;
var
num: integer;
begin
…
Правила использования goto:
- Одна метка – один оператор;
- В качестве метки может быть использовано целое число от 0 до 9999 или идентификатор не длиннее 63 символов;
- Несколько меток разделяются запятой;
- goto не работает, если метка не связана с блоком кода, в котором она применяется или вовсе ни к чему не отсылает;
- В настоящее время почти не используется.
Пример №1. Вывод числа с условием
label 1,2;
var i := 5;begin
2: if i < 0 then goto 1;
write(i);
Dec(i);
goto 2;
1:
end.
Программа выведет 543210
Пример №2. Простой цикл с пропуском итерации
program exGoto;
label 1;
var
a : integer;begin
a := 10;
(* начало основного цикла *)
1: repeat
if( a = 15) thenbegin
(* пропуск итерации, когда a = 15*)
a := a + 1;
goto 1;
end;writeln(‘значение a: ‘, a);
a:= a +1;
until a = 20;
end.
Программа выведет строки от 10 до 19, при этом пропустит 15.
Процедуры break и continue
Процедуры, прерывающие циклы вида for, while и repeat. Break используется, когда нужно завершить цикл досрочно. В таком случае выполняется оператор, следующий за циклом. Continue завершает текущую итерацию цикла, осуществляя переход к концу цикла.
Пример с обеими командами
flag := False;
for var i:=1 to 10 do
begin
read(x);
if x<0 then continue; // пропуск текущей итерации цикла
if x=5 then
begin
flag := True;
break; // выход из цикла
end;
end;
Обе процедуры используются только внутри цикла.
Оператор завершения программы exit
Позволяет мгновенно выйти из текущей функции. При этом, если он используется в теле основной программы, она полностью завершится.
function Analyze(x: integer): boolean;
begin
if x<0 then
begin
Result := False;
exit
end;
…
end;
Заключение
В настоящее время программисты советуют не использовать goto в своих программах. На заре программирования goto позволял нелинейно обращаться к элементам программы, а сейчас в нём нет необходимости из-за более совершенных конструкций.
Применение goto создаёт путаницу, нарушает логику исполнения и делает код менее эффективным. В современных проектах вы на 99% не встретите этот оператор.