Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прикладное программирование.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
439.97 Кб
Скачать

1.6.2 Оператор Switch. Пример меню с выбором действия (пример 7)

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

/////////////////////////////////////////////////////////////////////////////

// Прикладное программирование

// Пример 7. Пример работы оператора switch - меню с выбором действия

//

// Кафедра Прикладной и компьютерной оптики, http://aco.ifmo.ru

// СПб НИУ ИТМО

/////////////////////////////////////////////////////////////////////////////

// подключение библиотеки ввод-вывода

#include <iostream>

// подключение стандартного пространства имен для использования библиотек

using namespace std;

/////////////////////////////////////////////////////////////////////////////

// функция main начинает исполнение программы

void main()

{

// описание переменных

double a,b; // два вещественных числа для вычислений

int menu_number; // номер выбранного пункта меню

// ввод данных

cout<<"Enter two numbers: "; // запросить ввод

cin>>a>>b; // прочитать два введенных числа

// вывод меню

cout<<endl<<endl<<"Enter number of menu item: ";

cout<<"1. a+b"<<endl;

cout<<"2. a-b"<<endl;

cout<<"3. a*b"<<endl;

cout<<"4. a/b"<<endl;

// ввод номера пункта меню

cin>>menu_number;

// оператор выбора по номеру пункта меню

switch(menu_number)

{

// если menu_number==1

case 1:

{

cout<<"a+b="<<a+b<<endl;

// выход из оператора switch

break;

}

// если menu_number==2

case 2:

{

cout<<"a-b="<<a-b<<endl;

// выход из оператора switch

break;

}

// если menu_number==2

case 3:

{

cout<<"a*b="<<a*b<<endl;

// выход из оператора switch

break;

}

// если menu_number==2

case 4:

{

cout<<"a/b="<<a/b<<endl;

// выход из оператора switch

break;

}

// если ни один из предыдущих case не сработал

default :

{

cout<<"Wrong menu item"<<endl;

// оператор break не нужен, т.к. switch закончился

}

}

}

/////////////////////////////////////////////////////////////////////////////

Когда поток управления достигает оператора switch, программа оценивает следующее за switch управляющее выражение (в данном случае menu _ number). Оператор switch сравнивает значение управляющего выражения с каждой из меток case. Оператор break заставляет программу перейти к первому оператору после оператора switch.

Если в операторе switch не найдется ни одной метки case, совпадающей со значением управляющего выражения, исполняется вариант default. В операторе switch, не содержащем варианта default, программное управление в этом случае просто перешло бы к первому оператору после switch.

Те же самые действия можно было бы описать и при помощи операторов if – else if – else:

switch(menu_number)

{

case 1:

{

cout<<"a+b="<<a+b<<endl;

break;

}

case 2:

{

cout<<"a-b="<<a-b<<endl;

break;

}

case 3:

{

cout<<"a*b="<<a*b<<endl;

break;

}

case 4:

{

cout<<"a/b="<<a/b<<endl;

break;

}

default :

{

cout<<"Wrong menu item"<<endl;

}

}

if(menu_number==1)

{

cout<<"a+b="<<a+b<<endl;

}

else if(menu_number==2)

{

cout<<"a-b="<<a-b<<endl;

}

else if(menu_number==3)

{

cout<<"a*b="<<a*b<<endl;

}

else if(menu_number==4)

{

cout<<"a/b="<<a/b<<endl;

}

else

{

cout<<"Wrong menu item"<<endl;

}

Без операторов break всякий раз, когда в операторе switch обнаруживается соответствие, будут исполняться операторы и всех последующих меток case, пока не встретится оператор break или не будет достигнут конец switch.

switch(menu_number)

{

case 1:

{

cout<<"a+b="<<a+b<<endl;

}

case 2:

{

cout<<"a-b="<<a-b<<endl;

break;

}

case 3:

{

cout<<"a*b="<<a*b<<endl;

break;

}

case 4:

{

cout<<"a/b="<<a/b<<endl;

break;

}

default :

{

cout<<"Wrong menu item"<<endl;

}

}

if(menu_number==1)

{

cout<<"a+b="<<a+b<<endl;

}

if(menu_number==1 || menu_number==2)

{

cout<<"a-b="<<a-b<<endl;

}

else if(menu_number==3)

{

cout<<"a*b="<<a*b<<endl;

}

else if(menu_number==4)

{

cout<<"a/b="<<a/b<<endl;

}

else

{

cout<<"Wrong menu item"<<endl;

}