Условный оператор выбирает одну из двух альтернатив. Если альтернатив более двух, удобно использовать оператор варианта (оператор Case).
Синтаксис оператора Case:
Выражение, входящее в состав оператора варианта, называют селектором. Оператор варианта состоит из селектора и списка операторов, с каждым из которых сопоставляется одна или несколько констант, относящихся к типу селектора. Тип селектора должен быть ординальным.
Оператор варианта выбирает для выполнения оператор, сопоставленный с текущим значением селектора. Если такая константа не обнаружена, выполняется ветвь Else, при отсутствии которой оператор варианта эквивалентен пустому оператору.
В списке констант допускается использование диапазонов.
Пример 1.
Vark : 1..10;
Begin
..........
Case k of
1 : y:=x+1;
2 : y:=sin(x);
3..5 : y:=sqrt(x);
6 : y:=exp(x);
7 : y:=sqr(x);
end;
Следует особо отметить, что в операторе варианта перед двоеточием стоит не метка, а константа ординального типа.
Пример 2.
Var ch : char;
Begin
Casech of
'a' : Writeln('Первая ветвь');
'b','c','d' : Writeln('Вторая ветвь');
'p'..'t' : Writeln('Третья ветвь')
Else
Writeln('Альтернативная ветвь');
end;
Примечание. В соответствии с синтаксической диаграммой перед словом else в операторе Case,в отличие от условного оператора, может стоять точка с запятой. Следовательно, в предыдущем примере оператор Caseможно записать в виде
Casech of
'a' : Writeln('Первая ветвь');
'b','c','d' : Writeln('Вторая ветвь');
'p'..'t' : Writeln('Третья ветвь');
Else
Writeln('Альтернативная ветвь');
end;