2

Конструкция с оператором множественного выбора. Синтаксис 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

Удачи в выполнении практических заданий!