Язык программирования C. Структура простейшей программы на языке C, страница 3

В языке С++ все выше перечисленные операции могут быть переопределены, за исключением:

.         Прямой выбор элемента

.*       Взятие значения

::        Глобальный доступ

? :      Условное выражение

Обратите внимание на обилие «стенографированных» операций, совмещающих выполнение некоторой бинарной операции с оператором присваивания. Отмечу также, что в отличие от BASIC’а в C не существует оператора возведения в степень. Кроме того, в C есть ряд экзотических операторов,  которых вы не найдете в других языках программирования. Мы обсудим эти операторы при рассмотрении второго раздела – Чем С отличатся от других языков.

1.3 . Операторы, управляющие потоком выполнения

Для создания ветвлений в программе необходим оператор условного перехода

если выражение то составной оператор или оператор иначе составной оператор

Ветка иначеможет быть опущена. Аналогичная конструкция присутствует практически во всех языках, претендующих на звание языка высокого уровня.

Пришло время поговорить о фигурных скобках и их значения для языка C. При описании этой конструкции я использовал термины составной оператор и оператор. Оператором в С называется синтаксически правильное выражение, завершенное точкой с запятой. Что значит синтаксически правильное выражение? Это последовательность операндов и операторов, которая соответствует правилам языка и принимает в результате выполнения (или другими словами, применения операторов к операндам) некоторое значение. Тип значения, которое будет получено в результате выполнения выражения, зависит от типов операндов в выражении. Существуют правила приведения типов. Типы упорядочены в порядке приведения:

символьный à целый à вещественный

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

Что такое операнд? Это то, к чему применима операция. Операндом может быть константа, переменная или другое выражение. Итак, основной внешний признак оператора – точка с запятой, которая его завершает.

А что же тогда составной оператор? Последовательность операторов, которые выполняются один за другим и могут быть представлены как один сложный оператор. Иногда его называют блок. Границами блока в С являются открывающая и закрывающая фигурные скобки. Поэтому ранее при рассуждениях об области действия переменных мы говорили о блоках. Стандарт языка теперь позволяет определять автоматические переменные в начале блока.

Фигурные скобки в языке С ограничивают начало и конец функции и блока.

Теперь сиснтаксис условного оператора становится очевидным – он управляет ветлением в программе, позволяя выполнять то один, то другой блок в зависимости от значения условного выражения.

Конструкция if () else в сочетании с набором условных операторов облегчает написание программ, в которых осуществляется выбор между двумя вариантами. Но жизнь намного сложнее и значительно чаще нам приходится делать выбор из большего числа альтернатив. И язык С не был бы языком С если бы не предложил новую конструкцию.

Помимо оператора условного перехода в С существует оператор множественного ветвления – switch. Исторически при формировании принципов структурного программирования оператор множественного ветвления не существовал. При необходимости использовали последовательность из простых операторов условного перехода. Он был добавлен в систему конструкций программирования немного позже в результате дискуссии по структурному программированию.

(см. Hoare C.A.R., An Axiomatic Basis for Computer Programming, Comm.ACM, 12 (Oct. 1969), 576-583).

Предложенная конструкция проста и наглядна и, главное, удобна для решения множества практических задач программирования. Сделаем только несколько важных замечаний по поводу практического использования конструкции switch: