Оператор Case является обобщением оператора If и позволяет сделать выбор из произвольного числа имеющихся вариантов.
Формат:
Case <выражение> Of
<список 1>:<оператор 1;>
<список 2>:<оператор 2;>
……..
<список n>:<оператор n;>
[ Else <оператор>]
End;
В этой структуре:
Выражение – выражение любого простого типа, кроме вещественного типа, значение которого вычисляется.
список 1, список 2,…, список n – константы, с которыми сравнивается значение выражения.
оператор 1, оператор 2,…, оператор n – операторы, из которых выполняется тот, с константой которого совпадает значение выражения.
оператор – оператор, который выполняется, если значение выражения не совпадает ни с одной из констант.
Ветвь оператора Else является необязательной. Если она отсутствует и значение выражения не совпадает ни с одной из перечисленных констант, весь оператор рассматривается как пустой. В отличие от оператора If перед словом Else точку с запятой можно ставить, хотя это и необязательно.
Примеры решения задач
1. Выражение целочисленного типа.
Ввести номер месяца и определить месяц, соответствующий этому номеру.
Var
X: Byte;
BEGIN
Write(‘Введите номер месяца:’);
ReadLn(X);
Case X Of
1: Write(‘Январь’);
2: Write(‘Февраль’);
3: Write(‘Март’);
4: Write(‘Апрель’);
5: Write(‘Май’);
6: Write(‘Июнь’);
7: Write(‘Июль’);
8: Write(‘Август’);
9: Write(‘Сентябрь’);
10: Write(‘Октябрь’);
11: Write(‘Ноябрь’);
12: Write(‘Декабрь’);
Else
WriteLn(‘Такого месяца нет’);
End;
END.
2. Выражение интервального типа.
Ввести номер месяца и определить время года, к которому относится этот месяц.
Var
X: Byte;
BEGIN
Write(‘Введите номер месяца:’);
ReadLn(X);
Case X Of
1..2,12: WriteLn(‘Зима’);
3..5: WriteLn(‘Весна’);
6..8: WriteLn(‘Лето’);
9..11: WriteLn(‘Осень’);
End;
END.
3. Выражение символьного типа.
Составить программу, которая по введенному значению выводит оценки по математике, физике, химии.
USES Crt;
VAR M:Char;
BEGIN
ClrScr;
WriteLn(' По какому предмету Вы хотите увидеть оценки');
WriteLn(' М - математика');
WriteLn(' Ф - физика');
WriteLn(' Х - химия');
ReadLn(M);
CASE M OF
'М','м':WriteLn('5 5 4 4 5 5 3 5 5 ');
'Ф','ф':WriteLn('5 4 5 3 5 4 5 5 5 ');
'Х','х':WriteLn('4 3 5 3 4 4 4 5 ');
End;
END.
Примеры для самостоятельного решения:
1. Составить программу, которая по введенному значению 1, 2, 3 вычисляет:
Площадь параллелограмма
Периметр параллелограмма
Выход
2. Составить программу «Календарь XX столетия», которая определяет день недели любого дня XX-го столетия. По введенному значению 1, 2, 3 вычисляет
Номер дня недели по формуле, где D- день, М-месяц, G-год:
¨ S=[(12-M)/10]
¨ K=[(G-1900-S)*365,25]+[(M+12*S-2)*30,59]+D+29
¨ N=K-7[K/7] (N-вычисляется от 0-воскресенье до 6-суббота, []-целая часть)