Урок 87 - Оператор GOTO

Инструкции if и case используются для перехода к последовательности инструкций программы в зависимости от некоторого условия. Поэтому ихиногда называют инструкциями условного перехода. Помимо этих инструкций управления ходом выполнения программы существует еще одна — инструкция безусловного перехода goto. В общем виде инструкция goto записывается следующим образом:

goto Метка;
где метка — это идентификатор, находящийся перед инструкцией, которая должна быть выполнена после инструкции goto. Метка, используемая в инструкции goto, должна быть объявлена в разделе меток, который начинается словом label и располагается перед разделом объявления переменных. В программе метка ставится перед инструкцией, к которой должен быть выполнен переход в результате выполнения инструкции goto. Сразу после метки ставится двоеточие.

В листинге приведен вариант процедуры проверки числа, в которой ин струкция goto используется для завершения процедуры в том случае, если пользователь введет неверные данные.

Листинг:
procedure TForml.ButtonlClickfSender: TObject);
label // раздел объявления меток
bye;
var
n: integer; // проверяемое число
d: integer; // делитель
r: integer; // остаток от деления п на d
begin
n:=StrTo!nt(Edit1.text);
if n <= 0 then
begin
MessageDlg('Число должно быть больше нуля.',
mtError,(mbOkl,Q);
Editl.text:= '';
goto bye;
end;
// введено положительное число
d: = 2; // сначала будем делить на два
repeat
r:= n mod d;
if r о 0 // n не разделилось нацело на d
then d:= d + 1;
until r = 0;
Iabel2.caption:=Editl.text;
if d = n
then Iabel2.caption:=label2.caption+ ' — простое число.' 
else Iabel2.caption:=labe!2.caption+ ' — обычное число.';
bye:
end;
 
В литературе по программированию можно встретить суждения о недопустимости применения инструкции goto, поскольку она приводит к запутан ности программ. Однако с категоричностью таких утверждений согласиться нельзя. В некоторых случаях применение инструкции goto вполне оправдано. Приведенный пример, где инструкция goto используется для аварийного завершения процедуры, относится именно к таким случаям.

Удачи!
Встретимся в следующем уроке!



  1. Вячеслав
    Вячеслав a year ago
    чем exit вместо goto bye не устроил?
Отменить.