Структурные операторы.

Простые операторы.

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

Оператор присваивания (:=) предписывает выполнить выражение в его правой части, и присвоить результат переменной, идентификатор которой расположен в левой части:

идентификатор:=выражение;

Переменная и выражение должны иметь один и тот же тип.

Оператор безусловного перехода (GOTO) означает «перейти к» и имеет формат:

GOTO_метка;

Метка, на которую передается управление, должна быть описана в разделе меток, областью действия метки является тот блок, в котором она описана.

Оператор вызова процедуры (подпрограммы) служит для активации предварительно определенной пользователем или стандартной процедуры:

имя процедуры[(список параметров)];

Параметры в списке перечисляются через запятую. Подробнее процедуры рассмотрены в главе 5.

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

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

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

BEGIN

[Оператор1;

ОператорN]

END;

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

3.2.2. Условные операторы обеспечивают выполнение или невыполнение некоторого оператора, группы операторов или блока в зависимости от заданных условий.

Оператор условия может принимать одну из следующих форм:

1. IF_условие_THEN_оператор1_ELSE_оператор2;

2. IF_условие_THEN_оператор;

Условие – выражение булевского типа, при его записи могут использоваться все возможные операции отношения. Если значение выражения истинно, то выполняется оператор1, если ложно – оператор2. Во втором варианте, если выражение ложно, то выполняется оператор, следующий в программе сразу за оператором IF. Один оператор IF может входить в состав другого оператора IF, т.е. этот оператор может быть вложенным. При вложенности операторов каждое ELSE соответствует тому THEN, которое ему непосредственно предшествует.

Пример 7.1) Программа определения принадлежности точки с координатами X,Y окружности радиусом R с центром в начале координат.

PROGRAM KRUG;

USES CRT;

VAR X,Y,R,L: REAL;

BEGIN

CLRSRT;

WRITELN(‘введите значения X,Y и R’);

READ(X,Y,R);

L:=SQRT(SQR(X)+SQR(Y));

IF L<R THEN WRITELN (‘точка находится внутри круга’);

ELSE WRITELN (‘точка находится вне круга’);

END.

2) поиск в массиве элементов, равных заданному значению, определение их количества, формирование из индексов этих элементов массива и его печать.

READ(J); {задание значения}

S:=0;

FOR I:=1 TO N DO IF A[I]=J THEN BEGIN

S:=S+1;C[S]:=I

END;

{печать результатов поиска}

IF S=0 THEN WRITELN('в массиве элем. равных заданному нет')

ELSE BEGIN WRITELN('в массиве ',s:3,' элем. равных’,J);

WRITELN(‘ номера элементов, равных заданному: ‘,)

{печать массива из номеров элементов}

FOR K:=1 TO S DO WRITE(‘ ‘,C[K]);

END;

Оператор выбора позволяет сделать выбор из произвольного числа имеющихся вариантов и имеет формат:

CASE_выражение-селектор_OF

список1 : оператор1;

список2 : оператор2;

списокN : операторN;

ELSE [оператор]

END;

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

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

READ(I);

CASE I OF

1..10: WRITELN(‘число I=’,I:3,’лежит в диапазоне от 1 до 10’);

11..20: WRITELN(‘число I=’,I:3,’лежит в диапазоне от 11 до 20’);

21..30: WRITELN(‘число I=’,I:3,’лежит в диапазоне от 21 до 30’);

ELSE WRITELN(‘число I=’,I:3,’находится вне диапазона 1 - 30’);

END;

3.2.3. Операторы повтора используются при организации циклов.

Оператор повтора FOR состоит из заголовка и тела цикла и может иметь два формата:

1. FOR_параметр-цикла:=S1_TO_S2_DO_оператор;

2. FOR_параметр-цикла:=S1_DOWNTO_S2_DO_оператор;

S1 и S2 – выражения, определяющие начальное и конечное значение параметра цикла. FOR…DO – заголовок цикла, оператор – тело цикла. Тело цикла может быть простым или составным оператором. Оператор FOR обеспечивает выполнение тела цикла с увеличением параметра цикла (TO) или с уменьшением параметра цикла (DOWNTO) на единицу.

В операторе повтора FOR Паскаль не допускает изменения параметра цикла на величину, отличную от единицы. В составе оператора запрещены операторы, меняющие значение параметра цикла.

Пример 9.1)Вычисление переменных А и В, значения которых зависят от переменной цикла, и их печать.

FOR I:=1 TO 4

BEGIN A:=2*I; B:=4+I

WRITELN(A:3,B:4)

END;

2) Перевод угла в градусах в радианы.

WRITELN(‘угол в градусах угол в радианах’);

FOR I:=0 TO 18 DO BEGIN

GRAD:=I*20;

RAD:=GRAD*PI/180;

WRITELN(‘ ‘,GRAD:12:2,’ ‘,RAD:12:4);

END;

Оператор повтора repeat имеет формат:

REPEAT

тело цикла;

UNTIL_условие;

Условие – выражение булевского типа, при его написании допустимы булевские операции и операции отношения. Тело цикла – простой или составной оператор. Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Если условие не выполняется, то операторы тела цикла выполняются еще раз, если выполняется – происходит выход из цикла.

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

Пример 10.Вычисление y=x2 при x=8, 6, 4, 2.

X:=8

REPEAT

Y:=SQR(X);

WRITELN (X:3,Y:4);

X:=X-2

UNTIL X=0;

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

WHILE_условие_DO_тело цикла;

Условие – булевское выражение, тело цикла – простой или составной оператор. Перед каждым выполнением тела цикла вычисляется условие, если условие выполняется, то тело цикла выполняется и снова вычисляется значение условия. Если условие не выполняется, то происходит выход из цикла и переход к первому после WHILE оператору. В этом операторе программист сам должен позаботиться об изменении переменных, определяющих выход из цикла.

Все операторы повтора могут быть вложенными.

Пример 11.1)Увеличение переменной I на 2 до тех пор, пока она меньше 30.

I:=10;

WHILE I<30 DO I:=I+2;

2) Вычисление переменных А и N по заданным формулам до тех пор, пока 2*A не станет меньше или равно 3*N+1.

A:=1; N:=2;

WHILE 2*A<=3*N+1 DO

BEGIN A:=A*2;

N:=N+1;

END;

3) Перевод угла в радианах в градусы.

RAD:=0;

WRITELN(‘угол в радианах угол в градусах’);

WHILE RAD<6,28 DO BEGIN

GRAD:=RAD*180/PI;

WRITELN(‘ ‘,RAD:12:4,’ ‘,GRAD:12:2);

RAD:=RAD+0.1;

END