Инструкция Сase
- Данная иструкция используется для выбора одного из нескольких направлений дальнейшего хода программы;
- выбор последовательности инструкций осуществляется во время выполнения программы в зависимости от равенства значения переменной константе, указанной перед группой инструкций;
- в качестве переменной можно использовать переменную целого (integer) или
(char) символьного типа.
Вариант 1:
case выражение of
spisok_konstant1: begin
(*инструкции 1*)
end;
spisok_konstant2: begin
(*инструкции 2*)
end;
spisok_konstant3: begin
(*инструкции 3*)
end;
...
spisok_konstantj: begin
(*инструкции j*)
end;
end;
Вариант 2:
case выражение of
spisok_konstant1: begin
(*инструкции 1*)
end;
spisok_konstant2: begin
(*инструкции 2*)
end;
...
spisok_konstantj: begin
(*инструкции j*)
end
else begin
(*инструкции*)
end;
end;
Инструкции между begin и end выполняются в том случае, если значение выражения после слова case совпадает с константой из соответствующего списка. Если это не так, то выполняются инструкции, следующие после else, расположенные между begin и end ...
Примеры:
Пример 1: При запуске программы, требуется
ввести число от 1 до 7. Затем программа напишет какой это день недели. VAR
В
этом примере при выполнении программы, если вы вводите число меньше 1 или больше
7, то на экране ничего не появится, в противном случае программа напишет
название дня недели.
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.
Пример 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'); readln(c); case c 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 операции, выбрав одну из
них в меню т.е. программа похожа на самый простой калькулятор. Если вы заметили,
то в третьей константе был использован составной оператор, где было использовано
только две команды: присвоение и вывод. Таким образом можно составлять очень
большие меню, которые тоже могут содержать оператор выбора.
Пример 3:
А это пример программы показывает как можно использовать интервальный тип в
операторе выбора. VAR
В
данном примере если вы вводите число от 1 до 80, то программа выведет в какой
диапазон значений оно попадает, а если введеное число меньше 1 или больше 80, то
программа пишет что число не попадает в диапазон 1-80.
a: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.