ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 3) онлайн

Оператор switch

Если в вашей программе присутствует большое дерево ветвлений и все ветвле- ния зависят от значения какой-либо одной переменной, то можно вместо ступен-

чатой последовательности конструкций if...else или else...if воспользоваться опе- ратором switch. Рассмотрим простой пример под названием PLATTERS:

 

// platters.cpp

// применение ветвления switch

#include <iostream>

using namespace std;

int main()

{

  int speed;              // скорость вращения грампластинки

  cout << "\nВведите число 33,45 или 78: ";

  cin >> speed;           // ввод скорости пользователем

  switch(speed)           // действия, зависящие от выбора скорости

  {

    case 33:              // если пользователь ввел 33

      cout << "Долгоиграющий формат\n";

      break;

    case 45:              // если пользователь ввел 45

      cout << "Формат сингла\n";

      break;

    case 78:              // если пользователь ввел 78

      cout << "Устаревший формат\n";

      break;

  }

  return 0;

}

 

Эта программа печатает одно из трех сообщений в зависимости от того, какое из чисел — 33, 45 или 78 — введет пользователь. Как наверняка знают люди стар- шего поколения, долгоиграющие пластинки (LP), содержащие большое количе- ство песен, имели скорость проигрывания, равную 33 оборотам в минуту; пла- стинки меньшего размера, рассчитанные на 45 оборотов в минуту, содержали по одной песне на каждой стороне; наконец, пластинки со скоростью 78 оборотов в минуту являлись предшественницами пластинок двух предыдущих форматов.

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

switch(speed)

 

Скобки ограничивают набор операторов case. Каждый раз за ключевым сло- вом case следует константа, после значения которой стоит двоеточие:

case 33:

 

Тип констант, употребляемых в операторах case, должен совпадать с типом переменной, стоящей в скобках оператора switch. На рис. 3.12 показан синтаксис оператора switch.

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

Вот пример работы программы PLATTERS:

Введите 33, 45 или 78: Формат сингла 45

 

33