Як працює switch

C++. Оператор вибору switch

Оператор вибору switch дозволяє вибрати один варіант ходу розв’язку задачі з декількох в залежності від значення виразу. Таким чином забезпечується багатонаправлене розгалуження.

Оператор switch може бути замінений оператором оператором if . Однак, у деяких випадках використання оператора switch може бути більш ефективним, ніж використання оператора оператора if .

2. Загальна форма опису оператора вибору switch . Ключові слова switch , case , break , default

Загальна форма запису оператора switch наступна

switch (вираз) < case константа1: послідовність_операторів1; break; case константа2: послідовність_операторів2; break; . case константаN: послідовність_операторівN; break; default послідовність_операторів; >
  • вираз – деякий вираз цілочисельного ( int ) або символьного типу ( char );
  • константа1 , константа2 , …, константаN – константні значення, з якими порівнюється значення виразу. Константні значення мають бути цілочисельного або символьного типу;
  • послідовність_операторів1 , послідовність_операторів2 , …, послідовність_операторівN – відповідна послідовність операторів (інструкцій), що зв’язані з відповідною умовою;
  • послідовність_операторів – послідовність операторів, яка виконується у випадку, коли не знайдено жодного співпадіння значення виразу зі значенням констант.

Оператор switch працює наступним чином. Спочатку обчислюється значення вираз . Потім це значення послідовно порівнюється з константами з заданого списку. Як тільки знайдене співпадіння для однієї з умов порівняння (гілка case ), виконується послідовність інструкцій, що зв’язані з цим порівнянням. Якщо не знайдено жодного співпадіння, то виконуються оператори, що слідують після ключового слова default .

Ключове слово case використовується для того, щоб вказати значення константи, при співпадінні з якою значення виразу, буде виконуватись відповідна послідовність операторів.

Операція break перериває (закінчує) виконання коду, що визначений інструкцією switch .

Операції, що розміщені після ключового слова default , виконуються в тому випадку, якщо жодна з case -констант не співпадає з результатом обчислення switch -виразу.

Ключове слово default та відповідна послідовніть операторів можуть бути опущені. У цьому випадку, якщо не виконується жодна з гілок після слова case , виконання передається наступному оператору, що слідує за оператором switch .

3. Приклади використання оператору вибору switch

Приклад 1. Дано значення n = 1..7, що є номером дня тижня. За значенням n визначити, вихідний цей день чи робочий. Результат записати в змінну fDayOff типу bool .

Фрагмент коду, що розв’язує дану задачу.

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

Інший, більш компактний варіант розв’язку даної задачі.

int day; bool fDayOff; day = 7; switch (day) < case 1: case 2: case 3: case 4: case 5: fDayOff = false; break; case 6: case 7: fDayOff = true; break; >

Ще один варіант розв’язку даної задачі

int day; bool fDayOff; day = 7; switch (day) < case 6: case 7: fDayOff = true; break; default: fDayOff = false; >

Приклад 2. Дано ціле число n = 1..3, яке є номером функції. За значенням змінної n обчислити значення відповідної функції:

Фрагмент коду, що розв’язує дану задачу з допомогою скороченої форми оператора switch .

int n; float f, x; n = 3; x = 3; switch (n) < case 1: f = -2*x*x-4; break; case 2: f = 5*x+2; break; case 3: f = 15-3*x; break; >
4. Особливості використання операції break в операторі switch

В операторі switch операція break не є обов’язковою.

Якщо операція break є присутньою, то відбувається вихід з оператору switch і виконання наступного за ним оператору. Якщо операція break у case -гілці відсутня, тоді виконуються усі оператори, що зв’язані з даною case -гілкою а також усі оператори, що слідують одразу після неї до тих пір, поки не зустрінеться інша інструкція break або не буде досягнуто кінець switch -оператора.

5. Вкладені інструкції switch . Загальна форма опису

Оператор switch може бути вкладеним в інший управляючий оператор, яким може бути:

  • оператор умовного переходу if ;
  • оператор вибору switch ;
  • оператор циклу for ;
  • оператор циклу while ;
  • оператор циклу do..while ;
  • оператор циклу foreach .

Кількість рівнів вкладення може бути довільною. Отже, і оператор switch може розміщуватись на довільному рівні вкладення.

Загальна форма опису вкладеної інструкції switch в іншій інструкції switch :

switch (вираз) < case константа1: послідовність_операторів1; break; case константа2: послідовність_операторів2; break; . case константаK; switch (вираз) < . >break; . case константаN: послідовність_операторівN; break; default послідовність_операторів; >

Зв’язані теми

JavaScript Інструкція Switch

Метод getDay() повертає день тижня як число між 0 та 6.

В цьому прикладі номер дня тижня використовується для обрахування назви дня тижня:

switch (new Date().getDay()) <
case 0:
day = “Sunday”;
break;
case 1:
day = “Monday”;
break;
case 2:
day = “Tuesday”;
break;
case 3:
day = “Wednesday”;
break;
case 4:
day = “Thursday”;
break;
case 5:
day = “Friday”;
break;
case 6:
day = “Saturday”;
>

Ключове слово break

Коли JavaScript досягає ключового слова break , він виходить із блоку switch.

Це зупинить виконання в середині блоку switch.

Не обов’язково обривати останній кейс в блоці switch. Блок все одно обривається (закінчується).

Примітка: Якщо ви опустите інструкцію break, наступний кейс буде виконано навіть якщо оцінка не відповідає кейсу.

Ключове слово default (за замовчуванням)

Ключове слово default визначає код для запуску, якщо немає відповідного кейсу:

Приклад

Метод getDay() поверне день тижня як число між 0 та 6.

Якщо сьогодні не Субота (6) і не Неділя (0), написати повідомлення за замовчуванням:

switch (new Date().getDay()) <
case 6:
text = “Сьогодні Субота”;
break;
case 0:
text = “Сьогодні Неділя”;
break;
default:
text = “З нетерпінням чекаю вихідних”;
>

Кейс default не обов’язково має бути останнім кейсом в блоці switch:

Приклад

switch (new Date().getDay()) <
default:
text = “З нетерпінням чекаю вихідних”;
break;
case 6:
text = “Сьогодні Субота”;
break;
case 0:
text = “Сьогодні Неділя”;
>

Якщо default не останній кейс в блоці switch, не забудьте завершити кейс default обривом (break).

Загальні блоки коду

Іноді вам може знадобитися, щоб в різних випадках перемикання (кейсах switch) використовувався один і той самий код.

В цьому прикладі кейси 4 та 5 сумісно використовують один і той самий блок коду, а 0 та 6 сумісно використовують інший блок коду:

Приклад

switch (new Date().getDay()) <
case 4:
case 5:
text = “Скоро вихідні”;
break;
case 0:
case 6:
text = “Це вихідні”;
break;
default:
text = “З нетерпінням чекаю вихідних”;
>

Деталі перемикання

Якщо одному кейсу відповідає кілька варіантів, обирається перший кейс.

Якщо відповідних варіантів не знайдено, програма переходить до мітки default (за замовчуванням).

Якщо мітки default не знайдено, програма переходить до інструкції(ій) після switch.

Строге порівняння

Switch кейси використовують строге порівняння (===).

Значення мають бути одного типу, щоб відповідати одне одному.

Строге порівняння може бути лише true, тільки якщо операнди одного типу.

В цьому прикладі збігу по x не буде:

Приклад

let x = “0”;
switch (x) case 0:
text = “Off”;
break;
case 1:
text = “On”;
break;
default:
text = “Значення не знайдено”;
>

ПАЛІТРА КОЛЬОРІВ

ПРИЄДНУЙТЕСЬ!

Зв’язок з адміном

Якщо ви хочете повідомити про помилку, а також внести пропозиції про роботу сайту, додати оголошення, рекламу на сайт і т.п., відправте адміну електронного листа на email:

Підручники

Довідники

Приклади

Веб-Сертифікати

Цей сайт оптимізований для навчання і тестування. Приклади можуть бути спрощені для поліпшення читання і базового розуміння. Навчальні посібники, посилання і приклади постійно переглядаються, щоб уникнути помилок, але ми не можемо гарантувати повну правильність і працездатність всього контенту. Використовуючи цей сайт, ви погоджуєтеся з тим, що прочитали і прийняли умови використання, cookie і політику конфіденційності.
Також ви можете абсолютно безкоштовно скачати офлайн версію сайту W3Schools українською архівом з GitHub і користуватися локально на своєму комп’ютері.
Також доступна версія сайту W3Schools англійською мовою.
Copyright 1999-2024 by Refsnes Data. All Rights Reserved.
Сайт створений і працює на фреймворку W3.CSS.

Related Post

Скільки коштує ліцензія нотаріуса в УкраїніСкільки коштує ліцензія нотаріуса в Україні

Яка плата здійснюється за видачу свідоцтва про право на зайняття нотаріальною діяльністю? Плата за видачу свідоцтва про право на зайняття нотаріальною діяльністю здійснюється у розмірі десяти неоподаткованих мінімумів доходів громадян