БлогNot. Как понять "else относится к ближайшему if"...

Помощь дата->рейтинг Поиск Почта RSS канал Статистика nickolay.info Домой

Как понять "else относится к ближайшему if"...

...страдает человек, приводя в пример такой "шыдевр" с просторов инета:

Если сумма чисел X и Y меньше 100, то напечатать большее число, в противном случае напечатать меньшее число.
и его решение:

if x+y<100 then if x>y then writeln (x)
 else writeln (y)
 else if x<y then writeln (x)
 else writeln (y);

К какому же if относится здесь последнее else?

По-моему, ответ становится очевиден, если сформулировать основное правило вложения условных операторов полностью:

else всегда относится к ближайшему оператору if, для которого ветка else еще не указана.

Кроме того, код примера можно отформатировать и наглядно:

if x+y<100 then
    if x>y then writeln (x)
    else writeln (y)
 else
    if x<y then writeln (x)
    else writeln (y);

Соответственно, код из пункта 7.7. этой главы учебника по Паскалю:

if x>0 then begin
 if y>0 then p:=1
 else p:=4;
end
else begin
 if y>0 then p:=2
 else p:=3;
end;

будет работать абсолютно так же, если убрать лишние операторные скобки:

if x>0 then
   if y>0 then p:=1
   else p:=4
else
   if y>0 then p:=2
   else p:=3;

Они были включены в текст просто для наглядности.


теги: программирование pascal

25.01.2011, 13:09; рейтинг: 8256

  свежие записипоиск по блогукомментариистатистика

Наверх Яндекс.Метрика
© PerS
вход