русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


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


Дата додавання: 2014-04-22; переглядів: 1348.


Оператор switch іноді називають перемикачем. Він призначений для вибору одного з декількох альтернативних варіантів у разі розгалуження процесу розв’язання задачі. Структура оператора така:

 

switch ( вираз_цілого_типу ) {

case константа_1: оператори;

case константа_2: оператори;

case константа_n: оператори;

default: оператори;

}

 

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

Оператор виконує такі дії:

1) обчислює значення виразу, який керує вибором варіанта продовження процесу виконання програми;

2) це значення послідовно порівнюється зі значеннями констант вибору, доку не буде знайдено відповідну константу;

3) якщо знайдено варіант, константа вибору якого збігається зі значенням виразу, то виконуються оператори цього варіанта і всі наступні внутрішні оператори switch;

4) якщо значення виразу не збігається з жодною із констант вибору, а до складу switch входить альтернативний варіант default, то виконуються оператори варіанту default;

5) якщо в операторі немає міток, які збігаються зі значеннями виразу вибору і відсутній варіант default, то жодний з внутрішніх операторів не виконується, керування передається наступному за switch оператору.

Приклад програми. Вивести на екран назву дня тижня по його номеру.

 

#include <iostream>

using namespace std;

int main(){

int a;

cin >> a;

switch ( a ) {

case 1: cout << "Monday" << endl;

case 2: cout << "Tuesday" << endl;

case 3: cout << "Wednesday" << endl;

case 4: cout << "Thursday" << endl;

case 5: cout << "Friday" << endl;

case 6: cout << "Saturday" << endl;

case 7: cout << "Sunday" << endl;

default: cout << "Wrong day number" << endl;

}

}

 

Число, яке вводить користувач програми, буде збережене в змінній а. При виконанні операторі switch значення змінної а буде порівняно з константами після case. Якщо вони рівні, управляння буде передане у відповідний рядок програми, будуть виконані всі оператори, які записані після відповідної мітки. Тобто, якщо користувач введе число 6, то будуть виконані оператори

 

cout << "Saturday" << endl;

cout << "Sunday" << endl;

cout << "Wrong day number" << endl;

 

Якщо нас це не влаштовує, то необхідно використовувати оператор break, який перериває виконання оператора switch і передає управління наступному за switch оператору. Наступна програма буде працювати коректно:

 

#include <iostream>

using namespace std;

int main(){

enum week_days {Mon = 1, Tue, Wed, Thu, Fri, Sat, Sun};

int a;

cin >> a;

switch ( a ) {

case Mon: cout << "Monday" << endl; break;

case Tue: cout << "Tuesday" << endl; break;

case Wed: cout << "Wednesday" << endl; break;

case Thu: cout << "Thursday" << endl; break;

case Fri: cout << "Friday" << endl; break;

case Sat: cout << "Saturday" << endl; break;

case Sun: cout << "Sunday" << endl; break;

default: cout << "Wrong day number" << endl;

}

}

 

Внутрішніми операторами switch можуть бути довільні оператори, зокрема можна вкладати один оператор switch в інший. Наприклад, в програмі користувач вибирає пункт меню і команду цього пункту меню. Нехай пункт меню буде заданий символом, а команда – цілим числом. Програма буде мати такий вигляд:

 

#include <iostream>

using namespace std;

int main(){

char menu_item;

int command;

cout << "Menu Item: "; cin >> menu_item;

cout << "Command: "; cin >> command;

switch ( menu_item ) {

case 'F':

case 'f':

switch ( command ) {

case 1: cout << "F 1" << endl; break;

case 2: cout << "F 2" << endl; break;

case 3: cout << "F 3" << endl; break;

} break;

case 'E':

case 'e':

switch ( command ) {

case 1: cout << "E 1" << endl; break;

case 2: cout << "E 2" << endl; break;

} break;

case 'H':

case 'h':

switch ( command ) {

case 1: cout << "H 1" << endl; break;

case 2: cout << "H 2" << endl; break;

} break;

}

}

 

Вибір пункту меню має бути виконаний при вводі користувачем як маленької, так і великої літери. В програмі для цього записані два варіанти вибору підряд, у першого з них немає власного оператора. Тому перехід на будь який з них буде призводити до виконання однакових операторів.


<== попередня лекція | наступна лекція ==>
Умовний оператор if | Оператори циклу. Цикл з параметром. Оператор for


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн