Конструкция с оператором множественного выбора. Синтаксис C#
Из этой лекции вы узнаете о конструкции с оператором множественного выбора switch…case.
Помимо широко используемой конструкции с оператором условного перехода «if», в ветвлении применяется конструкция с оператором множественного выбора switch…case. По своему функционалу, Switch…case, похож на расширенную форму конструкции с условным оператором «if», if…else if…else, но в отличии от оператора «if», оператор switch не производит вычисления логического выражения, а сравнивает полученное значение с константой в операторе «case».
Так как операция сравнения возможна только между одинаковыми типами данных, то и тип данных в переменной и константе должен быть одинаковыми.
Тип данных константы, определяется неявно, по формату записи. Целочисленные — тип данных int, с плавающей точкой — double, набор символов заключенных в двойные кавычки — string, true или false — bool.
Получив на вход значение, оператор switch сравнивает его с константами оператора case. Найдя совпадения, переходит к выполнению программного кода в соответствующем блоке. После того как программный код выполнен, оператор — break прекращает работу оператора switch и выполнение возвращается следованию. Для случаев, когда не найдено ни одно соответствие константы сравниваемому значению, применяется блок— default. Если такой блок отсутствует, выполнение возвращается следованию.
Конструкция Switch…case имеет следующий вид
switch(variable) — Сравниваемая с константами переменная
{
case 1: — Оператор case с константой 1
Блок кода, выполняемый в случае, если переменная равна 1
break;
case 2: — Оператор case с константой 2
Блок кода, в случае если переменная равна 2
break;
default:
Блок кода, выполняемый если переменная отлична от всех констант
break;
}
Как видите конструкция множественного выбора switch…case достаточна проста и в отличие от if…else if…else нет необходимости строить конструкцию с множеством ветвлений, что сокращает количество ошибок и повышает удобочитаемость текста.
Напишем программу, производящую арифметические действия над двумя числами
static void Main(string[] args)
{
int a = 5;
int b = 3;
Console.WriteLine("Для операции сложения нажмите +, для вычитания -");
string variable = Console.ReadLine();
switch (variable)
{
case "+":
Console.WriteLine("Сумма чисел: " + (a + b));
break;
case "-":
Console.WriteLine("Разница чисел: " + (a - b));
break;
default:
Console.WriteLine("Операция указана не верно");
break;
}
}
Зачастую сравниваемое значение состоит из нескольких символов и у пользователя появляется возможность несколькими способами набрать одно и тоже слово или строку. К примеру, вместо заглавной буквы указать строчную, или вообще допустить синтаксическую ошибку при наборе, что приведет к неверному результату в операции сравнения.
В таких случаях, применяется подмена значения неоднозначной трактовки, числовым значением.
К примеру, программа, показывающая блюда меню на завтрак, обед, ужин
static void Main(string[] args)
{
Console.Write("Посмотреть блюда на завтрак — нажмите 1,");
Console.Write(" на обед — нажмите 2,");
Console.WriteLine(" на ужин — нажмите 3");
int variable = int.Parse(Console.ReadLine());
switch (variable)
{
case 1:
Console.WriteLine("Омлет");
break;
case 2:
Console.WriteLine("Курица");
break;
case 3:
Console.WriteLine("Рыба");
break;
default:
Console.WriteLine("Операция указана не верно");
break;
}
}
В блоках конструкции swith…case, так же как и в блоках конструкции с оператором if, можно размещать блоки программного кода.
Программа переводящая значение температуры по Цельсию в значение по Фаренгейту и Кельвину.
static void Main(string[] args)
{
double c = 25;
Console.Write("Температура по Фаренгейту — нажмите 1,");
Console.WriteLine(" по Кельвину — нажмите 2");
int variable = int.Parse(Console.ReadLine());
switch (variable)
{
case 1:
double f=c * 9 / 5 + 32;
Console.WriteLine("Температура по Фаренгейту — " + f);
break;
case 2:
double k = c + 273.15;
Console.WriteLine("Температура по Кельвину — " + k);
break;
default:
Console.WriteLine("Операция указана не верно");
break;
}
}
В заключении.
Конструкция ветвления swith…case удобна своей простотой и удобочитаемостью, поэтому нашла применения в виде различных меню консольных программ или при выборе значения из некоторого списка. Во избежание ввода неверного значения сравниваемой переменной, рекомендуется приводить неоднозначно трактуемые значение к более упрощенной форме. К примеру, подмену строкового значения числовым.
На этом занятие закончено.
Вы можете самостоятельно найти задачи для закрепления теоретического материала или для получения задач с ответами отправьте письмо на basicprog@mail.ru
Удачи в выполнении практических заданий!