Оператор выбора
Оператор выбора выполняет одно действие из нескольких в зависимости от значения некоторого выражения, называемого переключателем. Он имеет следующий вид:
case
переключатель
of
список выбора 1
:
оператор1
;
...
список выбора N
:
операторN
;
elseсписок операторов
end;
Переключатель представляет собой выражение порядкового типа
или строкового типа, а списки выбора содержат константы совместимого
по присваиванию типа. Как и
в операторе if
, ветка else
может
отсутствовать.
Оператор case
работает следующим образом. Если в одном из
списков выбора найдено текущее значение переключателя, то выполняется оператор,
соответствующий данному списку. Если же значение переключателя не найдено ни в
одном списке, то выполняется список операторов по ветке else
или,
если ветка else
отсутствует, оператор case
не выполняет никаких действий.
Список выбора состоит либо из одной константы, либо для перечислимого типа из диапазона значений
вида a..b
(константа a
должна быть меньше константы
b
); можно также перечислить несколько констант или диапазонов через
запятую. Например:
case Country of
'Россия': Capital := 'Москва';
'Франция': Capital := 'Париж';
'Италия': Capital := 'Рим';
else Capital := 'Страна отсутствует в базе данных';
end;
case DayOfWeek of
1..5: writeln('Будний день');
6,7: writeln('Выходной день');
end;
Списки выбора не должны пересекаться. Например, следующий фрагмент
case i of
2,5: write(1);
4..6: write(2);
end;
приведет к ошибке компиляции.