Конструкция выбора и составная инструкция

Рассмотрим пример программы, которая находит квадратный корень из числа, введенного пользователем (рис. 7).

Рис. 7 Пример программы

Первый пять строк не содержат новых элементов языка С. Стоит обратить внимание, что ввод вещественных чисел (строка 5) осуществляется аналогично вводу целых чисел. Далее нужно определить, не ввел ли пользователь отрицательное число, из которого нельзя вычислить корень.

Для выполнения этого действия потребуется специальная управляющая конструкция или просто конструкция языка С. Сразу оговоримся, что часто с английского языка этот термин (statement) переводится как оператор (еще вариант – инструкция выполнения). Это может вызвать путаницу с рассмотренными ранее операторами (англ. operator). В рамках курса мы будем использовать термин конструкция, как это принято в [1]. Заметим также, что с точки зрения языка С любая управляющая конструкция является инструкцией и часто так и называются. При этом, инструкцией также может быть функция, объявление переменной или арифметическое выражение.

Как и оператор, управляющая конструкции выполняют некоторое действие, но у конструкции нет ни операндов, ни возвращаемого результата. У конструкции есть поля, в которых записываются инструкции. Эти инструкции обрабатываются особым образом, зависящим от конструкции.

Например, в 6 строке используется управляющая конструкция «if-else».

После ключевого слова if в круглых скобках записывается условие или условное выражение. Если условное выражение выполняется (истинно), то выполняется инструкция, записанная за круглыми скобками (строка 7). В нашем случае проверяется, не меньше ли переменная a чем ноль. Если это условие истинно, то функция в 7 строке печатает соответствующее сообщение.

В 8 строке записано ключевое слово else. Оно позволяет указать инструкцию, которую нужно выполнить, если условное выражение не выполняется (ложно). В нашей программе в этом случае нужно вычислить корень и напечатать его.

В языке С управляющая конструкция «if-else» в случае, если условие ложное, выполнит ровно одну инструкцию, записанную после ключевого слова else. Поскольку нам нужно выполнить несколько действий, в программе используется так называемая составная инструкция. Составная инструкция представляет собой несколько инструкций, заключенных в операторные (фигурные) скобки. С точки зрения компилятора языка С после ключевого слова else записана одна составная инструкция, и, если условие ложно, будут выполненные все входящие в нее инструкции.

В 9 строке начинается составная инструкция. Для нахождения корня в 10 строке используется функция sqrt из библиотеки math (напомним, что в этой библиотеке можно найти функции для различных математических действий). В 11 строке печатается введенное пользователем число и корень из него. В 12 строке составная инструкция заканчивается.

Приведем общий вид управляющей рассмотренной управляющей конструкции:

if (выражение)

инструкция1;

Else

инструкция2;

Компилятор обрабатывает эту конструкцию следующим образом. Если выражение в круглых скобках истинно, то выполняется инструкция1 (простая или составная). Если выражение в круглых скобках ложно, то выполняется инструкция2 (простая или составная).

Если программе не нужно выполнять никаких действий в случае ложного выражения, ключевое слово else вместе с инструкцией2 может отсутствовать.