Урок 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 используется для аварийного завершения процедуры, относится именно к таким случаям.
Удачи!
Встретимся в следующем уроке!
-
чем exit вместо goto bye не устроил?