Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5 Методическое пособие изучения Паскаль.doc
Скачиваний:
10
Добавлен:
01.03.2025
Размер:
743 Кб
Скачать
☆
    1. Оператор перехода.

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

Go to метка

Метка представляет собой любое целое число без знака в диапазо­не 1-9999 или идентификатор A, AB или какие – либо другие. Индентификаторы выбранные для меток, не могут являться именами переменных.

Число или идентификатор записывается перед помечаемым оператором и отделяется от него двоеточием:

GOTO 32

10:A:=2;

32:Y:=X/Z;

ПРИМЕЧАНИЕ:

Индентификаторы выбранные для меток, не могут использоваться для выбора имен переменных.

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

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

Метка должна быть объявлена в разделе описания LABEL (см. па­раграф 1.3). Объявление метки имеет вид

Lавеl метка;

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

Label метка 1, метка 2,…, метка n;

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

LABEL 10, 32,А,АВ;

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

IF А>В THEN GОТ0 1;

А:=А - В;

GOTO 2 ;

1:А:=А+B ;

2:Y:= A;

можно заменить следующей конструкцией языка ПАСКАЛЬ:

IFA>В THEN A:=A+В

ELSE А:=А-В;

Y:=A;

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

IF Y<=0 THEN GOTO 100

ELSE A:= X*LN(Y);

If У<0 THEN GOTO 100

ELSE 8:=X + SQRT(Y);

S:=Т-COS(PT) ;

IF S=0 THEN GOTO 100

ELSE R:=257*W/S;

100:WRITE(‘ВЫПОЛГНЕНИЕ ПРОГРАММЫ ПРЕКРАЩАЕТСЯ’);

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