Инструкция goto
Инструкции if и case используются для перехода к последовательности инструкций программы в зависимости от некоторого условия. Поэтому их иногда называют инструкциями условного перехода. Помимо этих инструкций управления ходом выполнения программы существует еще одна – инструкция безусловного перехода goto.
В общем виде инструкция goto записывается следующим образом:
goto Метка
Где метка – это идентификатор, находящийся перед инструкцией, которая должна быть выполнена после инструкции goto.
Метка, используемая в инструкции goto, должна быть объявлена в разделе меток, который начинается словом label и располагается перед разделом объявления переменных.
В программе метка ставится перед инструкцией, к которой должен быть выполнен переход в результате выполнения инструкции goto. Сразу после метки ставится двоеточие.
В листинге 2.8 приведен вариант процедуры проверки числа, в которой инструкция goto используется для завершения процедуры в том случае, если пользователь введет неверные данные.
Листинг 2.8. Простое число (использование инструкции goto).
procedure TForm1.Button1Click(Sender: TObject); 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 l abel2.caption: = label2.caption + ' – простое число.' else label2.caption: = label2.caption +' – обычное число.'; bye: end;
В литературе по программированию можно встретить суждения о недопустимости применения инструкции goto, поскольку она приводит к запутанности программ. Однако с категоричностью таких утверждений согласиться нельзя. В некоторых случаях применение инструкции goto вполне оправдано. Приведенный пример, где инструкция goto используется для аварийного завершения процедуры, относится именно к таким случаям.