Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lesson_1_2.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
280 Кб
Скачать
☆
  1. Структура множественного выбора switch

Предположим, что вы создаете экранное меню, которое предлагает пользователю на выбор один из четырех возможных вариантов, например, "дешевый", "умеренный", "дорогой", "экстравагантный" и "непомерный". Вы можете расширить последовательность 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.

Каждая метка case в C++ работает только как метка строки, а не граница между выборами.

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

switch(choice)

{

case 'a':

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

break;

case 'r’* :

case ‘R’: report () ;

break;

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

}

Поскольку сразу за case 'a' не следует break, управление программой передается следующей строке, которая является оператором, следующим за case 'A'!

Оператор switch достаточно прост в обращении, однако необходимо знать некоторые особенности его работы:

1. Если в case используются символьные значения, они должны указываться в одинарных кавычках, если целочисленные, то без кавычек.

2. Оператор default может располагаться в любом месте системы switch, выполняться он все равно будет в том случае, если нет ни одного совпадения. Однако правилом "хорошего тона" является указывать default в конце всей конструкции

После самого последнего оператора в списке (будь то case или default) оператор break можно не указывать. Оператор default можно вообще не указывать, в случае, если не найдется совпадений, просто ничего не произойдет

С помощью идущих подряд case достигается регистронезависимость. То есть,неважно, какую именно букву введет пользователь - заглавную или строчную.

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

while (choice !=5)

{

switch (choice)

{

case 1: cout << "Алексей: пилит" << endl;

break;

……

default: cout << "Попробуйте выбрать снова" << endl;

break;

}

cin >> choice;

}

После самого последнего оператора в списке (будь то case или default) оператор break можно не указывать Оператор default можно вообще не указывать, в случае, если не найдется совпадений, просто ничего не произойдет

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]