Иногда в качестве управляющего switch – выражения используется просто переменная.
Case – константы должны быть литералами, тип которых совместим с типом заданного выражения. При этом никакие две case – константы в одной switch конструкции не могут иметь идентичных значений.
В качестве инструкции прерывания действия используют break, которая прерывает выполнение инструкции switch. Альтернативой может быть и инструкции goto, которую обычно применяют для перехода в другое место программы.
Пример. Программа запрашивает день недели. В зависимости от введенного номера выводится строка из списка с комментарием.
using System;
…
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int d;
Console.Write("Введите день недели ");
d= Convert.ToInt16(Console.ReadLine());//преобразует вводимое с клавиатуры число в виде строки в целый тип данных
switch (d)
{
case 1: Console.WriteLine("Понедельник - рабочий день"); break;
case 2: Console.WriteLine("Вторник - рабочий день"); break;
|
|
case 3: Console.WriteLine("Среда - рабочий день"); break;
case 4: Console.WriteLine("Четверг - рабочий день"); break;
case 5: Console.WriteLine("Пятница - рабочий день"); break;
case 6: Console.WriteLine("Суббота - самоподготовка"); break;
case 7: Console.WriteLine("Воскресенье - выходной день"); break;
default: Console.WriteLine("Неверный ввод данных. Введите 1<=d<=7"); break;
}
Console.ReadKey();
}
}
}
Результаты работы программы:
...
Задача. Программа принимает с клавиатуры код клавиш A, B, C и в зависимости от ее номера выводит на дисплей текстовый комментарий.
static void Main(string[] args)
{
char q;
Console.WriteLine("Введите букву "); //ввод данных с клавиатуры
q =Convert.ToChar(Console.ReadLine()); /*преобразует вводимое с клавиатуры число в виде строки в символьный тип данных*/
switch (q) // переменная символьного типа
{
case 'A': Console.WriteLine("q содержит A"); break;
case 'B': Console.WriteLine("q содержит В"); break;
case 'C': Console.WriteLine("q содержит C"); break;
}
Console.ReadKey();
}
Необязательная инструкция default отсутствует.
В общем виде, когда надо выполнить несколько действий, операторs switch, case записывается следующим образом:
switch (выражение)
{
case константа_n1:
{
//инструкции1;
}
case константа_n2:
{
//инструкции2;
}
case константа_nn:
|
|
{
//инструкции nn;
}
default:
{
//инструкции;
}
}
В консольном приложении вводить данные можно программно, присваивая переменным или константам значения в соответствии с объявленным ранее типом или непосредственно с клавиатуры при исполнении программы. Например:
x = Convert.ToDouble(Console.ReadLine()); //вещественный тип
d = Convert.ToInt16(Console.ReadLine()); //целый тип
z = Convert.ToInt32(Console.ReadLine()); //целый тип
ch=Convert.ToChar(Console.ReadLine()); //символьный тип
Методы содержат процедуру чтения с последующим образованием новой строки (ReadLine()) и функцию преобразования вводимых с клавиатуры данных, воспринимаемых в виде строки в тип данных, соответствующих объявленному диапазону.
Задача. Используя оператор выбора, вычислить значения функции:
static void Main(string[] args)
{
int A;
double x,y;
Console.WriteLine("Введите x ");
x= Convert.ToDouble(Console.ReadLine());
M:Console.WriteLine("Введите параметр А ");
A= Convert.ToInt16(Console.ReadLine());
switch (A)
{
case 0:y=Math.Cos(x); break;
case 1:y=(x-10)*8; break;
case -1:y=A*7*x; break;
default:
{
Console.WriteLine("A введено не верно!");
goto M;
}
}
Console.WriteLine(" А=" + A);
Console.WriteLine(" *********************** ");
Console.WriteLine(" * x= {0,4} * y= {1,6:f} *",x,y);
Console.WriteLine(" *********************** ");
Console.ReadKey();
}