Если оператор CASE применить к нашей шуточной (или нешуточной) программе, то получится вот что.
{ P_16_1 – игра «вопрос – ответ» }
var S: string;
begin
Randomize; { чтобы случайный ряд не повторялся }
repeat
Write(’Ваш вопрос: ’); Readln(S);
if S=’’ then break; { завершение цикла, если строка пуста }
0: S:=’Когда рак на горе свиснет’;
1: S:=’После дождика в четверг’;
2: S:=’За углом налево’;
3: S:=’Это элементарно, Ватсон!’;
Writeln(S); { печать ответа }
until false; { бесконечный цикл }
end.
Добавьте несколько смешных ответов, увеличив соответственно параметр функции Random, а затем испытайте программу на своих приятелях.
• Для условных переходов со многими ветвями в Паскале предусмотрен оператор выбора CASE-OF-ELSE-END.
• Каждая ветвь оператора CASE начинается с числовой метки, за которой следует выполняемый оператор.
• Метки могут следовать в любом порядке (не только по возрастанию).
• Ветвь оператора CASE выбирается в зависимости от числового выражения в условии. Если ни одна метка не соответствует условию выбора, выполняется оператор, указанный после ELSE. Если ветвь ELSE не указана, то ничего не выполняется.
• Для исполнения внутри ветви нескольких операторов их объединяют в блок BEGIN-END.
А) Какой ответ будет выпадать чаще других, если условием в операторе CASE нашей программы поставить выражение Random(100)?
Б) Напишите программу, которая бы запрашивала номер дня недели, и в ответ печатала бы название этого дня («понедельник», «вторник» и так далее).
В) Пусть пользователь введет число – свой возраст в годах. Ваша программа должна напечатать фразу: «Вам столько-то лет» с правильным окончанием, например: «Вам 20
Г) Пользователь вводит число – номер месяца от 1 до 12, а программа должна сообщить соответствующее ему время года: зима, весна, лето, осень. Подсказка: в одной ветви можно применить несколько меток, например:
case N of
1, 2, 12 : Writeln(‘Зима’);
Д) Танк в компьютерной игре может двигаться в одном из четырех направлений, обозначим их числами: 1 – север, 2 – восток, 3 – юг, 4 – запад. Направление движения изменяется тремя командами: 1 – поворот направо, 2 – поворот налево, 3 – поворот кругом. Пользователь вводит начальное направление движения, а затем ряд команд. Программа должна определять и печатать всякий раз новое направление. Выход из цикла – команда 0.
Е) Исходные позиции шахматных фигур известны всякому (если вы – исключение из правила, ознакомьтесь с основами шахмат). Пользователь в цикле вводит число, по которому программа печатает название фигуры, стоящей на соответствующей вертикали шахматной доски (от 1 до 8). Ноль служит для выхода из цикла, а на все прочие числа программа сообщает об ошибке.