Инструкция С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
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, то на экране ничего не появится, в противном случае программа напишет название дня недели.

Пример 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
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.
В данном примере если вы вводите число от 1 до 80, то программа выведет в какой диапазон значений оно попадает, а если введеное число меньше 1 или больше 80, то программа пишет что число не попадает в диапазон 1-80.

Дополнительно..

Наверх