Оператор выбора в Паскаль

Для многих алгоритмов вычислительный процесс может разветвляться более чем по двум направлениям. Конструкции вложенного условного оператора в таких программах могут оказаться весьма громоздкими и трудно читаемыми.

Проблема широкой разветвляемости алгоритмов в определенных случаях может быть решена путем использования оператора выбора case, который позволяет выбирать из произвольного числа возможных вариантов.

Оператор выбора имеет следующий формат:

  • case выражение - переключатель of
  • список выбора 1: оператор1;
  • ...
  • список выбора N: операторN;
  • else оператор0
  • end;

Выражение – переключатель может быть только строкового или простого типа (за исключением вещественного). Перед каждой ветвью оператора записывается список выбора, который в языке Паскаль может содержать одну или несколько констант через запятую, или диапазон значений вида а..b (причем a < b). Константы должны иметь тип, совместимый с типом переключателем.

{Фрагмент кода программы}

  • case DayOfWeek of
  • 1..5: writeln('Будний день');
  • 6,7: writeln('Выходной день');
  • else writeln('Ошибка ввода');
  • end;

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

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

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

{Фрагмент кода программы}

  • case N of
  • 9,12: writeln(1);
  • 1.10: writeln(2);
  • end;

Внимание: если в какой-либо ветви необходимо записать несколько операторов, то для этого в языке программирования Паскаль используется составной оператор.