Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие для учеников .doc
Скачиваний:
12
Добавлен:
18.12.2018
Размер:
2.27 Mб
Скачать

§24. Оператор варианта (выбора)

Case <порядковая переменная> Of

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

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

<константа n>: <оператор n>;

[Else <оператор>;]

End;

Выполнение оператора выбора начинается с вычисления выражения, которое должно принимать значение порядкового типа. В случае если результат вычисления равен одной из перечисленных констант, то выполняется соответствующий оператор. Затем управление передается за пределы оператора выбора. Если значение выражения не совпадает ни с одной константой, то выполняется оператор, стоящий после Else, если он есть, либо управление передается на оператор, следующий за End.

Эта конструкция предназначена для замены конструкций из вложенных условных операторов и применяется для обработки ситуаций с несколькими исходами.

Примечание

1. Тип константы должен совпадать с типом выражения.

2. Ветвь Else заключена в квадратные скобки, что гово­рит о том, что эта часть оператора выбора необязательна.

3. В конструкции выбора, в отличие от условного опера­тора, перед Else ставится точка с запятой.

4. В качестве операторов могут использоваться и состав­ные операторы.

5. Можно задавать не только одну константу, но и спи­сок и диапазон констант. Соответствующие примеры приве­дены далее.

Пример 1

Составьте программу, в которой определяется, какой буквой − гласной или согласной − является введенный символ английского алфавита.

Решение

Разделим все символы на три группы:

• гласные буквы английского алфавита;

• согласные буквы английского алфавита;

• символы, не являющиеся буквами английского алфавита.

Program Example_62;

Var ch: Char;

Begin

Write('Введите символ ');

Readln(ch);

Case Upcase(ch) Of

'A','E','I','0','U': Writeln ('Это

гласная буква английского алфавита ');

'A'..'Z': Writeln('Это согласная буква

английского алфавита');

Else Writeln('Этот символ не является

буквой английского алфавита ');

End; {case}

End.

Обратите внимание на то, что в первом случае константы перечисляются через запятую, а во втором используется интервал значений.

Пример 2

Подсчитать число пятниц, приходящихся на 13 числа в ХХ веке, если известно, что 13 января 1901 года было воскресенье.

Решение

При решении данной задачи не требуется рассматривать все дни нашего века, достаточно изучить дни недели только у всех 13−х чисел. Следует учитывать, что 2000 год входит в ХХ век (а 1900 год − в XIX век). Переменная d принимает значение дня недели для очередного 13–го числа (d=4 соответствует пятнице), в операторе case определяется день недели для 13−го числа в следующем месяце.

Program Example_63;

var d, s, i,j: word;

begin

d:=6; s:=0;

for i:=1 to 100 do {цикл по годам}

for j:=1 to 12 do

begin

if d=4 then s:=s+1;

case j of

1,3,5,7,8,10,12:d:=(d+3)mod 7;

4,6,9,11: d:=(d+2) mod 7;

2: if (i mod 4=0) then

d:=(d+1) mod 7;

end; {case}

end; {for}

writeln(s);

end.

Пример 3

Для натурального числа k от 1 до 99 напечатать фразу "мне k лет", учитывая, что при некоторых значениях k слово "лет" надо заменить на слово "год" или "года".