Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник_Часть_1.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
974.85 Кб
Скачать

5.4. Составной оператор

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

Составной оператор начинается с зарезервированного слова BEGIN и заканчивается словом END, между которыми размещаются требуемые операторы, отделенные друг от друга символом «точка с запятой». После BEGIN ставятся пробелы, а после END – символ «точка с запятой». Операторы, входящие в составной оператор, выполняются последовательно (если среди них нет операторов перехода).

П р и м е р составного оператора.

BEGIN

I:= 8;

C:=16;

WRITELN(I*C:10)

END;

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

Условный оператор позволяет выполнить некоторый оператор только в том случае, если истинно некоторое условие (логическое выражение).

Синтаксическая диаграмма условного оператора изображена на рис. 5.1.

Рис.5.1. Синтаксическая диаграмма условного оператора

Здесь и далее на синтаксических диаграммах в овальных фигурах изображены неизменяемые части формата, в прямоугольных – определяемые пользователем. Линиями и стрелками показан возможный порядок действий в операторе.

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

Выражение между словами IF и THEN должно иметь тип BOOLEAN.

П р и м е р ы

IF A>B

THEN C:=D

ELSE C:=8;

IF R

THEN C:=10; {R имеет тип BOOLEAN}

IF (A>B) AND (D<>K)

THEN BEGIN

A:=B;

D:=K

END

ELSE A: =B-C+K;

П р и м е р программы расчета корней квадратного уравнения ax2+bx+c=0.

PROGRAM PRIM6;

VAR

A,B,C,D,X1,X2:REAL;

BEGIN

READLN(A,B,C);

WRITELN(’A=’, A, ’ B=’, B, ’ C=’, C);

IF SQR(B)-4*A*C<0

THEN WRITELN(’Действительных корней нет’)

ELSE BEGIN

D:=SQRT(SQR(B)-4*A*C);

X1:=(-B-D)/(2*A); X2:=(-B+D)/(2*A);

WRITELN(’корни уравнения X1=’,X1,’X2=’,X2)

END

END.

5.6. Оператор варианта case

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

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

CASE <выражение> OF

X1: <оператор 1>;

X2: <оператор 2>;

XN: <оператор N>

ELSE <оператор>

END;

Метки операторов X1, X2, … , XN представляют собой либо отдельную константу, либо список констант, перечисленных через запятые, либо диапазон. Тип выражения и констант должен быть одним и тем же. Используемые в операторе CASE метки X1, X2, … , XN не описываются в разделе описания меток и отличаются по смыслу от меток, там описанных.

Оператор выполняется следующим образом: вычисляется значение выражения, далее выполняется только тот оператор, константа выбора которого равна значению выражения. Если среди констант нет равной значению выражения, то выполняется оператор, следующий за словом ELSE (при отсутствии слова ELSE выполняется оператор, следующий за словом END). Выражение может иметь любой дискретный тип.

П р и м е р программы вывода дня недели в зависимости от значения

введенного числа

PROGRAM PRIM7;

VAR

DEN:INTEGER;

BEGIN

READLN (DEN);

CASE DEN OF

1: WRITELN (’Понедельник’);

2: WRITELN (’Вторник’);

3: WRITELN (’Среда’);

4: WRITELN (’Четверг’);

5: WRITELN (’Пятница’);

6: WRITELN (’Суббота’);

7: WRITELN (’Воскресенье’);

ELSE WRITELN (’Вы неверно ввели число’)

END

END.