Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Algoritmy.doc
Скачиваний:
3
Добавлен:
27.04.2019
Размер:
550.91 Кб
Скачать

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

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

метка: оператор

Метка представляет собой идентификатор и должна быть описана в разделе описания меток в виде:

label имя [, имя ]

Сам оператор goto имеет следующий синтаксис:

goto метка

Переход внутрь другого оператора запрещен:

С помощью оператора goto можно моделировать все другие управляющие операторы языка.

Пример 1.

Цикл ... begin   ...   break end;

эквивалентно

Цикл ... begin   ...   goto lbl;   ... end; lbl:

Пример 2.

Цикл ... begin   ...   continue   ... end;

эквивалентно

Цикл ... begin   ...   goto lbl;   ... lbl: end;

Пример 3.

repeat   операторы until B;

эквивалентно

lbl:   операторы if not B then goto lbl;

Пример 4.

while B do begin   операторы end;

эквивалентно

lbl1: if not B then goto lbl2;   операторы goto lbl1; lbl2:

Пример 5.

if A then         begin                   операторы1 end else begin   операторы2 end;

эквивалентно

if not A then goto lbl1; операторы1 goto lbl2; lbl1: операторы2 lbl2:

Пример 6.

case i of 1: begin   операторы1 end; 2: begin   операторы2 end; 3: begin   операторы3 end; else   операторы4 end;

эквивалентно

if i=1 then goto lbl1; if i=2 then goto lbl2; if i=3 then goto lbl3; goto lbl4; lbl1: операторы1 goto lblend; lbl2: операторы2 goto lblend; lbl3: операторы3 goto lblend; lbl4: операторы4 lblend:

Использовать оператор goto в программах небезопасно и нежелательно. Во всех случаях программу с использованием оператора goto можно заменить на эквивалентную программу без использования goto. В частности, процедуры break и continue введены в язык, чтобы заменить наиболее часто используемые случаи оператора goto перехода на оператор, следующий за циклом, и перехода на конец тела цикла.

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

Подпрограммы. Процедуры и функции

Подпрограммой называется последовательность операторов, оформленная специальным образом, имеющая имя и список параметров. Подпрограмма может вызываться многократно с различными параметрами.

Цели введения подпрограмм:

  1. Разбиение большой программы на части, каждая из которых имеет имя.

  2. Вызов повторяющейся последовательности действий многократно с различными параметрами.

Процедуры

Пример. Составить процедуру вычисления среднего арифметического и среднего геометрического А и В. С ее помощью найти среднее арифметическое и среднее геометрическое пар A,B; A,C; B,C.

procedure Mean(A,B: real; var MA,MG: real); // A,B-входные параметры // MA,MG-выходные параметры begin   assert(A>0); // предусловия процедуры   assert(B>0);   MA:=(A+B)/2;   MG:=sqrt(A*B); end;

var A,B,C: real;     MA1,MA2,MA3,MG1,MG2,MG3: real;

begin   readln(A,B,C);   Mean(A,B,MA1,MG1);   Mean(A,C,MA2,MG2);   Mean(B,C,MA3,MG3);   writeln(MA1,MG1);   writeln(MA2,MG2);   writeln(MA3,MG3); end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]