Оператор перехода 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) then

begin
(* пропуск итерации, когда 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% не встретите этот оператор.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *