Понедельник, 29.04.2024, 11:33
Главная Регистрация RSS поиск
Приветствую Вас, Гость
Меню сайта
Категории раздела
HTML [44]
Visual C++ и MFC [21]
c++ [78]
php [19]
Javascript [15]
C# [51]
загрузки [0]
XNA [10]
создание игр с помощью xna
Наш опрос
Каким языком программирования вы увлекаетесь
Всего ответов: 2420
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Реклама
Главная » Статьи » c++

Структура множественного выбора switch

Структура множественного выбора switch

Мы рассмотрели структуру с единственным выбором if (). Но порой алгоритм может содержать ряд альтернативных решений, причем некоторую переменную (или выражение) надо проверять отдельно для каждого постоянного целого значения, которое она может принимать, и в зависимости от результатов этой проверки должны выполняться различные действия. Для принятия подобных решений в C++ имеется структура множественного выбора switch ().

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

/* программа, выполняющая перевод буквенных оценок в цифровые */ 
#include <iostream.h>

void main() {
 char cRate;
 cout<<"Input your char-rate\n";
 cin>>cRate;
 switch (cRate) {
 case 'A':
 cout<<"Your rate is 5\n";
 break;
 case 'B':
 cout<<"Your rate is 4\n";
 break;
 case 'C':
 cout<<"Your rate is 3\n";
 break;
 case 'D':
 cout<<"Your rate is 2\n";
 break;
 default:
 cout<<"This rate isn't correct\n";
 }
}

Пользователь вводит оценку с клавиатуры. Когда он нажимает «Ввод» символ читается функцией cin>>. Далее начинает работать структура switch (). За ключевым словом switch следует в скобках имя переменной cRate. Это так называемое управляющее выражение. Предположим, пользователь ввел в качестве оценки букву «С». «С» автоматически сравнивается с каждым условием case в структуре switch. Если встречается совпадение (case 'С':), то выполняется оператор, следующий за этой меткой case. В случае буквы «С» на экран выводится сообщение «Your rate is 3» и работа структуры switch немедленно завершается по оператору break. Оператор break вызывает передачу программного управления на первый оператор после структуры switch. Оператор break используется потому, что в противном случае условия case в операторе switch работают совместно. Если везде в структуре switch не использовать break, тогда каждый раз, когда одно из условий case удовлетворяется, будут выполняться операторы всех последующих меток case. Если ни одно условие не выполнено, то выполняются операторы после метки default (умолчание), печатающие в нашей программе сообщение об ошибке.


Типичная ошибка программирования

Забывают вставить оператор break, когда он нужен в структуре switch().

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

Хороший стиль программирования

default в оператор switch. Случаи неудачных проверок в операторе switch без метки default будут игнорироваться. Включение метки default фиксирует внимание программиста на необходимости обрабатывать исключительную ситуацию. Но бывают ситуации, в которых никакой обработки по метке default не требуется.

case и default могут размещаться в структуре switch() в произвольном порядке, стоит учесть практику качественного программирования - помещать default в конце.

Если в структуре switch() предложение default помещено последним в списке, то оператор break в нем не требуется. Но некоторые программисты включают break и тут для четкости и для симметрии с другими случаями.

Отметим, что последовательное перечисление несколько меток (например, case 'D' : case 'd' :) позволяет выполнять один и тот же набор действий для разных значений проверяемого выражения

Когда используете структуру switch, помните, что она может применяться только для проверки на совпадение с константным целым выражением, т.е. с любой комбинацией символьных и целых констант, которая имеет целое постоянное значение. Символьная константа представляется как соответствующий символ, заключенный в одиночные кавычки, например, 'А'. Целая константа — просто целое число 

Категория: c++ | Добавил: slava (29.04.2011)
Просмотров: 5127 | Рейтинг: 3.0/3
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]