Часто возникающая в программировании задача – выбор одного варианта из многих. Это можно сделать с помощью групп операторов if…else. Однако более удобный способ – использование оператора switch, общий формат которого таков:
switch (switch_expression)
{
case constant1: statement1; [break;]
case constant2: statement2; [break;]
. . .
case constantN: statementN; [break;]
[default: statement N+1;]
}
Оператор switch выполняется так. Сначала вычисляется значение выражения switch_expression. Тип значения должен быть одним из целых – char, int, unsigned int, long int и long unsigned. Вычисленное значение сравнивается со значениями констант или константных выражений constant1,…, constantN. При совпадении значения switch_expression с constanti, выполняется оператор statementi. Затем управление передается на оператор сразу после switch, если в i-й ветви присутствует оператор break. В противном случае выполняются операторы в ветвях i+1, i+2 и так далее до тех пор, пока в них не встретится оператор break или не будет выполнен оператор statement N+1.
Если значение switch_expression не совпало ни с одной из констант constant1, …, consnantN, выполняется оператор в ветви, помеченной default. При ее отсутствии выполняется следующий после switch оператор.
Пример 4_4. Использование оператора switch
#include "stdafx.h"
using namespace System;
int main()
{ wchar_t x;
Console::WriteLine("Введите первую букву имени функции");
Console::WriteLine("S- Sin\nC – Cos\nA – Atan");
x = Convert::ToChar(Console::ReadLine());
switch (x)
{
case 's':
case 'S':
Console::WriteLine("Вычисление синуса в радианах");
break;
case 'c':
case 'C':
Console::WriteLine("Вычисление косинуса в радианах");
break;
case 'a':
case 'A':
Console::WriteLine("Вычисление арктангенса");
Console::WriteLine(" в радианах");
break;
default:
Console::WriteLine("Ошибка");
break;
}
Console::WriteLine("Конец программы");
Console::ReadLine();
return 0;
}
Результат работы программы (при вводе значения ‘C’):
Введите первую букву имени функции
С <Enter>
Вычисление косинуса в радианах
Конец программы
Пример 4_5. Использование оператора switch (без операторов break):
#include "stdafx.h"
using namespace System;
int main()
{ wchar_t x;
Console::WriteLine("Введите первую букву имени функции");
Console::WriteLine("S- Sin\nC – Cos\nA – Atan");
x = Convert::ToChar(Console::ReadLine());
switch (x)
{
case 's':
case 'S':
Console::WriteLine("Вычисление синуса в радианах");
//break;
case 'c':
case 'C':
Console::WriteLine("Вычисление косинуса в радианах");
//break;
case 'a':
case 'A':
Console::Write("Вычисление арктангенса");
Console::WriteLine(" в радианах");
// break;
default:
Console::WriteLine("Ошибка");
//break;
}
Console::WriteLine("Конец программы");
Console::ReadLine();
return 0;
}
Результат работы программы (при вводе значения ‘C’):