Оператор выбора
Иногда в процессе выполнения алгоритма может потребоваться выбор не из двух, а из трех и более альтернатив. Например, одно действие нужно сделать, если некоторая величина x равна 1 или 2, другое, если она равна 3,4 или 5, и третье, если она равна 6. Во всех остальных случаях нужно выполнить четвертое действие. Это можно записать с помощью нескольких вложенных условных операторов (обратите внимание на стиль записи):
if (x=1) or (x=2)
then <оператор1>
else
if (x=3) or (x=4)) or (x=5)
then <оператор2>
else
if (x=6)
then <оператор3>
else <оператор4> ;
Для такой хотя и сложной, но стандартной конструкции более удобно использовать следующий стиль записи:
if (x=1) or (x=2) then <оператор1>
else if (x=3) or
(x=4) or (x=5) then <оператор2>
else if (x=6) then <оператор3>
else <оператор4> ;
Но кроме того, в Паскале для описания таких ситуаций существует специальный оператор, называемый оператором выбора. С помощью этого оператора тот же кусок программы можно переписать следующим образом:
case x of
1,2: <оператор1> ;
3,4,5: <оператор2> ;
6: <оператор3> ;
else <оператор4>
end
Вместо списка 3,4,5 можно указать диапазон 3..5. В общем случае формат оператора выбора следующий:
case <выражение> of
<список значений выражения (через запятую)> : <оператор_1> ;
<список значений выражения (через запятую)> : <оператор_2> ;
. . .
<список значений выражения (через запятую)> : <оператор_n> ;
[ else <оператор_0> ]
end
Обязательно требуется, чтобы элементы каждого списка значений выражения были различными. Выражение после case не может быть вещественного типа. При выполнении оператора выбора выражение вычисляется, и выполняется тот оператор, в список которого вычисленное значение попадает. Если такой список отсутствует, выполняется оператор_0 из ELSE-конструкции (или ничего не делается, если ELSE-конструкция отсутствует).