- •Этапы разработки программы и устранение ошибок
- •Показать на примере (на своей машине) процесс подготовки к написанию программы, первая Hello!
- •Объяснить программу, все детали.
- •Вывод данных с помощью cout, использование Escape-последовательностей
- •Типы данных (числовые, символьные, логические)
- •Переменные и константы (объявление и использование), правила составления имен
- •Литералы
- •Ввод данных с помощью cin
- •Виды операторов
- •Арифметические операции с числами. Инкремент. Декремент. Сокращенные арифметические формы
- •Преобразование типов
- •Логические операции (сравнения, равенства, объединения, отрицательная инверсия)
- •Операторы ветвления. Конструкция логического выбора if, тернарный оператор ?
- •Структура множественного выбора switch
Структура множественного выбора 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 можно вообще не указывать, в случае, если не найдется совпадений, просто ничего не произойдет
