ReadLn(Month);
ClrScr;
Begin
Uses Crt;
Program Mesjac;
End;
Case (k Mod d ) Of
K := 4;
End;
Case (селектор) Of
значение-1: оператор-1;
значение-2: оператор-2;
значение-3: оператор-3;
…………………………
значение-n: оператор-n;
Else оператор-n+1;
где Case - служебное слово “вариант”,
селектор - переменная или выражение любого порядкового или перечисляемого типа,
значение-1, значение-2,… - метки вариантов – конкретные значения или диапазоны значений селектора,
Else - служебное слово “иначе” (не обязательно).
Внимание! Перед словом Else можно ставить точку с запятой.
Действия оператора:
1. вычисляется значение селектора,
2. среди меток вариантов отыскивается это значение,
3. выполняется оператор, стоящий за найденной меткой,
4. осуществляется выход из переключателя,
5. если вычисленное значение селектора не найдено среди меток вариантов, то выполняется оператор, стоящий после слова Else, если оно есть.
Внимание! Переключатель всегда заканчивается служебным словом End, причем слова Begin для него нет.
Пример: чему будут равны значения переменных k и d после выполнения следующих операторов:
d := 5;
2,3,5..8: d := k; метки вариантов могут перечисляться через запятую
1: ; это пустой оператор – программа ничего не выполняет
4,9: Begin если в одной ветви переключателя несколько операторов,
k := 0; то они заключаются в операторные скобки
d := 2;
End; перед Else ставится точка с запятой
Else d := 1; если значение селектора не совпадает ни с одной из меток
В этом случае значение селектора 4 Mod 5 = 4 , поэтому переходим на ветвь с меткой варианта, равной 4, отсюда k = 0 и d = 2.
Таким образом,
· в каждой ветви могут стоять по нескольку меток вариантов, разделенных запятыми: 2,3,
· можно использовать интервалы данных: 5..8
· в качестве оператора можно использовать пустой оператор
· если после метки вариантов следует несколько операторов, то необходимо заключать в операторные скобки Begin…End
· метки вариантов не должны повторяться.
Пример: написать программу с использованием переключателя, которая по введенному номеру месяца определяет количество дней в нем.
В данном случае у переключателя будут три ветви:
1. для месяцев с 30 днями
2. для месяцев с 31 днем
3. для месяца с 28 днями (вариант високосного года рассматривать не будем).
Var Month: 1..12;
Write(‘Введите номер месяца:’);
4,6,9,11: WriteLn(’30 дней’);
1,3,5,7,8,10,12: WriteLn(’31 день’);
2: WriteLn(’28 дней’);
Else WriteLn(‘Такого месяца нет’);