Оператор выбора Case в Паскале
В языке программирования Паскаль оператор CASE используют в тех случаях, когда в зависимости от значения какой-либо переменной нужно выполнить те или иные действия (простые или составные операторы).
Если вариантов всего два, то можно обойтись и условным оператором IF. Но если их, к примеру, десятки, то использование конструкции if then else становится затрудинительным. В этом случае оптимален оператор CASE варианта.

Синтаксис оператора case
Case n of
1:Writeln(один);
2:Writeln(два);
else Writeln(много);
end;
Здесь 1 и 2 это те значения, которые может принимать переменная n. Если ничего не подходит, то выполняется тот оператор, который стоит после ELSE.
Не забываем, что оператор case заканчивается END;
Рассмотрим использование оператора выбора case на языке Паскаль на примере.
Условие задачи. Написать программу в Паскаль в которой необходимо указать номер месяца. В зависимости от введённого номера, программа в Паскаль должна вывести сообщение с указанием на то, к какому времени года относится введенный номер (зима, весна, лето, осень).
Попробуем решить задачу, используя условный оператор if
Program vremena_goda;
Var n:integer;
Begin
Write(Введите номер месяца =);
readln(n);
// 12,1,2 - зима
// 3,4,5 - весна
// 6,7,8 - лето
// 9,10,11 - осень
if (n>=3) and (n<=5) then Writeln(весна);
if (n>=6) and (n<=8) then Writeln(лето);
if (n>=9) and (n<=11) then Writeln(осень);
if (n=12) or (n=1) or (n=2) then Writeln(зима);
End.
Как видим программа получилась достаточно компактной, но логические условия которые мы применили не всегда сразу понятны.
В том случае, если нужно сделать несколько сотен проверок, программа станет невероятно сложной и запутанной.
С помощью оператора case приведём нашу программу к следующему виду. Сейчас она стала более понятной, нежели с оператором if.
Program vremena_goda2_1;
Var n:integer;
Begin
Write(Введите номер месяца =);
readln(n);
Case n of
1:Writeln(зима);
2:Writeln(зима);
3:Writeln(весна);
4:Writeln(весна);
5:Writeln(весна);
6:Writeln(лето);
7:Writeln(лето);
8:Writeln(лето);
9:Writeln(осень);
10:Writeln(осень);
11:Writeln(осень);
12:Writeln(зима)
else Writeln(Вы ввели неправильный месяц);
end;
End.
В операторе case можно использовать перечисление через запятую
case x of
1,2,3,4: writeln(от одного до четырёх);
Программа понятна, но всё же, в ней достаточно много строк. Используя символ запятой в качестве перечисления, можно существенно уменьшить количество строк в программе:
Program vremena_goda2_2;
Var n:integer;
Begin
Write(Введите номер месяца =);
readln(n);
Case n of
1,2,12:Writeln(зима);
3,4,5:Writeln(весна);
6,7,8:Writeln(лето);
9,10,11:Writeln(осень);
else Writeln(Вы ввели неправильный месяц);
end;
End.
Нашу программу можно ещё немного подсократить,если вместо запятой при указании диапазона использовать ..
...
case x of:
3..5: writeln(весна);
...
Применим это знание на практике:
Program vremena_goda2_3;
Var n:integer;
Begin
Write(Введите номер месяца =);
readln(n);
Case n of
1,2,12:Writeln(зима);
3..5:Writeln(весна);
6..8:Writeln(лето);
9..11:Writeln(осень);
else Writeln(Вы ввели неправильный месяц);
end;
End.
Оператор ввода данных с клавиатуры