Инструкции if и
case используются для перехода к последовательности инструкций программы в
зависимости от некоторого условия. Поэтому их иногда называют инструкциями
условного перехода. Помимо этих инструкций управления ходом выполнения программы
существует еще одна — инструкция безусловного перехода goto.
В общем виде
инструкция goto записывается следующим образом:
goto Метка
где метка — это
идентификатор, находящийся перед инструкцией, которая должна быть выполнена
после инструкции goto.
Метка,
используемая в инструкции goto, должна быть объявлена в разделе меток, который
начинается словом label и располагается перед разделом объявления
переменных.
В программе
метка ставится перед инструкцией, к которой должен быть выполнен переход в
результате выполнения инструкции goto. Сразу после метки ставится
двоеточие.
В листинге 2.8
приведен вариант процедуры проверки числа, в которой инструкция goto
используется для завершения процедуры в том случае, если пользователь введет
неверные данные.
Листинг
2.8. Простое число (использование инструкции goto)
procedure TForm1.Button1Click(Sender: label // раздел bye; var n: integer; // проверяемое число d: integer; // делитель r: integer; // остаток от деления п на d begin n:=StrToInt(Editl.text); if n <= 0 then begin MessageDlg('Число должно быть больше нуля.', mtError, [mbOk] , 0) ; Editl.text:= "; goto bye; end; // введено положительное число d:= 2; // сначала будем делить на два repeat r:= n mod d; if r <> 0 // n не разделилось нацело на d then d:= d + 1; unti1 r = 0; label2.caption:=Editl.text; if d = n then label2.caption:=label2.caption + ' — простое число.' else label2.caption:=label2.caption +' — обычное число.'; bye: end;
TObject);
объявления меток
В литературе по
программированию можно встретить суждения о недопустимости применения инструкции
goto, поскольку она приводит к запутанности программ. Однако с категоричностью
таких утверждений согласиться нельзя. В некоторых случаях применение инструкции
goto вполне оправдано. Приведенный пример, где инструкция goto используется для
аварийного завершения процедуры, относится именно к таким случаям.