Вложенные условные операторы в Паскаль

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

Построение сложных условий

Для построения сложных условий в условных операторах применяются логические операции, объединяющие выражения отношения.

Сформулируем правила для построения сложных условий:

  1. Сложное условие строится с учетом приоритетов логических операций и скобок.
  2. Операции отношения в языке Паскаль имеют низший приоритет, поэтому в сложном условии они берутся в скобки.
  3. Если в сложном условии используются операции равного приоритета, то они выполняются последовательно слева направо.

Задача. на вход программе поступает натуральное число. Необходимо выяснить является ли оно двухзначным.

Решение. Очевидно, один из возможных способов решения задачи может быть оформлен путем проверки двух условий, выполняющихся одновременно: х >= 10 и x < 100.

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

  • read(x);
  • if (x >= 10) and (x < 100) then
  • writeln ('Число двухзначное')
  • else
  • writeln ('Число не двухзначное');

Использование вложенных условных операторов

Вспомним, что в условном операторе языка Паскаль после then и после else может располагаться только один оператор. Разумеется, этим оператором может быть условный оператор, причем он может располагаться в любой из ветвей исходного оператора. При этом уровень таких вложений неограничен.

Задача. На вход программе поступают три целых числа. Выведите наибольшее из них (программа должна вывести ровно одно число).

Решение. Для решения используем вложенные условные операторы.

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

  • readln (a, b, c);
  • if a > b then
  • begin
  • if a > c then writeln (a)
  • else writeln (c)
  • end
  • else if b > c then writeln (b)
  • else writeln (c);

ВНИМАНИЕ: использование краткой формы условного оператора при построении вложенных условных конструкций требует от программиста быть максимально осторожным, поскольку порождает синтаксическую неоднозначность.

Рассмотрим следующую, конструкцию:

  • if выражение1 then
  • if выражение1 then
  • оператор1
  • else
  • оператор2

Такая запись может быть истолкована двояко с точки зрения принадлежности части else оператор2 первому или второму оператору if. Эта двусмысленность разрешается следующим правилом языка Паскаль: else всегда соответствует первому предшествующему ему оператору if, для которого ветка else еще не указана.