Вложенные условные операторы
Когда после ключевых слов then или else вновь используются условные операторы, они называются вложенными. Число вложений может быть произвольно, при этом действует правило: else всегда относится к ближайшему then. Часто вложением условных операторов можно заменить использование составного. В качестве примера рассмотрим программу для определения номера координатной четверти p, в которой находится точка с координатами (x,y). Для простоты примем, что точка не лежит на осях координат. Без использования вложений основная часть программы может иметь следующий вид: 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; Однако использование такого количества условий представляется явно избыточным. Перепишем программу, используя тот факт, что по каждое из условий x>0, x<0 оставляет в качестве значения p только по 2 возможных четверти из 4: 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 условия. Здесь использование вложений дало существенный выигрыш в производительности. Рассмотренный в п. 7.6 пример с определением знака числа может быть переписан и с использованием вложения: if a>0 then n:=1 else begin if a<0 then n:=-1 else n:=0; end; Однако, как эти операторы, так и составной условный оператор из п. 7.6 проверяют не более 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;.
Читайте также: Вложенные хранимые процедуры Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|