Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие Алгоритмизация и программирование.doc
Скачиваний:
57
Добавлен:
11.03.2015
Размер:
796.67 Кб
Скачать

15. Пустой оператор

П

read(x, y); ;a:=x+y;

устому оператору синтаксически не соответствуют никакие символы. Например,

Между оператором ввода и оператором присваивания находится пустой оператор.

Синтаксис не требует разделять точкой с запятой оператор и ключевое слово еnd; если она есть, это значит, что перед еnd стоит пустой оператор.

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

Cтруктурированныеоператорыоператоры, в состав которых входят другие операторы.

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

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

Ключевые слова beginиendназываютсяоператорными скобками.

16.2. Выбирающий оператор

В Паскале два вида выбирающего оператора: условный оператор и оператор переключатель.

1. Условный операториспользуется при кодировании развилок, то есть для организации бинарного ветвления.

При отсутствии ветви еlse условный оператор будем называть неполным. После ключевых словthen и еlse синтаксис требует наличия только одного оператора. Если же по какой-либо ветви нужно выполнить несколько операторов, то следует использовать составной оператор. Перед еlse точка с запятой недопустима, так как в этом случае междуthenиelseбудут два оператора, один из которых пустой.

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

Примеры вложенных условных операторов(каждоеelse рекомендуется располагать под соответствующим then):

a) Оператор присваивает переменнойmaxmaximum{a,b,c}:

if a>b then if a>c then max:=a

else max:=c

else if b>c then max:=b

elsemax:=c;

б) Оператор, эквивалентный приведенной слева развилке, имеет вид

if a>b then

begin

if a>c then a:=0

end

elsea:=1;

В приведенном примере вложенный условный оператор неполный, поэтому он заключен в операторные скобки. При отсутствии операторных скобок неполным будет внешний оператор.

2. Оператор переключатель предназначен для организации множественного ветвления.

Синтаксическая диаграмма переключателя:

of

;

:

else

Выражение после ключевого слова caseназываетсяселектором. Селектор должен иметь упорядоченный тип, кроме типаlongint. Константы называются метками случаев. они должны относиться к тому же типу, что и переключатель.

Работа оператора сaseзаключается в следующем. Вычисляется значение селектора. Если это значение совпадает с одной из меток случаев, то выполняется оператор, записанный после нее. Если значение селектора не совпало ни с одной из меток случаев, то выполняется оператор, следующий заеlse. Если ветвь еlseотсутствует, то управление передается оператору, следующему за переключателем. Диапазоны и метки случаев не должны пересекаться.

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

Балл (b)

Оценка

b[0; 4]

2

b[4.25; 7]

3

b[7.25; 9.25]

4

b[9.5; 10]

5

Program ball_to_ mark;

Var b: real;

m: 2..5;

begin write(‘Введите количество баллов ‘);

read(b);

case round(b*4) of {селектор должен иметь упорядоченный тип}

0..16: m:=2; {границы диапазонов из таблицы умножены на 4}

17..28: m:=3;

29..37: m:=4

else m:=5

end;

writeln(b, ‘ балловоценка ‘,m)

end.