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



         

Инструкция switch - часть 3


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

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

switch ( ch ) {

    case 'a':

        ++aCnt;

        break;

    case 'e':

        ++eCnt;

        break;

    case 'i':

        ++iCnt;

        break;

    case 'o':

        ++oCnt;

        break;

    case 'u':

        ++uCnt;

        break;

}

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

При каком условии программист может отказаться от инструкции break и позволить программе провалиться

сквозь несколько меток case? Одним из таких случаев является необходимость выполнить одни и те же действия для двух или более меток. Это может понадобиться потому, что с case всегда связано только одно значение. Предположим, мы не хотим подсчитывать, сколько раз встретилась каждая гласная в отдельности, нас интересует только суммарное количество всех встретившихся гласных. Это можно сделать так:

int vowelCnt = 0;

// ...

switch ( ch )

{

    // любой из символов a,e,1,o,u

    // увеличит значение vowelCnt

    case 'a':

    case 'e':

    case 'i':

    case 'o':

    case 'u':

        ++vowe1Cnt;

        break;

}

Некоторые программисты подчеркивают осознанность своих действий тем, что предпочитают в таком случае писать метки на одной строке:

switch ( ch )

{

    // допустимый синтаксис

    case 'a': case 'e':




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