русс | укр

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

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

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

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


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

Оператор switch


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


Предположим, что вы создаете экранное меню, которое предлагает пользовате­лю на выбор один из пяти возможных вариантов, например, “дешевый”, “умерен­ный”, “дорогой”, “экстравагантный” и “непомерный”. Вы можете расширить последо­вательность if else if else для обработки этих пяти альтернатив, но оператор C++ switch упрощает обработку выбора из большого списка. Ниже представлена общая форма оператора switch:

 

switch (целочисленное-выражение)

{

case метка1 : оператор (ы)

case метка2 : оператор (ы)

default : оператор(ы)

}

 

Оператор switch действует подобно маршрутизатору, который сообщает компь­ютеру, какую строку кода выполнять следующей.

По достижении оператора switch программа переходит к строке, которая помечена значением, соответствующим текущему значению целочисленное-выражение.

Например, если целочисленное - выражение имеет значение 4, то программа переходит к строке с меткой case 4. Как следует из названия, выражение целочисленное-выражение должно быть цело­численным. Также каждая метка должна быть целым константным выражением. Чаще всего метки бывают константами типа char или int, такими как 1 или ‘q’, либо же перечислителями. Если целочисленное-выражение не соответствует ни одной мет­ке, программа переходит к метке default. Метка default не обязательна. Если она опущена, а соответствия не найдено, программа переходит к оператору, следующему за switch (рис. 6.3).

Оператор switch в C++ отличается от аналогичных операторов в других языках, например, Pascal, в одном очень важном отношении. Каждая метка case в C++ рабо­тает только как метка строки, а не граница между выборами.

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



В листинге 6.10 показано, как с помощью switch и break реализовать простое меню. Для отображения возможных вариантов выбора в программе применяется функция showmenu (). Затем оператор switch выбирает действие на основе выбора пользователя.

 

#include <iostream>

using namespace std;

void showmenu(); // function prototypes

void report();

void comfort();

int main()

{

showmenu();

int choice;

cin >> choice;

while (choice != 5)

{

switch(choice)

{

case 1 : cout << "\a\n";

break;

case 2 : report();

break;

case 3 : cout << "The boss was in all day.\n";

break;

case 4 : comfort();

break;

default : cout << "That's not a choice.\n";

}

showmenu();

cin >> choice;

}

cout << "Bye!\n";

getchar();

getchar();

return 0;

}

 

void showmenu()

{

cout << "Please enter 1, 2, 3, 4, or 5:\n"

"1) alarm 2) report\n"

"3) alibi 4) comfort\n"

"5) quit\n";

}

void report()

{

cout << "It's been an excellent week for business.\n"

"Sales are up 120%. Expenses are down 35%.\n";

}

void comfort()

{

cout << "Your employees think you are the finest CEO\n"

"in the industry. The board of directors think\n"

"you are the finest CEO in the industry.\n";

}

 

 

Цикл while завершается, когда пользователь вводит 5.Ввод от 1до 4активизиру­ет соответствующий выбор из списка switch, а ввод значения б вызывает действие по умолчанию.

Обратите внимание, что для корректной работы программы вводиться должно целочисленное значение. Если, например, ввести букву, оператор ввода даст сбой, а цикл будет выполняться бесконечно вплоть до уничтожения программы. В таком случае лучше использовать символьный ввод.

Как отмечалось ранее, этой программе необходимы операторы break, чтобы ог­раничить выполнение определенной частью оператора switch. Вы можете удосто­вериться, что это именно так, удалив операторы break из листинга 6.10 и посмот­рев, как программа будет работать без них. Например, вы обнаружите, что ввод 2 заставит программу выполнить операторы, ассоциированные с метками 2, 3, 4 и default. C++ ведет себя подобным образом, потому что такое поведение иногда может быть полезным. Так, за счет этого можно легко использовать множественные метки. Например, предположим, что вы перепишете листинг 6.10, используя в каче­стве выборов меню и меток case символы вместо целых значений. В таком случае можно использовать символы как верхнего, так и нижнего регистра:

 

char choice;

cin >> choice;

while (choice != 'Q' && choice != 'q')

{

switch(choice)

{

case 'a'

case 'A' : cout << "\a\n"; break;

case ' r'

case 'R' : report(); break;

case '1'

case 'L' : cout << "The boss was break; in all day.\n"

case ' с'

case 'C' : comfort() ; break;

default : cout << "That's not a choice.\n";

}

showmenu(); cin >> choice;

}

 

 



<== предыдущая лекция | следующая лекция ==>
Альтернативные представления | Использование перечислителей в качестве меток


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


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

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

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


 


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

 
 

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

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