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

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

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


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

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

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

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

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

else max:=c

else if b>c then max:=b

else max:=c;

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

 
 


if a>b then

begin

if a>c then a:=0

end

else a:=1;

 
 


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

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

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


-

       
 
 
   


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

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

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

Балл (b) Оценка
bÎ[0; 4]  
bÎ[4.25; 7]  
bÎ[7.25; 9.25]  
bÎ[9.5; 10]  

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.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: