русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Использование перечислителей в качестве меток


Дата добавления: 2015-08-14; просмотров: 670; Нарушение авторских прав


В листинге 6.11 иллюстрируется применение enum для определения набора взаи­мосвязанных констант в операторе switch.

В общем случае входной поток cin не распознает перечислимые типы (он не может знать, как вы определите их), поэтому программа читает выбор как int.

Когда оператор switch сравнивает значение int с перечислимой меткой case, он приводит перечисление к типу int. Точно также перечисления приводятся к int в проверочном условии цикла while.

 

#include <iostream>

// create named constants for 0 - 6

enum {red, orange, yellow, green, blue, violet, indigo};

 

int main()

{

using namespace std;

cout << "Enter color code (0-6): ";

int code;

cin >> code;

while (code >= red && code <= indigo)

{

switch (code)

{

case red: cout << "Her lips were red.\n"; break;

case orange: cout << "Her hair was orange.\n"; break;

case yellow: cout << "Her shoes were yellow.\n"; break;

case green: cout << "Her nails were green.\n"; break;

case blue: cout << "Her sweatsuit was blue.\n"; break;

case violet: cout << "Her eyes were violet.\n"; break;

case indigo: cout << "Her mood was indigo.\n"; break;

}

cout << "Enter color code (0-6): ";

cin >> code;

}

cout << "Bye\n";

getchar();

getchar();

return 0;

}

 

 

 

Оба оператора — switch и if else — позволяют выбирать из списка альтернатив. Однако if else из них является более гибким оператором. Например, он позволяет обрабатывать диапазоны, как показано в следующем примере:

В отличие от этого, оператор switch не позволяет обрабатывать диапазоны. Каждая метка case оператора switch должна быть представлена одиночным значе­нием. К тому же значение должно быть целым (что включает char), поэтому опера­тор switch не может проверять значения с плавающей точкой. К тому же значение метки case должно быть константой. Если вам необходимо проверять диапазоны, выполнять проверку значений с плавающей точкой или сравнивать две переменные, то вам следует использовать if else.



Если же, однако, все альтернативы могут быть идентифицированы целочисленны­ми константами, то вы можете применять как switch, так и if else. А поскольку это та ситуация, для обработки которой специально был спроектирован оператор switch, его применение в этом случае более эффективно в смысле размера кода и скорости выполнения, если только речь не идет всего о паре возможных альтернатив выбора.

Если в конкретном случае можно использовать либо оператор switch,либо последова­тельность if else if,то обычная практика состоит в применении switch,когда имеется три или более альтернатив.



<== предыдущая лекция | следующая лекция ==>
Оператор switch | Операторы break и continue


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.515 сек.