Оператор выбора имеет вид:
case [выражение или переменная] of [константа1]: [оператор 1]; [константа2]: [оператор 2]; [константа3]: [оператор 3] else [оператор 4]; end;[выражение или переменная] - выражение или переменная.
[константа]: - произвольное количество значений или диапазонов, отделенных друг от друга запятыми, того же типа что и [выражение или переменная]. Диапазон значений записывается в виде: min..max , где min - минимальное значение, а max - максимальное.
[оператор 1]; [оператор 2]; [оператор 3]; [оператор 4] - операторы.
Действует этот оператор так: значение [выражение или переменная] сравнивается со значением [константа1], если эти значения равны, то выполняется [оператор 1]. Если не равны, то сравнивается следующая [константа2]. Если ни одно значение [константа] не равно значению [выражение или переменная], то выполняется [оператор 4] идущий после слова else.
Замечание!
Как и в условном операторе - if, слова else [оператор 4];, могут отсутствовать. В таком случае если значения [выражение или переменная] и [константа] не совпадают, то выполняется следующий оператор, идущий после оператора выбора -case.
Пример14.1 При запуске программы, требуется ввести число от 1 до 7. Затем программа напишет какой это день недели.
VAR
a:integer;
BEGIN
writeln('Введите число от 1 до 7:');
readln(a); {ввод числа}
case a of {начало оператора выбора}
1: writeln('Понедельник.');
2: writeln('Вторник.');
3: writeln('Среда.');
4: writeln('Четверг.');
5: writeln('Пятница.');
6: writeln('Суббота.');
7: writeln('Воскресенье.');
end; {конец оператора выбора}
END.
В этом примере при выполнении программы, если вы вводите число меньше 1 или больше 7, то на экране ничего не появится, в противном случае программа напишет название дня недели.
Пример14.2 А эта программа показывает как можно использовать оператор выбора при разработке меню.
VAR
a,b,c:integer;
BEGIN
writeln('Введите число A:'); readln(a);
writeln('Введите число B:'); readln(b);
writeln('Введите номер действия, которое вы хотите произвести с этими числами:');
writeln('1 - получить сумму = A+B'); {вывод меню - три действия}
writeln('2 - получить разность = A-B');
writeln('3 - получить разность = B-A');
case a of {начало оператора выбора}
1: writeln('A+B=', A+B);
2: writeln('A-B=', A-B);
3: begin
A:=B-A;
writeln('A-B=', A);
end;
end; {конец оператора выбора}
END.
В этом примере при выполнении программы, вы можете ввести два числа, а затем проделать над ними 3 операции, выбрав одну из них в меню т.е. программа похожа на самый простой калькулятор. Если вы заметили, то в третьей константе был использован составной оператор, где было использовано только две команды: присвоение и вывод. Таким образом можно составлять очень большие меню, которые тоже могут содержать оператор выбора.
Пример14.3 А это пример программы показывает как можно использовать интервальный тип в операторе выбора.
VAR
a,b,c:integer;
BEGIN
writeln('Введите число A:'); readln(a);
case a of {начало оператора выбора}
1..10: writeln('Введеное число в диапазоне 1-10');
11..20: writeln('Введеное число в диапазоне 11-20');
21..30: writeln('Введеное число в диапазоне 21-30');
31..80: writeln('Введеное число в диапазоне 31-80')
else writeln('Введеное число не попадает в диапазон 1-80');
end; {конец оператора выбора}
END.
В данном примере если вы вводите число от 1 до 80, то программа выведет в какой диапазон значений оно попадает, а если введеное число меньше 1 или больше 80, то программа пишет что число не попадает в диапазон 1-80.