Ветвления

1. Операторы ветвеления

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

2. Инструкция if

Входные данные, которые приводятся к булевому типу называются условием. Условие помещают за оператором if в круглых скобках. Если условие приводится к true, то выполняется код в фигурных скобках (ветка).

Если условие приводится к false, код в фигурных скобках будет пропущен.

2.1. Инструкция if...else

Расширяет синтаксис оператора if тем, что в случае если условие приводится к false, выполнится код в фигурных скобках после оператора else.

При true, оператор else и связанный с ним программный блок, игнорируются.

2.2. Инструкция else...if

Расширяет синтаксис оператора if...else тем, что после else снова добавляется оператор if. На первый взгляд код из множества подобных вложений кажется сложным. На самом деле, все ответвления - это результат false на все предыдущие вопросы.

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

3. Тернарный оператор

Есть конструкция, похожая на if...else, с упрощенным синтаксисом, называемая тернарный оператор (ternary - тройной).

Такая конструкция работает следующим образом:

  • Вычисляется условие

  • Если условие истинно (true), вычисляется выражение после ?, в противном случае значение после :

  • Результат вычисленного выражения возвращается

Перепишем пример используя тернарный оператор.

Запишем операцию поиска большего числа.

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

4. Инструкция switch

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

Значение выражения - строка или число, которое сравнивается со всеми значениями case. Если совпадения не произошло, управление передается default. Оператор break в завершении каждого блока case ставят чтобы прервать дальнейшие проверки и сразу перейти к коду за инструкцией switch.

Если оператор break будет отсутствовать, то после того как выполнится какое-то условие case, все последующие за ним блоки кода будут выполняться один за другим, что может привести к нежелательным последствиям при неверном применении.

Last updated