Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ГОСТу.doc
Скачиваний:
19
Добавлен:
14.11.2019
Размер:
10.65 Mб
Скачать

5.4. Оператор безусловного перехода Goto

Оператор безусловного перехода Goto используют для изменения последовательности (порядка) выполнения операторов и перехода к выполнению программы, начиная с оператора, имеющего метку. Эта же метка должна быть указана и в операторе Goto. Пример:

Label 1, 2;

Goto 1

.

.

.

1: WriteLn ('Abnormal program termination');

2: WriteLn ('Normal program termination');

Метки, используемые в Turbo Pascal, могут быть двух типов:

  • целым числом (в пределах от 0 до 9999);

  • обычным идентификатором.

Все используемые метки должны быть описаны в разделе объявления меток, начинающемся зарезервированным словом Label, пример: Label 1,2,A,B,X2;

Для того, чтобы пометить оператор, перед ним пишут метку, двоеточием отделяя её от оператора. Таким образом, можно пометить только один оператор. Следует иметь ввиду, что использовать оператор Goto нужно очень осторожно. Частое его применение приводит к затруднению понимания логики работы программы. При написании блок-схемы этот оператор отображается стрелкой перехода в нужную часть алгоритма.

5.5. Примеры составления программы

Пример 1. Определите, попала ли заданная точка с координатами (X,Y) в заштрихованную область, включая ее границы.

Program Example_5_1;

Uses Crt; {подключаем модуль}

Var

X,Y:Real; {описываем переменные}

Begin {начало программы}

ClrScr; {Производим очистку экрана}

WriteLn ('Введите координаты Х,У точки'); {выводим сообщение на экран}

ReadLn(x,y); {вводим данные}

If ((Y<=4*Sqr(X)+2) And (Y>=0)) Or (Y<=-1) then {если условия истинные}

WriteLn ('Точка попала в заданную область') {то вывод сообщения }

Else {иначе}

WriteLn ('Точка не попала в заданную область');{вывод другого сообщения}

End. {конец программы}

Пример 2. Значения переменных X, Y, Z вводятся с клавиатуры. Если XYZ, то все значения возвести в квадрат, при X>Y>Z каждое из них разделить на 2, в противном случае изменить знаки чисел. Изменённые значения переменных вывести на экран.

Обратите внимание, что при решении данной задачи в каждой ветви условного оператора используется составной оператор.

Program Example_5_2;

Uses Crt;

Var

X,Y,Z:Real; {описываем переменные}

Begin {начало программы}

ClrScr; {Производим очистку экрана}

Write ('Введите значение X,Y,Z'); {вывод сообщения на экран}

ReadLn (X,Y,Z); {ввод данных с клавиатуры}

If (X<=Y) And (Y<=Z) Then {проверяем условие, если условие истинно,}

Begin {то открываем составной оператор}

X:=Sqr(X); {вычисляем значение Х}

Y:=Sqr(Y); {вычисляем значение Y}

Z:=Sqr(Z); {вычисляем значение Z}

End; {закрываем составной оператор}

If (X>Y) And (Y>Z) Then {проверяем условие, если условие истинно,}

Begin {то открываем составной оператор}

X:=X/2; {вычисляем значение Х}

Y:=Y/2; {вычисляем значение Y}

Z:=Z/2; {вычисляем значение Z}

End {закрываем составной оператор}

Else {иначе выполняем ветку нет}

Begin {то открываем составной оператор}

X:= -X; {вычисляем значение Х}

Y:= -Y; {вычисляем значение Y}

Z:= -Z; {вычисляем значение Z}

End; {закрываем составной оператор}

WriteLn('X=',X,' Y=',Y,' Z=',Z); {вывод значения переменных}

End. {Конец программы}