Оператор выбора
Оператор выбора case … of является обобщением оператора if. Он позволяет выбрать одно из нескольких возможных продолжений программы. Оператор выбора case … of является идеальным средством для обработки ситуаций с несколькими исходами, когда условие может принимать более двух значений.
Параметром, по которому осуществляется выбор, служит ключ выбора – выражение любого порядкового типа. Структура оператора выбора такова:
CASE <Ключ выбора> OF <Список выбора>:<Оператор> [ELSE <оператор>] END;
Здесь CASE, OF, ELSE, END – зарезервированные слова (случай, из, иначе, конец);
<Ключ выбора> – ключ выбора;
<Список выбора> – одна или несколько конструкций вида:
<Константа выбора> – <оператор>;
<Константа выбора> – константа того же типа, что и выражение <ключ выбора>;
<оператор> – произвольные операторы Турбо Паскаль.
…
Рис. 5. Блок-схема алгоритма выполнения оператора Case of.
Оператор выбора работает следующим образом. Сначала вычисляется выражение <ключ выбора>. Затем в последовательности параметров <список выбора> отыскивается такой, которому соответствует значение «ключа выбора» и выполняется оператор соответствующий данной переменной. После чего оператор выбора завершает свою работу. Если в списке выбора не будет найдена константа, соответствующая значению «ключа выбора», управление передается оператору, стоящему за словом ELSE. Часть ELSE – <оператор> может опускаться. Тогда при отсутствии в списке выбора нужной константы ничего не произойдет, и оператор выбора просто завершит свою работу.
Пример:
Программа определения размера числа.
Program DemoCase;
Var
x: integer;
Begin
Writeln('Введите число');
Readln(x);
Case x of
-1000..-100: writeln('Число в диапазоне от –1000 до –100');
-100..-10: writeln('Число в диапазоне от –100 до –10');
-10..0: writeln('Число в диапазоне от –10 до 0');
0..10: writeln('Число в диапазоне от 0 до 10');
10..100: writeln('Число в диапазоне от 10 до 100');
100..1000: writeln('Число в диапазоне от 100 до 1000');
end;
End.
Оператор выбора нельзя рассматривать как объединение последовательности условных операторов. Программа демонстрирует особенности его работы. В качестве переменной входящей в выражение «ключ выбора» может использоваться лишь переменная любого порядкового типа. Например, тип real использоваться не может.
Оператор выбирает лишь первый в списке параметров, соответствующий «ключу выбора», все остальные оставляет без внимания. Например, при вводе числа 0, программа сообщает, что число принадлежит диапазону –10...0, при вводе числа 10, что диапазону 0…10
Более подробно практическое применение оператора выбора будет рассмотрено ниже при рассмотрении обработки символьных типов данных в модуле CRT.