logo
Харви Дейтел, Пол Дейтел Как программировать на С++ / 02-Deitel-Стр-115-214

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

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

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

В этой программе пользователь вводит буквенные оценки. Внутри заго­ловка while

while ( ( grade = cin.get() ) != EOF )

сначала выполняется присваивание, заключенное в скобки. Функция cin.get() читает один символ, введенный с клавиатуры, и сохраняет его в целой переменной grade . Использованная в cin.get() нотация с точкой будет объяс­нена в главе 6, «Классы». Обычно символы хранятся в переменной типа char. Однако важной особенностью С++ является то, что символы могут храниться в любом целом типе данных, поскольку они представляются в компьютере как однобайтовое целое. Таким образом, мы можем трактовать символ или как целое, или как символ в зависимости от его использования. Например, оператор

cout « "Символ (" « 'a' « ") имеет значение " « (int) 'a' « endl;

напечатает символ а и его целочисленное представление: Символ (а) имеет значение 97

Целое число 97 является численным отображением символа в компью­тере. Многие компьютеры сегодня используют множество символов ASCII (American Standard Code for Information Interchange), в котором букве 'a' в нижнем регистре соответствует число 97. Список символов ASCII и их де­сятичных значений представлен в приложении В.

128