Энциклопедия Turbo Pascal. Главы 9-11 - Ошибки if/then/if/else

ОГЛАВЛЕНИЕ

Ошибки if/then/if/else

Даже очень опытные программисты могут допустить ошибку в конструкции if/then/if/else. Например, уверены ли вы, что следующий код работает правильно

     if count<100 then
       if count>50 then F1
     else F2;

Не шутите с  соответствующим форматированием. Предложение else не ассоциируется с первым if, а только со вторым if. Помните, что else всегда ассоциируется с ближайшим if. В данном примере вместо выполнения F2, когда count больше 100, Турбо Паскаль не делает ничего. Кроме того,  F2 будет выполняться только, если count меньше 100 и - если меньше 50. Вы увидите это когда код правильно отформатирован:

     if count<100 then
       if count>50 then F1
     else F2;

Если вы хотите просто выполнить F2, когда count больше 100, вам надо было бы использовать конструкцию begin/end, как показано далее:

     if count<100 then
     begin
       if count>50 then F1;
     end
     else F2;