Досрочное прерывание цикла Метка Оператор безусловного перехода goto
Итак, если в числе появляется цифра 2, надо прервать цикл, т. е. нарушить естественный ход выполнения программы, выдать соответствующее сообщение и закончить программу. Такой безоговорочный переход может выполнить оператор goto, который и называется оператором безусловного перехода.
Оператор перехода указывает, что дальше программа должна выполняться, начиная с оператора, помеченного меткой, которая записана в этом операторе перехода.
Оператор перехода имеет вид: goto <метка>. Здесь goto - зарезервированное слово (перейти на ... [метку]).
Метка
в Турбо Паскале - это произвольный идентификатор, позволяющий именовать (помечать) некоторый оператор программы и таким образом ссылаться на него. Допускается в качестве меток (в том числе) использовать целые числа без знака (это сделано с целью совместимости Турбо Паскаля со стандартным языком Паскаль).
Например:
goto 2341, goto 23, goto
1, goto bl1, goto mnk3, goto n56.
Любая метка должна быть описана в разделе описания меток, который обычно располагается в программе до начала раздела операторов:
label
<список меток>.
Например: label
2341; label 1, 2; label bl1, 18, mnk.
В программе метка записывается перед оператором, на который осуществляется переход. Метка отделяется от оператора двоеточием. Между меткой и оператором можно включать один или несколько пробелов, например:
1: writeln('Число не содержит цифру 2');
Оператор можно помечать несколькими метками, которые в этом случае отделяются друг от друга двоеточием.
1: 25: a := b div
10;
Теперь составим программу решения предыдущей задачи с использованием меток и оператора перехода.
Ниже приведена эта программа.
Program
Problem4a; { Входит ли цифра 2 в запись числа }
uses WinCrt;
label 1, 2;
var
n, p : integer;
begin
write('Введите целое число '); readln(n);
while n <> 0 do
begin
p := n mod 10;
if p = 2 then goto 1 else n := n div
10
end;
writeln('Цифра 2 не входит в запись этого числа');
goto
2;
1: writeln('Цифра 2 входит в запись этого числа');
2: end.
Внимательно разберитесь в ее работе. Постарайтесь ответить на следующие вопросы.
1) Зачем в программе две метки? Для чего служит каждая из них?
2) Почему в программу введен второй оператор перехода goto 2?
3) Как будет выполняться программа, если этот оператор исключить из нее?