Вы находитесь на странице: 1из 4

Оператор множественного выбора switch

Очень часто в процессе написания программы требуется писать длинные if-else конструкции,
например, когда мы получаем какой-либо ключ от пользователя; если вы пишете игру, то
придется проверять на какую кнопку нажал игрок (вправо, влево, пробел и т.д.).

В этой статье мы узнаем как удобно оформлять подобные конструкции с помощью switch case,
а так же узнаем немного о enum типах, которые хорошо подходят для работы со switch case.
Конструкция switch-case — это удобная замена длинной if-else конструкции, которая сравнивает
переменную с несколькими константными значениями, например int или char.

Переменная в скобках сравнивается со значениями, описанными после ключевого слова case.


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

Данная программа выведет a = 4.

Значения для сравнения, описанные после case могут быть только константами, поэтому
следующий вариант использования switch-case — неверен:
При попытке скомпилировать данную программу, вы получите подобное сообщение:

Блок default — необязателен, но он полезен для обработки исключительных ситуации.

Следующая программа демонстрирует один из возможных вариантов использования switch-


case:

Эта программа показывает простой способ обработки вводимых пользователем данных.


Минус данной программы в том, что она дает только одну попытку, без права на ошибку   .
Это легко исправить, заключив весь блок switch-case в цикл. Но может возникнуть вопрос:
внутри switch-case есть break, не прервет ли он выполнение цикла? Нет, break прервет только
выполнение блока switch.

Сравнение switch-case с if-else

Если у вас возникают проблемы с пониманием того, как работает switch-case, посмотрите на
следующую if-else конструкцию, она работает точно так же, как и switch

Если мы можем сделать то же самое с помощью if-else, зачем вообще нужен switch? Главное
преимущество этой конструкции в том, что нам понятно, как работает программа: единственная
переменная контролирует поведение программы. В случае с if-else, придется внимательно
читать каждое условие.

Задание №1

У Маши имеется пять шариков разных цветов. Каждый цвет пронумерован в след.знач:
1 – красный;

2 – зелёный;

3 – белый;

4 – синий;

5 – Оранжевый;

Составить выбор при помощи конструкции switch таким образом, чтобы при введении цифры в ответ
выводилось название цвета закреплённый за соответствующей цифрой.

Задание №2. игра «Напёрстки»

В этой задаче нам понадобится функция присвоения для переменной рандомного


значения rand()
а так же оператор деления по модулю (%).

Пример:
1 + rand() % 3
Зачем мы вначале ставим 1+ ?
Так как компьютер всегда начинает счёт с нуля (а в нашем случае должно быть от 1 до
3 включительно), мы таким образом к нулю добавляем единицу.
Далее текущее число мы делим по модулю на 3, то есть мы должны получить остаток от
деления. (Подробнее смотреть в источниках о «Деление по модулю в с++»)
Таким образом мы получим значение не больше 3х

Задача программы (игры) такова:


- У нас есть три напёрстка;
- Компьютер задаёт рандомное значение от 1 до 3 (под каким из напёрстков скрывается
шарик);
- Игрок/пользователь вводит значение от 1 до 3 (Целесообразно написать защиту,
чтобы игрок не мог ввести другие значения кроме 1,2,3) (использовать switch);
- Если игрок угадывает под каким напёрстком находится шарик, выводится сообщение о
победе, если же не угадывает, то, соответственно о поражении;