Оператор Switch
Оператор switch також є однією з керуючих структур, що спрощує прийняття рішень у програмах. Він забезпечує ефективний спосіб оцінити вираз і виконати різні блоки коду залежно від значення цього виразу. Це особливо зручно при роботі з великою кількістю умов розгалуження.
В основному призначений для роботи з числовими значеннями, такими як цілі числа (int) та символи (char).
switch.h
12345678910111213141516switch (expression) { case value1: // Code to execute when expression matches value1 break; case value2: // Code to execute when expression matches value2 break; // More cases can be added as needed // Code to execute when expression matches valueN default: // Code to execute when none of the case labels match the expression }
-
Вираз обчислюється один раз, і програма переходить до відповідного
caseзалежно від значення виразу; -
Кожен
caseпредставляє певне значення або набір значень, з якими вираз може збігатися; -
Оператор
breakвикористовується для виходу з блоку switch після виконання коду для певного випадку; -
defaultє необов'язковим і використовується, коли жоден із зазначених випадків не збігається з виразом. Він виконує роль загального варіанту.
Припустимо, ви володієте рестораном і хочете надати меню на основі вказаних числових кодів. Ось кодова реалізація пунктів меню.
main.cpp
1234567891011121314151617181920212223242526#include <iostream> int main() { // try to change the value int menu_number = 1; switch (menu_number) { case 1: std::cout << "Pizza" << std::endl; break; case 2: std::cout << "Burger with fries" << std::endl; break; case 3: std::cout << "Pasta with meatballs" << std::endl; break; default: std::cout << "We don`t have this in our menu" << std::endl; break; } }
Так, це можна реалізувати за допомогою простого оператора if, і це виглядатиме приблизно так:
main.cpp
123456789101112131415161718192021222324#include <iostream> int main() { // try to change the value int menu_number = 1; if (menu_number == 1) { std::cout << "Pizza" << std::endl; } else if (menu_number == 2) { std::cout << "Burger with fries" << std::endl; } else if (menu_number == 3) { std::cout << "Pasta with meatballs" << std::endl; } else { std::cout << "We don`t have this in our menu" << std::endl; } }
Використання switch-оператора працюватиме так само, як і очікується, але загалом краще застосовувати саме switch, оскільки він забезпечує більш зрозумілий, читабельний і, що найважливіше, легший у підтримці та масштабований спосіб керування таким потоком виконання.
Пропуск ключового слова break у операторі switch може призвести до неочікуваної поведінки програми, оскільки код буде продовжувати виконання у наступних випадках. Однак навмисне опущення break може використовуватися для обробки кількох випадків у межах одного блоку коду. Такий підхід, відомий як fall-through, дозволяє обробляти пов’язані випадки разом.
main.cpp
12345678910111213141516171819202122#include <iostream> int main() { // change the number and look how it affect the output int number = 3; switch (number) { case 1: std::cout << '1' << std::endl; case 2: std::cout << '2' << std::endl; case 3: std::cout << '3' << std::endl; case 4: std::cout << '4' << std::endl; case 5: std::cout << '5' << std::endl; break; } }
Swipe to start coding
Ви створюєте систему тижневого планувальника, яка повертає назву дня тижня за його номером (1 — понеділок, 2 — вівторок тощо).
- Усередині функції
getDayNameвикористайте операторswitchдляdayNumber:- Для кожного випадку з
1до7присвойте відповідну назву дня ("Monday","Tuesday", ...,"Sunday") зміннійdayName. - Використовуйте оператор
breakпісля кожного випадку, щоб уникнути переходу до наступного. - Використайте випадок
default, щоб присвоїти значення"Invalid day", якщо вхідне значення не входить у діапазон від 1 до 7.
- Для кожного випадку з
- Поверніть значення змінної
dayNameз функції.
Приклад
getDayName(1) → "Monday"
getDayName(5) → "Friday"
getDayName(9) → "Invalid day number"
Рішення
solution.cpp
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Can you show me an example of a switch statement in code?
What happens if I forget to include a break statement in a switch case?
Can you explain more about the fall-through behavior in switch statements?
Awesome!
Completion rate improved to 7.69
Оператор Switch
Свайпніть щоб показати меню
Оператор switch також є однією з керуючих структур, що спрощує прийняття рішень у програмах. Він забезпечує ефективний спосіб оцінити вираз і виконати різні блоки коду залежно від значення цього виразу. Це особливо зручно при роботі з великою кількістю умов розгалуження.
В основному призначений для роботи з числовими значеннями, такими як цілі числа (int) та символи (char).
switch.h
12345678910111213141516switch (expression) { case value1: // Code to execute when expression matches value1 break; case value2: // Code to execute when expression matches value2 break; // More cases can be added as needed // Code to execute when expression matches valueN default: // Code to execute when none of the case labels match the expression }
-
Вираз обчислюється один раз, і програма переходить до відповідного
caseзалежно від значення виразу; -
Кожен
caseпредставляє певне значення або набір значень, з якими вираз може збігатися; -
Оператор
breakвикористовується для виходу з блоку switch після виконання коду для певного випадку; -
defaultє необов'язковим і використовується, коли жоден із зазначених випадків не збігається з виразом. Він виконує роль загального варіанту.
Припустимо, ви володієте рестораном і хочете надати меню на основі вказаних числових кодів. Ось кодова реалізація пунктів меню.
main.cpp
1234567891011121314151617181920212223242526#include <iostream> int main() { // try to change the value int menu_number = 1; switch (menu_number) { case 1: std::cout << "Pizza" << std::endl; break; case 2: std::cout << "Burger with fries" << std::endl; break; case 3: std::cout << "Pasta with meatballs" << std::endl; break; default: std::cout << "We don`t have this in our menu" << std::endl; break; } }
Так, це можна реалізувати за допомогою простого оператора if, і це виглядатиме приблизно так:
main.cpp
123456789101112131415161718192021222324#include <iostream> int main() { // try to change the value int menu_number = 1; if (menu_number == 1) { std::cout << "Pizza" << std::endl; } else if (menu_number == 2) { std::cout << "Burger with fries" << std::endl; } else if (menu_number == 3) { std::cout << "Pasta with meatballs" << std::endl; } else { std::cout << "We don`t have this in our menu" << std::endl; } }
Використання switch-оператора працюватиме так само, як і очікується, але загалом краще застосовувати саме switch, оскільки він забезпечує більш зрозумілий, читабельний і, що найважливіше, легший у підтримці та масштабований спосіб керування таким потоком виконання.
Пропуск ключового слова break у операторі switch може призвести до неочікуваної поведінки програми, оскільки код буде продовжувати виконання у наступних випадках. Однак навмисне опущення break може використовуватися для обробки кількох випадків у межах одного блоку коду. Такий підхід, відомий як fall-through, дозволяє обробляти пов’язані випадки разом.
main.cpp
12345678910111213141516171819202122#include <iostream> int main() { // change the number and look how it affect the output int number = 3; switch (number) { case 1: std::cout << '1' << std::endl; case 2: std::cout << '2' << std::endl; case 3: std::cout << '3' << std::endl; case 4: std::cout << '4' << std::endl; case 5: std::cout << '5' << std::endl; break; } }
Swipe to start coding
Ви створюєте систему тижневого планувальника, яка повертає назву дня тижня за його номером (1 — понеділок, 2 — вівторок тощо).
- Усередині функції
getDayNameвикористайте операторswitchдляdayNumber:- Для кожного випадку з
1до7присвойте відповідну назву дня ("Monday","Tuesday", ...,"Sunday") зміннійdayName. - Використовуйте оператор
breakпісля кожного випадку, щоб уникнути переходу до наступного. - Використайте випадок
default, щоб присвоїти значення"Invalid day", якщо вхідне значення не входить у діапазон від 1 до 7.
- Для кожного випадку з
- Поверніть значення змінної
dayNameз функції.
Приклад
getDayName(1) → "Monday"
getDayName(5) → "Friday"
getDayName(9) → "Invalid day number"
Рішення
solution.cpp
Дякуємо за ваш відгук!
single