Чтение онлайн

на главную - закладки

Жанры

Освой самостоятельно С++ за 21 день.

Либерти Джесс

Шрифт:

Оператор switch

Синтаксис использования оператора switch следующий:

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

{

case ПервоеЗначение: оператор;

break;

case ВтороеЗначение: оператор;

break;

....

case Значение_N: оператор:

break;

default: оператор;

}

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

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

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

Пример 1:

switch (choice)

{

case 0:

cout << "Zero!" << endl;

break;

case 1:

cout << "One!" << endl;

break;

case 2:

cout << "Two!" << endl;

break;

default:

cout << "Default!" << endl;

break;

}

Пример 2:

switch (choice)

{

case 0:

case 1:

case 2:

cout << "Less than 3!" << endl;

break;

case 3:

cout << "Equals 3!" << endl;

break;

default:

cout << "Greater that 3!" << endl;

}

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

Листинг 7.16. Использование оператора switch

1: //Листинг 7.16.

2: // Использование оператора switch

3:

4: #include <iostream.h>

5:

6: int main

7: {

8: unsigned short int number;

9: cout << "Enter а number between 1 and 5: ";

10: cin >> number;

11: switch (number)

12: {

13: case 0: cout << "Too small, sorry!";

14: break;

15: case 5: cout << "Good job!\n"; // fall through

16: case 4: cout << "Nice Pick!\n"; // fall through

17: case 3: cout << "Excellent!\n"; // fall through

18: case 2: cout << "Masterful!\n"; // fall through

19: case 1: cout << "Incredible!\n";

20: break;

21: default: cout << "Too large!\n";

22: break;

23: }

24: cout << "\n\n";

25: return 0;

26: }

Результат:

Enter a number between 1 and 5: 3

Excellent!

Masterful!

Incredible!

Enter a number between 1 and 5: 8

Too large!

Анализ:

Сначала программа предлагает ввести число. Затем введенное число обрабатывается оператором switch. Если вводится 0, то это соответствует значению оператора case из строки 13 и на экран выводится сообщение Too small, sorry!, после чего оператор break завершает выполнение конструкции switch. Если вводится число 5, управление передается в строку 15 и выводится соответствующее сообщение. Затем выполняется строка 16, в которой также выводится сообщение, и так до строки 20. В этой строке оператор break завершает выполнение блока с оператором switch.

Таким образом, при вводе чисел от 1 до 5 на экран будет выводиться ряд сообщений. Если же вводится число, превышающее 5, выполняется строка 21 с оператором default, в которой выводится сообщение Too large!.

Обработка комманд менб с помощью оператора switch

Вернемся к теме циклов с оператором for(;;). Такие конструкции называют бесконечными циклами, поскольку, если выполнение такого цикла не прервать оператором break, он будет работать бесконечно. Циклы подобного типа удобно использовать для обработки команд меню (листинг 7.17). Пользователь выбирает одну из предложенных команд, затем выполняется определенное действие и осуществляется возврат в меню. Так продолжается до тех пор, пока пользователь не выберет команду выхода.

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

Листинг 7.17. Пример бесконечного цикла

1: //Листинг 7.17.

2: //Обработка диалога с пользователем

3: //посредством бесконечного цикла

4: #include <lostream,h>

5:

6: // прототипы функций

7: int menu;

8: void DoTaskOne;

9: void DoTaskMany(int);

10:

11: int main

12: {

13:

14: bool exit = false;

15: for (;;)

16: {

17: int choice = menu;

18: switch(choice)

19: {

20: case (1):

21: DoTaskOne;

22: break;

23: case (2):

24: DoTaskOne(2);

25: break;

26: case (3):

27: DoTaskOne(3);

28: break;

29: case (4):

Поделиться:
Популярные книги

Жена со скидкой, или Случайный брак

Ардова Алиса
Любовные романы:
любовно-фантастические романы
8.15
рейтинг книги
Жена со скидкой, или Случайный брак

Невеста вне отбора

Самсонова Наталья
Любовные романы:
любовно-фантастические романы
7.33
рейтинг книги
Невеста вне отбора

Жена моего брата

Рам Янка
1. Черкасовы-Ольховские
Любовные романы:
современные любовные романы
6.25
рейтинг книги
Жена моего брата

Адмирал южных морей

Каменистый Артем
4. Девятый
Фантастика:
фэнтези
8.96
рейтинг книги
Адмирал южных морей

Прорвемся, опера! Книга 3

Киров Никита
3. Опер
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Прорвемся, опера! Книга 3

Релокант. По следам Ушедшего

Ascold Flow
3. Релокант в другой мир
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Релокант. По следам Ушедшего

Неудержимый. Книга XVI

Боярский Андрей
16. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XVI

Русь. Строительство империи 2

Гросов Виктор
2. Вежа. Русь
Фантастика:
попаданцы
альтернативная история
рпг
5.00
рейтинг книги
Русь. Строительство империи 2

Законы Рода. Том 4

Flow Ascold
4. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
5.00
рейтинг книги
Законы Рода. Том 4

Полковник Империи

Ланцов Михаил Алексеевич
3. Безумный Макс
Фантастика:
альтернативная история
6.58
рейтинг книги
Полковник Империи

Сотник

Ланцов Михаил Алексеевич
4. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Сотник

Последняя Арена 7

Греков Сергей
7. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Последняя Арена 7

Дракон - не подарок

Суббота Светлана
2. Королевская академия Драко
Фантастика:
фэнтези
6.74
рейтинг книги
Дракон - не подарок

Плохой парень, Купидон и я

Уильямс Хасти
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Плохой парень, Купидон и я