СЛОЖНЫЕ (СТРУКТУРНЫЕ) ОПЕРАТОРЫ

Структурные операторы представляют собой конструкции, построенные из других операторов по строго определенным правилам. Сложные операторы делятся на три группы: составные, условные и повтора.

Составной оператор представляет собой группу из произвольного числа операторов, отделенных друг от друга точкой с запятой, и ограниченную операторными скобками BEGIN и END.

Формат записи:

BEGIN

<Оператор 1>;

<Оператор 2>;

. . . . . . . . . . . . . .

<Оператор N>;

END;

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

Условные операторы

В Turbo Pascal существуют два условных оператора : IF и CASE.

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

IF <условие> THEN <оператор 1> {Полный формат}

ELSE <оператор 2>;

IF < условие > THEN < оператор >; {Сокращенный формат}

Условие - логическое выражение булевского типа, т.е. принимает лишь два значения true или false. В случае записи условного оператора в полном формате, если значение выражения истинно, выполняется<оператор 1>, если ложно, то <оператор 2>. В случае сокращенной записи условного оператора, если результат логического выражения True, выполняется <оператор>, если False - оператор, следующий за оператором IF. Операторы if могут быть вложенными или сложными (структурными).

Пример:

if a*b=0 then beta:=a+b else beta:=(a*c+b*d)/(a*b);

if m=0 then sigma:=1 else if m<0 then sigma:=ln(abs(m))/ln(2)

else sigma:=exp(m-z);

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

Тип констант должен быть совместимым с типом селектора. Для индекса выбора запрещены типы real и string.

Формат:

CASE <индекс выбор -селектор> OF

<метки 1>:<Оператор 1>;

< метки 2>:<Оператор 2>;

. . . . . . . . . . . . . . . . . . . . . . .

< метки N>:<Оператор N>;

ELSE <Оператор m>;

END;

Пример: case alfa of 0: y:=sqr(x);

1: y:=exp(n*ln(x));

2: y:=cos(x);

7: y:=sin(x)/cos(x);

Операторы повтора

В практике часто возникает необходимость в организации циклического вычислительного процесса. Для организации компактной записи программы в языке Turbo Pascal существуют специальные операторы повтора FOR, REPEAT, WHILE , позволяющие многократно выполнять группу операторов тела цикла при различных значениях некоторой переменной, называемой параметром цикла.

Цикл с параметром

Если число повторений цикла известно к началу выполнения, например равно n, и величина шага равна единице или минус единицы, то можно использовать оператор цикла с параметром FOR.

Оператор повтора FOR состоит из заголовка и тела цикла. Он может быть представлен в двух форматах:

для шага параметра цикла равного единице ( 1)

FOR <параметр цикла>:=<нач.знач.> TO <кон.знач.> DO <оператор>;

для шага параметра цикла равного минус единице ( -1)

FOR <параметр цикла>:=<нач.знач.> DOWNTO <кон.знач.> DO <оператор>;

FOR . . . DO - заголовок цикла; <нач.знач.> <кон.знач.> - выражения, определяющие соответственно начальное и конечное значение параметра цикла; <оператор> - тело цикла, представляющее собой совокупность простых, составных и структурных операторов, но может быть представлено и одним оператором.

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

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

Пример: for i:=1 to n do begin s:=0;

for k:=1 to n do s:=s+b[ i , k ];

a[ i ]:=s;

writeln(‘a[ ‘ , i,‘ ] = ‘,a[ i ]:12:6);

End;

Цикл с предусловием

Оператор повтора REPEAT состоит из заголовка, тела и условия окончания UNTIL.

Формат:

REPEAT <Оператор 1>;

<Оператор 2>;

. . . . . . . . . . . . . .

<Оператор N>;

UNTIL <условие - логическое выражение>;

Операторы, заключенные между словами REPEAT . . . UNTIL, являются телом цикла. В начале выполняется тело цикла, затем проверяется условие выхода из цикла. Если результат булевского выражения равен False, то цикл активизируется еще раз, если результат True - происходит выход из цикла. По крайней мере один из операторов тела цикла должен влиять на значение условия, иначе цикл будет выполняться бесконечно.

Цикл с постусловием

Оператор повтора WHILE аналогичен оператору REPEAT, но проверка условия выполнения цикла производится в начале оператора.

Формат:

WHILE <условие> DO <тело цикла>;

<условие> - булевское выражение, <тело цикла>- простой или составной оператор. Перед каждым выполнением тела цикла вычисляется значение выражения условия. Если результат равен True , то тело цикла выполняется и снова вычисляется выражение условия, если результат равен False, происходит выход из цикла и переход к первому после WHILE оператору.

Оператор WITH

Для обращения к полям записи используется оператор WITH (с)который имеет формат:

WITH <переменная типа запись> DO <оператор>;

Указав переменную типа запись можно работать как с обычной переменной Turbo Pascal.

Пример: With RV do begin name:=‘ Сидоров В.С.’;

data:=‘ 15.11.78’;

End;