Вложенные условные операторы

Когда после ключевых слов then и else вновь используются условные операторы, они называются вложенными. Число вложений может быть произвольно, при этом действует правило: else всегда относится к ближайшему then. Часто вложением полных условных операторов можно заменить использование составного.

Пр. Определить, в какой координатной четверти находится точка с координатами (x,y), не лежащая на осях координат.

Вариант 1 – без использования вложений

if (x>0) and (y>0) then p:=1

else if (x<0) and (y>0) then p:=2

else if (x<0) and (y<0) then p:=3

else p:=4;

Вариант 2 – с вложениями

if x>0 then begin

if y>0 then p:=1

else p:=4;

end

else begin

if y>0 then p:=2

else p:=3;

end;

В первом фрагменте программе проверяется от 2 до 6 условий, во втором – всегда только 2 условия. Здесь использование вложений дало существенный выигрыш в производительности.

Пр 2. Вычислить значение y, равное знаку числа x.

Способ 1:

if x>1 then y:=1

else if x=0 then y:=0

else y:=-1;

Способ 2:

if x>1 then y:=1

else begin

if x=0 then y:=0

else y:=-1;

end;

Здесь в обеих вариантах проверяется не более 2 условий, способы примерно равноценны.

Оператор выбора. Для случаев, когда требуется выбор одного значения из конечного набора вариантов, оператор if удобнее заменять оператором case:

case выражение of

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

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

...

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

else оператор0;

end;

Оператор выполняется так же, как составной условный оператор.

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

Мин.значение.. Макс.значение

В диапазон входят все значения от минимального до максимального включительно.

Пр. По номеру месяца m определить число дней d в нем.

case m of

1,3,5,7..8,10,12: d:=31;

2: d:=28;

4,6,9,11: d:=30;

end;

Пр. По символу c определить и вывести, к какому классу символов он относится.

case c of

'A'..'Z','a'..'z': writeln ('Лат.буква');

'А'..'Я','а'..'п','р'..'я': writeln ('Рус.буква');

'0'..'9': writeln ('Цифра');

else writeln ('Другой символ');

end;

Здесь отдельные диапазоны для русских букв от "а" до "п" и от "р" до "я" связаны с тем, что между "п" и "р" в кодовой таблице DOS находится ряд не-буквенных символов (см. Приложение 1).

Если по ветви оператора case нужно выполнить несколько операторов, действует то же правило, что для оператора if (ветвь заключается в операторные скобки begin…end;).


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



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