Язык программирования C++

         

Условные операторы


Условные операторы позволяют выбрать один из вариантов выполнения действий в зависимости от каких-либо условий. Условие – это логическое выражение, т.е. выражение, результатом которого является логическое значение true (истина) или false (ложь).

Оператор if выбирает один из двух вариантов последовательности вычислений.

if (условие) оператор1 else оператор2

Если условие истинно, выполняется оператор1, если ложно, то выполняется оператор2.

if (x y) a = x; else a = y;

В данном примере переменной a присваивается значение максимума из двух величин x и y.

Конструкция else необязательна. Можно записать:

if (x 0) x = -x; abs = x;

В данном примере оператор x = -x; выполняется только в том случае, если значение переменной x было отрицательным. Присваивание переменной abs выполняется в любом случае. Таким образом, приведенный фрагмент программы изменит значение переменной x на его абсолютное значение и присвоит переменной abs новое значение x.

Если в случае истинности условия необходимо выполнить несколько операторов, их можно заключить в фигурные скобки:

if (x 0) { x = -x; cout "Изменить значение x на противоположное по знаку"; } abs = x;

Теперь если x отрицательно, то не только его значение изменится на противоположное, но и будет выведено соответствующее сообщение. Фактически, заключая несколько операторов в фигурные скобки, мы сделали из них один сложный оператор или блок. Прием заключения нескольких операторов в блок работает везде, где нужно поместить несколько операторов вместо одного.

Условный оператор можно расширить для проверки нескольких условий:

if (x 0) cout "Отрицательная величина"; else if (x 0) cout "Положительная величина"; else cout "Ноль";

Конструкций else if может быть несколько.

Хотя любые комбинации условий можно выразить с помощью оператора if, довольно часто запись становится неудобной и запутанной. Оператор выбора switch используется, когда для каждого из нескольких возможных значений выражения нужно выполнить определенные действия. Например, предположим, что в переменной code хранится целое число от 0 до 2, и нам нужно выполнить различные действия в зависимости от ее значения:


switch (code) { case 0: cout "код ноль"; x = x + 1; break; case 1 : cout "код один"; y = y + 1; break; case 2: cout "код два"; z = z + 1; break; default: cout "Необрабатываемое значение"; }

В зависимости от значения code управление передается на одну из меток case. Выполнение оператора заканчивается по достижении либо оператора break, либо конца оператора switch. Таким образом, если code равно 1, выводится "код один", а затем переменная y увеличивается на единицу. Если бы после этого не стоял оператор break, то управление "провалилось" бы дальше, была бы выведена фраза "код два", и переменная z тоже увеличилась бы на единицу.

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

default: ; // пустой оператор, не выполняющий // никаких действий

Очевидно, что приведенный пример можно переписать с помощью оператора if:

if (code == 0) { cout "код ноль"; x = x + 1; } else if (code == 1) { cout "код один"; y = y + 1; } else if (code == 2) { cout "код два"; z = z + 1; } else { cout "Необрабатываемое значение"; }

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

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