С помощью этого оператора можно выбрать вариант из любого количества вариантов.
Структура оператора
case s of
C1: instruction 1;
C2: instruction 2;
………………….
CN: instruction N;
else instruction
end.
s- выражение порядкового типа, значение которого вычисляется;
C1, C2, CN- константы, с которыми сравнивается значение s;
instruction 1,instruction 2,instruction N - операторы, из которых выполняется тот, с константой которого совпадает значение выражения s;
instruction - оператор, который выполняется, если значение s не совпадает ни с одной из констант C1, C2, ..., CN.
Ветвь оператора else является необязательной. Если она отсутствует и значение выражения s не совпадает ни с одной из перечисленных констант, то весь оператор рассматривается как пустой. В отличие от оператора if перед else ; ставить можно. Если для нескольких констант выполняется один оператор, то они записываются через запятую. Возможно указать диапазон.
Структура оператора
case <ключ выбора> of<список выбора>
[else <оператор>] end;
Пример
case i of
0, 2, 4, 6, 8:writeln(‘четная цифра’);
1, 3, 5, 7, 9: writeln (‘нечетная цифра’);
10..100: writeln(‘число от 10 до 100’);
else
Writeln(‘отрицательное число или больше 100’);
end.
Работа оператора CASE
Сначала вычисляется значение выражения s (ключ выбора), затем в последовательности (список выбора) отыскивается тот, которому предшествуют константа, равная вычисленному значению. Найденный оператор выполняется, после чего оператор выбора завершает свою работу. Если в списке выбора не будет найдена константа, соответствующая вычисляемому значению ключа выбора, управление передается операторам, стоящим за словом ELSE. Если часть ELSE отсутствует, то оператор просто завершит свою работу.