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

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


Оператор 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

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

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)

Перейти на страницу:

Похожие книги

Сущность технологии СОМ. Библиотека программиста
Сущность технологии СОМ. Библиотека программиста

В этой книге СОМ исследуется с точки зрения разработчика C++. Написанная ведущим специалистом по модели компонентных объектов СОМ, она раскрывает сущность СОМ, помогая разработчикам правильно понять не только методы модели программирования СОМ, но и ее основу. Понимание мотивов создания СОМ и ее аспектов, касающихся распределенных систем, чрезвычайно важно для тех разработчиков, которые желают пойти дальше простейших приложений СОМ и стать по-настоящему эффективными СОМ-программистами. Показывая, почему СОМ для распределенных систем (Distributed СОМ) работает именно так, а не иначе, Дон Бокс дает вам возможность применять эту модель творчески и эффективно для ежедневных задач программирования.

Дональд Бокс

Программирование, программы, базы данных / Программирование / Книги по IT