Оператор выбора
7.4.3.7 использовать оператор выбора при решении задач
Знает синтаксис оператора выбора
Объясняет назначение команд switch, case, default, break
Применяет оператор выбора при решений задач
Для чего используется оператор выбора?�Как выглядит синтаксис и блок-схема оператора выбора?
Учащиеся рисуют на доске
Переменная-селектор
Оператор выбора switch в C++
Оператор switch используется, когда нужно сравнить одну переменную с множеством возможных значений.
Это более удобная и читаемая альтернатива длинным цепочкам if-else if.
1. Синтаксис и ключевые слова.
Синтаксис выглядит следующим образом:
switch (переменная) {
case значение1:
// код, если переменная == значение1
break;
case значение2:
// код, если переменная == значение2
break;
default:
// код, если ни одно значение не подошло
}
2. Назначение команд
Что делает switch (на пальцах)
switch = “выбери один из вариантов”
Как в жизни:
есть список вариантов → выбрали один → выполнили действие
Пример:
3. Пример решения задачи
Задача: Программа получает на вход номер дня недели (1–7) и выводит его название.
#include <iostream>
using namespace std;
int main() {
int day;
cout << "Введите номер дня (1-7): ";
cin >> day;
switch (day) {
case 1: cout << "Понедельник"; break;
case 2: cout << "Вторник"; break;
case 3: cout << "Среда"; break;
case 4: cout << "Четверг"; break;
case 5: cout << "Пятница"; break;
case 6: cout << "Суббота"; break;
case 7: cout << "Воскресенье"; break;
default: cout << "Ошибка: такого дня нет!";
}
return 0;
}
Почему это удобно?
int day; bool fDayOff; day = 3;�switch (day) �{ � case 1: fDayOff = false; break; � case 2: fDayOff = false; break;� case 3: fDayOff = false; break;� case 4: fDayOff = false; break; � case 5: fDayOff = false; break; � case 6: fDayOff = true; break; � case 7: fDayOff = true; break; �}
Пример 1. Даны значения n = 1..7, что есть номером дня недели. По значению n определить, выходной этот день или рабочий. Результат записать в переменную fDayOff типа bool.
Каким будет результат данного кода?
Как поменять код, чтобы пользователь мог ввести самостоятельно день недели?
Как повлияет использование в данном коде оператора default?
#include <iostream>
using namespace std;
int main() {
int day;
bool fDayOff;
cin >> day; // пользователь вводит
switch(day) {
case 1: fDayOff = false; break;
case 2: fDayOff = false; break;
case 3: fDayOff = false; break;
case 4: fDayOff = false; break;
case 5: fDayOff = false; break;
case 6: fDayOff = true; break;
case 7: fDayOff = true; break;
}
cout << fDayOff;
return 0;
}
Зачем нужен default
Если пользователь введёт:
❗ Программа ничего не сделает (ошибка логики)
#include <iostream>
using namespace std;
int main() {
int day;
bool fDayOff;
cout << "Введите номер дня недели (1-7): ";
cin >> day;
switch(day) {
case 1:
case 2:
case 3:
case 4:
case 5:
fDayOff = false;
break;
case 6:
case 7:
fDayOff = true;
break;
default:
cout << "Ошибка: такого дня недели нет!";
return 0;
}
cout << "Выходной? (1 - да, 0 - нет): " << fDayOff;
return 0;
}
Оператор default срабатывает в том случае,
если значение переменной не совпало ни с одним из вариантов case.
Объясните, как работает данный код?
Объясните, каким будет результат для следующих входных данных?
int num;
cin>>num;�switch (num%2) �{ � case 0:cout<<“aaa”; break; � case 1: cout<<“bbb”; break; � �}
INPUT | OUTPUT |
11 | ? |
24 | ? |
Есть ли необходимость добавить в данный код команду default?
Рефлексия
Обсуждение сложных моментов
Запишите данный код используя операторы выбора
int main()
{
int i;
cin >> i;
if (i==1) {
cout<<“Ответ равен 1”;
} else if (i==2) {
cout<<“Ответ равен 2”;
} else if (i==3) {
cout<<“Ответ равен 3”;
}
}
int main()
{
int i;
cin >> i;
switch(i) {
case 1:
cout<<" Ответ равен 1";
break;
case 2:
cout<<" Ответ равен 2 ";
break;
case 3:
cout<<" Ответ равен 3";
break;
}
}
Практическая работа
Решаем задания по схеме:
1. Если решили одну задачу из уровни А, переходите к заданию из уровни В. Иначе решаете следующее задание из этого же уровня.
2. Рисуем блок-схему для любого одного задания.
3. Если выполнили задания 1-2, решаете все оставшиеся задачи
Уровень А | Уровень В | Уровень С |
Написать программу, позволяющую по последней цифре числа определить последнюю цифру его квадрата | Написать программу, которая бы по введенному номеру единицы измерения (1 — дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр) и длине отрезка L выдавала бы соответствующее значение длины отрезка в метрах
| Составить программу, вычисляющую площадь геометрической фигуры. Тип фигуры определяется символом (с): О – окружность, T – равнобедренный прямоугольный треугольник и K – квадрат. Целое число, вводимое вслед за символом определяет соответствующий элемент для вычисления площади (для окружности это радиус, для треугольника – длина катета, для квадрата – длина стороны). |
Составить программу, которая по порядковому номеру месяца определяет, к какому времени года он принадлежит. | Даны два действительных положительных числа х и у. Арифметические действия над числами пронумерованы (1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление). Составить программу, которая по введенному номеру выполняет то или иное действие над числами |
|
Для каждой введенной цифры (0 — 9) вывести соответствующее ей название на английском языке (0 — zero, 1 — one, 2 — two,... ). |
|
|
#include <iostream>
using namespace std;
int main() {
int n, d;
cin >> n;
d = n % 10;
switch(d) {
case 0: cout << 0; break;
case 1: cout << 1; break;
case 2: cout << 4; break;
case 3: cout << 9; break;
case 4: cout << 6; break;
case 5: cout << 5; break;
case 6: cout << 6; break;
case 7: cout << 9; break;
case 8: cout << 4; break;
case 9: cout << 1; break;
}
return 0;
}
#include <iostream>
using namespace std;
int main() {
int month;
cin >> month;
switch(month) {
case 12:
case 1:
case 2:
cout << "Зима";
break;
case 3:
case 4:
case 5:
cout << "Весна";
break;
case 6:
case 7:
case 8:
cout << "Лето";
break;
case 9:
case 10:
case 11:
cout << "Осень";
break;
default:
cout << "Ошибка";
}
return 0;
}
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
switch(n) {
case 0: cout << "zero"; break;
case 1: cout << "one"; break;
case 2: cout << "two"; break;
case 3: cout << "three"; break;
case 4: cout << "four"; break;
case 5: cout << "five"; break;
case 6: cout << "six"; break;
case 7: cout << "seven"; break;
case 8: cout << "eight"; break;
case 9: cout << "nine"; break;
default: cout << "Ошибка";
}
return 0;
}
1. Перевод длины в метры
Условие
Есть:
Нужно перевести в метры:
#include <iostream>
using namespace std;
int main() {
int k;
double L, m;
cin >> k >> L;
switch(k) {
case 1: m = L / 10; break;
case 2: m = L * 1000; break;
case 3: m = L; break;
case 4: m = L / 1000; break;
case 5: m = L / 100; break;
default:
cout << "Ошибка";
return 0;
}
cout << m;
return 0;
}
Выполнить действие над двумя числами
Условие
Даны:
Нумерация:
#include <iostream>
using namespace std;
int main() {
double x, y;
int n;
cin >> x >> y >> n;
switch(n) {
case 1: cout << x + y; break;
case 2: cout << x - y; break;
case 3: cout << x * y; break;
case 4:
if (y != 0)
cout << x / y;
else
cout << "На ноль делить нельзя";
break;
default:
cout << "Ошибка";
}
return 0;
}
Вычисление площади фигуры
Условие
Тип фигуры задаётся символом:
Потом вводится число:
Формулы
#include <iostream>
using namespace std;
int main() {
char c;
double a, S;
cin >> c >> a;
switch(c) {
case 'O':
S = 3.14 * a * a;
cout << S;
break;
case 'T':
S = a * a / 2;
cout << S;
break;
case 'K':
S = a * a;
cout << S;
break;
default:
cout << "Ошибка";
}
return 0;
}
Рефлексия
Обсуждение сложных моментов