Паскаль. Основы программирования

Досрочное прерывание цикла Метка Оператор безусловного перехода 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) Как будет выполняться программа, если этот оператор исключить из нее?



Содержание раздела