Проект закрыт, ничего заказать и купить нельзя! Существует лишь для ностальгии создателя!

Разветвляющиеся структуры. Оператор выбора CASE

Pascal 2016-02-28 в 12:34 1652

Условный оператор (if) позволяет в процессе выполнения программы выбирать одно из двух возможных действий в зависимости от значения логического выражения, что не всегда удобно, если необходимо выбирать одно действие сразу из нескольких (многих).

В подобном случае можно использовать специальный оператор выбора, имеющий следующий вид:

Синтаксис


case <переключатель> of
 <список_констант_1> : <один_оператор_1>;
 [<список_констант_2> : <один_оператор_1>;]
 . . .
 [<список_констант_n> : <один_оператор_n>;]
[else
 <один_оператор_k+1>;]
end;

Алгоритм

Выполнение оператора case происходит следующим образом:

  1. вычисляется значение переключателя;
  2. полученный результат проверяется на принадлежность к тому или иному списку констант;
  3. если такой список найден, то дальнейшие проверки уже не производятся, а выполняется оператор, соответствующий выбранной ветви, после чего управление передается оператору, следующему за ключевым словом end;, которое закрывает всю конструкцию case
  4. Если подходящего списка констант нет, то выполняется оператор, стоящий за ключевым словом else. Если else-ветви нет, то не выполняется ничего.

Структура оператора case должна соответствовать правилам:

  1. переключатель должен относиться только к порядковому типу данных (не вещественному!);
  2. переключатель может быть переменной или выражением;
  3. список констант может задаваться как явным перечислением, так и интервалом или их объединением;
  4. повторение констант не допускается;
  5. тип переключателя и типы всех констант должны быть совместимы;

Пример

Требуется найти остаток от деления значения целого выражения c=k*(a+b) на 4 и выдать сообщение о его величине.

Если остаток равен нулю, то увеличить значение с на единицу, если двум или трем, то увеличить значение c на два.

Алгоритм решения

Оператор выбора CASE

Программная реализация алгоритма


program modcase;
var
 a, b, c, k: integer;
begin
 writeln('Введите A, B, K');
 read(a, b, k);
 writeln('K = ', k ,' A = ', a ,' B = ',b);
 c := k * (a + b);
 case c mod 4 of
 0: begin
 c := c + 1;
 writeln('C = ', c,' остаток 0')
 end;
 1: writeln('C = ', c,' остаток 1');
 2, 3: begin
 c := c + 2;
 writeln('C = ', c,' остаток 2 или 3');
 end
 end
end.

Подведем итог

Я все же рекомендую избегать использование оператора case, если его использование не очевидно.

Чтобы попрактиковаться в применении этого оператора, скачайте методичку с заданиями и пробуйте выполнять оттуда задачи.

Не можете справиться с заданием?
Специалисты нашего проекта помогут вам справиться с любыми заданиями по программированию!
Чтобы оставлять комментарии, необходимо войти или зарегистрироваться