Оператор выбора

Если один оператор IF может обеспечить выбор из двух альтернатив, то оператор выбора CASE позволяет сделать выбор из произвольного числа имеющихся вариантов. Он состоит из выражения, называемого селектором (selection – выбор альтернативы), и списка параметров, каждому из которых предшествует список констант выбора:

case <выражение-селектор> of

<список1>: <оператор1>;

<список2>: <оператор2>;

:

else

<оператор>

end;

Оператор CASE работает следующим образом.

Сначала вычисляется значение выражения-селектора, затем обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора. Если ни одна из констант не равна текущему значению селектора, выполняется оператор, стоящий за словом ELSE. Если слово ELSE отсутствует, то активизируется оператор, находящийся за словом END, т.е. первый оператор за границей CASE.

Селектор должен относиться к одному из целочисленных типов (со значениями в диапазоне -32768..32767): булевскому, литерному или пользовательскому.

Список констант выбора состоит из произвольного количества значений, или диапазонов, отделенных друг от друга запятыми. Границы диапазона записываются двумя константами через разграничитель «..». Тип констант в любом случае должен совпадать с типом селектора.

При использовании оператора выбора CASE должны выполняться следующие правила:
1. Значения выражения «переключателя», записанного после служебного слова CASE, должны принадлежать дискретному типу; для целого типа они должны лежать в диапазоне integer.
2. Все константы, предшествующие операторам альтернатив, должны иметь тип, совместимый с типом выражения.
3. Все константы в альтернативах должны быть уникальны в пределах оператора варианта (т. е. повторение констант в альтернативах не допускается); диапазоны не должны пересекаться и не должны содержать констант, указанных в данной или других альтернативах.

ПРИМЕРЫ:

Селектор интервального типа:

case I of
1..10 : Writeln (‘число ‘.1:4. в диапазоне 1-10 );
11..20 : Writeln (‘число ‘. 1:4. ‘ в диапазоне 11 — 20’):
21..30 : Writeln (‘число ‘. 1:4. ‘ в диапазоне 21 — 30’)
else
Writeln (‘число ‘. 1:4, ‘ вне пределов контроля’)
end;

Селектор целочисленного типа:

case I of
1: Z :- I + Ю:
2: Z := I + 100;
3: Z := I + 1000
end;

Селектор перечисляемого пользовательского типа:

var Season: (Winter. Spring, Summer. Autumn);
begin
case Season of
Winter ; Writeln(‘Winter’);
Spring : Writeln(‘Spring’):
Summer : Writeln(‘Summer’);
Autumn : Writeln(‘Autumn’)
end;
end;
Добавить комментарий