Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
яимп.docx
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
72.47 Кб
Скачать

Результат выполнения:

ВВЕДИТЕ НОМЕР ДНЯ НЕДЕЛИ   :

5

ПЯТНИЦА-FRIDAY

Оператор перехода

В языке Паскаль принят естественный порядок выполнения программы: все операторы выполняются последовательно один за одним в том порядке, как они записаны. Однако в практике программирования задач возникает необходимость нарушения последовательности выполнения операторов. Например необходимо обойти участок программы, а вернутся к нему позже. Для этого предназначен оператор перехода, который имеет следующую форму записи:

                                   GOTO      метка

Метка представляет собой любое целое число без знака в диапазоне  1-9999. Это число записывается перед помечаемым оператором и отделяется от него двоеточием:

                                   GOTO   32;

                                   10:   A:=2;

                                          .  .  .

                                   32:   Y:=X/Z;

Здесь после оператора   GOTO  32  выполняется оператор с меткой 32.

Следует отметить, что оператор, следующий за оператором перехода, также должен быть помечен.  Иначе все операторы в программе между оператором  GOTO  и оператором с меткой 32 будут лишними, так как доступа к ним нет и они никогда не будут выполнятся .

Оператор перехода является простым оператором, так как  в его состав не входят другие операторы.

Метка  должна быть объявлена в разделе описания   LABEL. Объявление метки имеет вид:

                                   LABEL   метка;

Допускается объявлять список меток:

                LABEL  метка_1, метка_2, …, метка_n;

Для рассмотренного примера объявления меток выглядит следующим образом:

                                   LABEL  10, 32;

В простых программах оператор перехода не вызывает никаких затруднений. В сложных программах скачки при выполнении операторов программы проследить трудно. При этом ясность и понятность программы могут быть нарушены. По этому в  программах  желательно  избегать операторов перехода. В ряде случаев это удается сделать простыми способами. Например отрезок программы, типичный для многих языков программирования,

                            IF  A > B     THEN   GOTO 1 ;

                                 A :=  A - B  ;

                                  GOTO 2 ;

                            1 :  A :=  A+ B ;

                            2 :  Y :=   A ;

Можно заменить такой конструкцией языка Паскаль :

                            IF  A > B      THEN   A := A + B

                                                  ELSE    A := A - B ;

                            Y := A  ;

Однако  в некоторых случаях  оператор безусловного перехода  оказывается весьма  полезным. Например, пусть необходимо прекращать выполнение программы, если встечаются так называемые ситуации прерывания выражения, содержащие функции логарифма LN  или корня квадратного SQRT от отрицательных аргументов, или необходимо выполнить деление на выражение, которое обращается в нуль :

                     IF       Y < = 0     THEN     GOTO   100

                                                      ELSE   A := X * LN (Y);

 

                     IF       Y < 0     THEN    GOTO    100

                                                        ELSE    B :=  X + SQRT(Y);

 

                     S:= T - COS (PT);

                     IF       S = 0      THEN      GOTO   100

                                                  ELSE   R := 257 *  W / S ;

                                        100 : WRITE (‘Выполнение программы прекращается  ‘);

  В этом примере всякий раз, когда встречается недопустимая ситуация, происходит переход к оператору с меткой  100. На экран дисплея выодится сообщение о прерывании программы  и выполнение программы заканчивается.