1 of 20

Оператор выбора

2 of 20

7.4.3.7 использовать оператор выбора при решении задач

Знает синтаксис оператора выбора

Объясняет назначение команд switch, case, default, break

Применяет оператор выбора при решений задач

3 of 20

Для чего используется оператор выбора?�Как выглядит синтаксис и блок-схема оператора выбора?

Учащиеся рисуют на доске

Переменная-селектор

4 of 20

Оператор выбора switch в C++

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

Это более удобная и читаемая альтернатива длинным цепочкам if-else if.

1. Синтаксис и ключевые слова.                

Синтаксис выглядит следующим образом:

switch (переменная) {

    case значение1:

        // код, если переменная == значение1

        break;

    case значение2:

        // код, если переменная == значение2

        break;

    default:

        // код, если ни одно значение не подошло

}

2. Назначение команд

  • switch: Начало конструкции. В скобках указывается переменная (целое число или символ), которую мы проверяем.
  • case: "Случай". Определяет конкретное значение, которое мы ищем.
  • break: Команда «выхода». Если её не поставить, программа продолжит выполнять код следующих веток case подряд, даже если условия там не совпадают.
  • default: Выполняется, если ни один из перечисленных case не подошел (аналог else).

  • switch — выбор варианта
  • case — конкретный вариант
  • break — остановка (чтобы не пошло дальше)
  • default — если ни один вариант не подошёл

Что делает switch (на пальцах)

 switch = “выбери один из вариантов”

Как в жизни:

есть список вариантов → выбрали один → выполнили действие

Пример:

  • Нажал кнопку 1 → одно действие
  • Нажал кнопку 2 → другое действие

5 of 20

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;

}

  • switch — выбор варианта
  • case — конкретный вариант
  • break — остановка (чтобы не пошло дальше)
  • default — если ни один вариант не подошёл

Почему это удобно?

  • Читаемость: Код выглядит аккуратным списком.
  • Скорость: В некоторых случаях switch работает быстрее, чем множество if.
  • Гибкость: Можно объединять несколько case (например, case 6: case 7: cout << "Выходной"; break;).

6 of 20

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?

7 of 20

#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

Если пользователь введёт:

  • 0
  • 8
  • 100

❗ Программа ничего не сделает (ошибка логики)

#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.

8 of 20

Объясните, как работает данный код?

9 of 20

Объясните, каким будет результат для следующих входных данных?

int num;

cin>>num;�switch (num%2) �{ � case 0:cout<<“aaa”; break; � case 1: cout<<“bbb”; break; � �}

INPUT

OUTPUT

11

?

24

?

Есть ли необходимость добавить в данный код команду default?

10 of 20

Рефлексия

Обсуждение сложных моментов

11 of 20

Запишите данный код используя операторы выбора

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;

}

}

12 of 20

Практическая работа

Решаем задания по схеме:

1. Если решили одну задачу из уровни А, переходите к заданию из уровни В. Иначе решаете следующее задание из этого же уровня.

2. Рисуем блок-схему для любого одного задания.

3. Если выполнили задания 1-2, решаете все оставшиеся задачи

13 of 20

Уровень А

Уровень В

Уровень С

Написать программу, позволяющую по последней цифре числа определить последнюю цифру его квадрата

Написать программу, которая бы по введенному номеру единицы измерения (1 — дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр) и длине отрезка L выдавала бы соответствующее значение длины отрезка в метрах

 

Составить программу, вычисляющую площадь геометрической фигуры. Тип фигуры определяется символом (с): О – окружность, T – равнобедренный прямоугольный треугольник и K – квадрат. Целое число, вводимое вслед за символом определяет соответствующий элемент для вычисления площади (для окружности это радиус, для треугольника – длина катета, для квадрата – длина стороны).

Составить программу, которая по порядковому номеру месяца определяет, к какому времени года он принадлежит.

Даны два действительных положительных числа х и у. Арифметические действия над числами пронумерованы (1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление). Составить программу, которая по введенному номеру выполняет то или иное действие над числами

 

Для каждой введенной цифры (0 — 9) вывести соответствующее ей название на английском языке (0 — zero, 1 — one, 2 — two,... ).

 

 

14 of 20

 

#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;

}

15 of 20

#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;​

}​

16 of 20

#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;

}

17 of 20

1. Перевод длины в метры

Условие

Есть:

  • номер единицы измерения
  • длина L

Нужно перевести в метры:

  • 1 — дециметр
  • 2 — километр
  • 3 — метр
  • 4 — миллиметр
  • 5 — сантиметр

#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;

}

18 of 20

Выполнить действие над двумя числами

Условие

Даны:

  • x
  • y
  • номер действия

Нумерация:

  • 1 — сложение
  • 2 — вычитание
  • 3 — умножение
  • 4 — деление

#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;

}

19 of 20

Вычисление площади фигуры

Условие

Тип фигуры задаётся символом:

  • O — окружность
  • T — равнобедренный прямоугольный треугольник
  • K — квадрат

Потом вводится число:

  • для окружности — радиус
  • для треугольника — катет
  • для квадрата — сторона

Формулы

  • Окружность: S = 3.14 * r * r
  • Треугольник: S = a * a / 2
  • Квадрат: S = a * a

#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;​

}​

20 of 20

Рефлексия

Обсуждение сложных моментов