Условный оператор CASE
С помощью этого оператора можно выбрать вариант из любого количества вариантов. Структура этого оператора выглядит следующим образом
CASE S OF
C1:<оператор1>;
C2:<оператор2>;
…
Cn:<операторN>;
ELSE <оператор>
END;
В этой структуре S - выражение порядкового типа, которое вычисляется;
C1, C2,…,Cn - константы с которыми сравнивается значение выражения S;
оператор1, оператор2,…,операторN – операторы, из которых выполняется тот, с константой которого совпадает значение выражения S;
оператор – оператор, который выполняется, если значение выражения S не совпадает ни с одной из констант C1, C2,…,Cn.
Ветвь ELSE <оператор> является необязательной. Если она отсутствует, и значение выражения S не совпадает ни с одной из перечисленных констант, весь оператор рассматривается как пустой.
Если для нескольких констант нужно выполнять один и тот же оператор, их можно перечислить через запятую (или даже указать диапазон, если возможно), сопроводив их одним оператором.
Пример.
|
В качестве команд рассмотрим следующие значения FORWARD – вперед, RIGHT – направо, BACK – назад и LEFT – налево.
program polet;
type kurs=(N,E,S,W); {перечислимый тип курс}
com=( FORWARD, RIGHT, BACK, LEFT);
var
k1,k2:kurs;
b:com;
begin
read(b);
case b of
FORWARD: k2:=k1;
{движение прежним курсом}
RIGHT: if k1=W then k2:=N
else k2:=succ(k1);
BACK: if k1=S then k2:=N
else if k1=W then k2:=E
else k2:=succ(succ(k1));
LEFT: if k1=N then k2:=W
else k2:=pred(k1)
end
end.