Вложенный условный оператор. Сложные условия


В блоки «если» и «иначе» могут входить любые другие операторы, в том числе и другие вложенные условные операторы; при этом оператор else относится к ближайшему предыдущему if

Например 
if  A > 10 then
  if  A > 100 then
    writeln('У вас очень много денег.')
  else
    writeln('У вас достаточно денег.')
else
    writeln('У вас маловато денег.')
Чтобы легче разобраться в программе, все блоки «если» и «иначе» (вместе с then и begin - end) сдвигаются вправо на 4 символа - такая запись называется запись «лесенкой»
Запись "лесенкой" является хорошим тоном любого программиста!

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

Давайте разберемся, что такое СЛОЖНЫЕ УСЛОВИЯ

Простейшие условия состоят из одного отношения (больше, меньше и т.п.) Но иногда необходимо объединение простых условий в более сложные, например: на улице холодно и идет дождь. Два простых условия (на улице холодно), (на улице идет дождь) здесь связаны связкой И.

СЛОЖНОЕ УСЛОВИЕ - состоит из двух или нескольких простых отношений (условий), которые объединяются с помощью логических операций
  И - логическое умножение - на языке Pascal записывается как and
  ИЛИ - логчиеское умножение - на языке Pascal записывается как or
  НЕ - логчиеское умножение - на языке Pascal записывается как not

Операция И - требует одновременное выполнение двух условий
  условие 1 and условие 2   - будет принимать истинное значение, только если оба простых условия истинны одновременно
причем, в языке программирования Pascal - если условие 1 ложно, то условие 2 проверяться не будет

Операция ИЛИ - требует выполнение хотя бы одного из условий
  условие 1 or  условие 2   - будет принимать ложное значение, только если оба простых условия ложны одновременно
причем, в языке программирования Pascal - если условие 1 истинно, то условие 2 проверяться не будет

Операция НЕ 
 not условие 1 - будет принимать ложное значение, условие 1 истинно и наоборот
Например, следующие два условия равносильны:   A > B     и    not (A <= B)

ПРИОРИТЕТ ВЫПОЛНЕНИЯ ЛОГИЧЕСКИХ ОПЕРАЦИЙ И ОТНОШЕНИЙ
1) операции в скобках
2) операция НЕ
3) операция И
4) операция ИЛИ
5) логические отношений >, <, >=, <=, =, <>
Для изменения порядка действий используются круглые скобки

ЛОГИЧЕСКИЕ ПЕРЕМЕННЫЕ
Во многих языках программирования есть возможность использовать переменные, которые хранят логические значения ("истина"/"ложь"). В Pascal такие переменные могут принимать значения True (истина) или False (ложь). Например, фрагмент программы 
var a, b: boolean;
begin
  a := True;
  b := False;
  writeln(a or b);
end.

Выведет на экран True
Логические переменные относятся к типу boolean, названному в честь английского математика Джорджа Буля - создателя алгебры логики.