Освой самостоятельно С++ за 21 день.
Шрифт:
Оператор switch
Синтаксис использования оператора switch следующий:
switch (выражение)
{
case ПервоеЗначение: оператор;
break;
case ВтороеЗначение: оператор;
break;
....
case Значение_N: оператор:
break;
default: оператор;
}
Оператор switch позволяет осуществлять ветвление программы по результатам выражения, возвращающего несколько возможных значений.
Если ни одно из значений операторов 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!
Анализ:
Таким образом, при вводе чисел от 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):