Else begin

End

Else begin

End

{ блок-12 }

end;

{ блок-2 }

end;

· ключевая тема этого задания ЕГЭ – использование вложенных условных операторов, причем в тексте задания фрагмент программы обычно записан без отступов «лесенкой» или с неправильными отступами, например, так:

if a = b then begin if a = c then c:=1; end else c:=0; if a = b then if a = c then c:=1 else c:=0;

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

Рассмотрим фрагмент слева, в нем перед else стоит end, поэтому для него нужно найти соответствующий ему begin; таким образом определяем, что else относится к первому (внешнему) условному оператору.

В правом фрагменте перед else нет end, поэтому он относится к ближайшему по тексту внутреннему условному оператору.

Блок-схемы для двух фрагментов показаны ниже, желтым цветом выделен «переехавший» блок:

 

· в условных операторах можно использовать сложные условия, которые строятся из простых отношений (<, <=, >, >=, =, <>) с помощью логических операций not («НЕ», отрицание), and («И», одновременное выполнение двух условий) и or («ИЛИ», выполнение хотя бы одного из двух условий)

· в сложном условии сначала выполняются действия в скобках, потом – not, затем – and, затем – or и, наконец, отношения;
операции равного уровня (приоритета) выполняются последовательно слева направо

· поскольку отношения в Паскале имеют низший приоритет, в сложном условии их приходится брать в скобки:

if (a = b) or (b < c) and (c <> d) then begin ... end;

· в приведенном выше примере сначала определяются результаты сравнения (выражения в скобках), затем выполняется операция and («И»), а затем – or («ИЛИ»)

Пример задания:

Требовалось написать программу, которая вводит с клавиатуры натуральное число N, не превышающее 109, и выводит сумму чётных цифр в десятичной записи этого числа или 0, если чётных цифр нет. Программист торопился и написал программу неправильно. Вот она:

var N: longint;

s: integer;