Языки программирования - концепции и принципы

С нет булева типа. Вместо


C

if (x > у)

           statement_1;

else

          statement_2;

    Как мы обсуждали в разделе 4.4, в языке С нет булева типа. Вместо этого при­меняются целочисленные значения с условием, что ноль это «ложь» (False), a не ноль — «истина» (Тruе).

    Распространенная ошибка состоит в использовании условного оператора для создания булева значения:



Ada

if X > Y then

            Result = True;

else

             Result = False;

end if;

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

Ada

 Result := X > Y;

     Запомните, что значения и переменные булева типа являются «полноправ­ными» объектами: в языке С они просто целые, а в Ada они имеют свой тип, но никак не отличаются от любого другого типа перечисления. Тот факт, что булевы типы имеют специальный статус в условных операторах, не наклады­вает на них никаких ограничений.

Вложенные if-операторы

Альтернативы в if-операторе сами являются операторами; в частности, они могут быть и if-операторами:

if(x1>y1)

       if (x2 > у2)

C

               statement_1;

      else

               statement_2;

else

          if (хЗ > y3)

                statemen_3;

          else

                statement_4;

    Желательно не делать слишком глубоких вложений управляющих структур (особенно if-операторов) — максимум три или четыре уровня. Причина в том, что иначе становится трудно проследить логику различных путей. Кроме того, структурирование исходного текста с помощью отступов — всего лишь ориен­тир: если вы пропустите else, синтаксически оператор может все еще оста­ваться правильным, хотя работать он будет неправильно.        

     Другая возможная проблема — «повисший» else:

      if (x1 > у1)  

C

         if (x2 > у2)

                statement_1;

         else

                statement_2;

    Как показывают отступы, определение языка связывает else с наиболее глубоко вложенным if-оператором.

Содержание раздела