Здавалка
Главная | Обратная связь

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



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

Формат записи оператора case:

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

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

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

<списокN>: <onepaторN>

else <оператор>

end;

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

Селектор должен относиться к одному из целочисленных типов (находящихся в диапазоне — 32768..32767): булевскому, литерному или пользовательскому. Список констант выбора состоит из произвольного количества значений, или диапазонов, отделенных друг от друга запятыми. Границы диапазона записываются двумя константами через разграничитель "..". Тип констант в любом случае должен совпадать с типом селектора. В синтаксическом описании, приведенном выше, предполагается использование одного оператора для каждой альтернативы, но при необходимости можно задать несколько операторов, сгруппировав их в составной оператор. В то же время ветвь else допускает использование последовательности операторов, разделенных символом ";".

Правила использования оператора сase. При использовании оператора выбора case должны выполняться следующие правила:

1. Значения выражения "переключателя", записанного после служебного слова case, должны принадлежать дискретному типу (лат. discretus — прерывистый, дробный, состоящий из отдельных частей); для целого типа они должны лежать в диапазоне integer.

2. Все константы, предшествующие операторам альтернатив, должны иметь тип, совместимый с типом выражения.

3. Все константы в альтернативах должны быть уникальны в пределах оператора варианта (т. е. повторения констант в альтернативах не допускаются); диапазоны не должны пересекаться и не должны содержать констант, указанных в данной или других альтернативах.

Формы записи оператора case.

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

case I of

1..10 : Writeln ('число ', I: 4, ' в диапазоне 1- 10');

11.. 20 : Writeln ('число ', I:4, ' в диапазоне 11-20');

21.. 30 : Writein ('число', I:4, ' в диапазоне 21-30')

else Writeln ('число ', I:4, ' вне пределов контроля');

end;

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

case I of

1 : Z := I + 10;

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');

Suauner: Writeln (' Summer') ;

Autumn: Writeln('Autumn')

end; {конец case}

end;

Пример 2. Составить программу, которая по введенному пользователем номеру дня недели выводит на экран его название.

program Day_Week;

var Day : byte;

begin

Write ('Введите номер дня недели: ');

Readln(Day) ;

case Day of {Вычисление значения селектора и выбор}

1: Writeln('Понедельник') ;

2: Writeln('Вторник') ;

3: Writeln('Среда');

4: Writeln('Четверг');

5: Writeln<'Пятница');

6: Writeln('Суббота' ) ;

else

Writeln('Воскресенье');

end;

end.

В данном примере на экран выводится приглашение: 'Введите номер дня недели:', с клавиатуры считывается целочисленное значение дня недели и присваивается переменной Day. Затем в зависимости от значения селектора DAY обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора. Например, если значение Day равно 3, то реализуется оператор Writeln('Cpeдa'). Если значение Day равно 7, а ни одна из констант не равна этому значению селектора, то выполняется оператор, стоящий за словом else (на экран выводится текст 'Воскресенье'). Если слово else отсутствует, активизируется оператор, находящийся за словом end, т. е. первый оператор за границей case. Если значение Day не равно значению ни одной из констант выбора (например, Day=8 или Day=0), то активизируется оператор, находящийся за словом end, т. е. первый оператор за границей case - оператор end.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.