С++ для начинающих




Инструкция switch


Длинные цепочки инструкций if-else, наподобие приведенной в конце предыдущего раздела, трудны для восприятия и потому являются потенциальным источником ошибок. Модифицируя такой код, легко сопоставить, например, разные else и if. Альтернативный метод выбора одного их взаимоисключающих условий предлагает инструкция switch.

Для иллюстрации инструкции switch рассмотрим следующую задачу. Нам надо подсчитать, сколько раз встречается каждая из гласных букв в указанном отрывке текста. (Общеизвестно, что буква e – наиболее часто встречающаяся гласная в английском языке.) Вот алгоритм программы:

1.      Считывать по одному символу из входного потока, пока они не кончатся.

2.      Сравнить каждый символ с набором гласных.

3.      Если символ равен одной из гласных, прибавить 1 к ее счетчику.

4.      Напечатать результат.

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

aCnt: 394

eCnt: 721

iCnt: 461

oCnt: 349

uCnt: 186

Инструкция switch состоит из следующих частей:

  • ключевого слова switch, за которым в круглых скобках идет выражение, являющееся условием:
  • char ch;

    while ( cm >> ch )

        switch( ch )

    • набора меток case, состоящих из ключевого слова case и константного выражения, с которым сравнивается условие. В данном случае каждая метка представляет одну из гласных латинского алфавита:
    • case 'a':

      case 'e':

      case 'i':

      case 'o':

      case 'u':

      • последовательности инструкций, соотносимых с  метками case. В нашем примере с каждой меткой будет сопоставлена инструкция, увеличивающая значение соответствующего счетчика;
      • необязательной метки default, которая является аналогом части else инструкции if-else. Инструкции, соответствующие этой метке, выполняются, если условие не отвечает ни одной из меток case. Например, мы можем подсчитать суммарное количество встретившихся символов, не являющихся гласными буквами:



      • Содержание  Назад  Вперед