437.86K
Category: programmingprogramming

14

1.

Оператор switch-case
Конструкция switch-case позволяет сравнить некоторое выражение с набором
значений. Она имеет следующую форму:
После ключевого слова switch в скобках идет сравниваемое выражение. Значение
этого выражения последовательно сравнивается со значениями после оператора сase.
И если совпадение будет найдено, то будет выполняться определенный блок сase.

2.

Оператор if/else
Оператор switch

3.

4.

2. Лейблы
1. Оператор

5.

Оператор switch
Сначала пишем ключевое слово switch за которым следует выражение, с которым мы
хотим работать. Обычно это выражение представляет собой только одну
переменную, но это может быть и нечто более сложное, например, математическое
выражение .
Значение этого выражения последовательно сравнивается со значениями после
оператора сase. И если совпадение будет найдено, то будет выполняться
определенный блок сase.
Стоит отметить, что сравниваемое выражение в switch должно представлять один из
целочисленных или символьных типов (не может быть вещественным).

6.

7.

Лейблы case
Первый вид лейбла — это case (или просто "кейс"), который объявляется с
использованием ключевого слова case и имеет константное выражение.
Константное выражение, находящееся после ключевого слова case, проверяется на
равенство с выражением, находящимся возле ключевого слова switch. Если они
совпадают, то тогда выполняется код под соответствующим кейсом.
Все выражения case должны производить уникальные значения!

8.

Лейбл по умолчанию (default )
Второй тип лейбла — это лейбл по умолчанию (так называемый "default case"),
который объявляется с использованием ключевого слова default. Код под этим
лейблом выполняется, если ни один из кейсов не соответствует выражению switch.
Лейбл по умолчанию является необязательным.
В одном switch может быть
только один default.
Обычно
его
объявляют
самым последним в блоке
switch.

9.

Одна из самых каверзных вещей в switch — это последовательность выполнения
кода. Когда кейс совпал (или выполняется default), то выполнение начинается с
первого стейтмента, который находится после соответствующего кейса и
продолжается до тех пор, пока не будет выполнено одно из следующих условий
завершения:
Достигнут конец блока switch.
Выполняется оператор return.
Выполняется оператор goto.
Выполняется оператор break.
Обратите внимание, если ни одного из этих условий завершения не будет, то
выполняться будут все кейсы после того кейса, который совпал с выражением
switch.

10.

11.

В этом случае будет выполняться оператор case 2:, так как переменная x=2. Однако
так как этот блок case не завершается оператором break, то после его завершения
будет выполняться набор инструкций после case 3: даже несмотря на то, что
переменная x по прежнему равна 2. В итоге мы получим следующий консольный
вывод:
Когда выполнение переходит из одного кейса в следующий, то это называется fallthrough. Программисты почти никогда не используют fall-through, поэтому в редких
случаях, когда это все-таки используется — программист оставляет комментарий, в
котором сообщает, что fall-through является преднамеренным.

12.

Последовательность выполнения кода
fall-through (проваливаться)

13.

Оператор break
Когда компилятор встречает оператор break, то выполнение кода переходит из
switch на следующую строку после блока switch. Рассмотрим вышеприведенный
пример, но уже с корректно вставленными операторами break:
Чтобы избежать выполнения последующих блоков case/default, в конце каждого
блока ставится оператор break.

14.

Оператор break

15.

Задание 1
Дано целое число (от пользователя) в диапазоне 1-7.
Вывести строку – название дня недели,
соответствующее данному числу (1 – понедельник, 2 –
вторник и т.д.).

16.

Еще одна странность в switch заключается в том, что вы можете
использовать несколько стейтментов под каждым кейсом, не определяя
новый блок:

17.

Совмещение условий
Можно определять для нескольких меток case один набор инструкций:

18.

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

19.

Задачи 6
English     Русский Rules