Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Desktop_1 / ЛК / Лекция 5УсловОперат.doc
Скачиваний:
41
Добавлен:
10.06.2015
Размер:
181.76 Кб
Скачать
    1. Инструкции выбора switch, case

Применяется для множественного ветвления на произвольное число направлений.

С его помощью можно выбрать вариант из множества альтернатив.

Если в условии задачи имеется сложный набор условий, то использование вложенных инструкций ifelse приводит к громоздкому коду. Для упрощения кода лучше воспользоваться инструкцией switch (переключение)

Инструкция switch выбирает нужное действие из списка возможных, размещенных во фразах выбора case (выбор).

Общий формат записи:

switch (выражение)

{

case константа_1 : инструкция действия; инструкция прерывания;

case константа_2 : инструкция действия; инструкция прерывания;

……..

default:: инструкция действия; инструкция прерывания;

}

Выполняются инструкции следующим образом:

1. Сначала вычисляется значение выражения.

2. Полученное значение выражения последовательно сравнивается с константами из списка констант секций case.

3. Если значение выражения (или переменной) совпадает с константой из списка, то выполняется соответствующая этому списку группа инструкций в секции case  до тех пор, пока не встретиться инструкция прерывания.

4. Если значение выражения (или переменной) не совпадает ни с одной константой из списка, то, выполняется последовательность инструкций, следующая за default.

Синтаксис инструкций switchcase позволяет не писать default и соответствующую последовательность инструкций. В этом случае, если значение выражения не совпадает ни с одной константой из всех списков, то выполняется следующая за case инструкция программы.

Элемент выражения (помещено в круглые скобки) возвращает константу. Должен быть целочисленного типа (например, char, byte, int), значение которого определяет дальнейший ход выполнения программы.

Выражения, имеющие тип с плавающей точкой не разрешены.

Иногда в качестве управляющего 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 ch;

Console.WriteLine("Введите букву "); //ввод данных с клавиатуры

ch=Convert.ToChar(Console.ReadLine()); /*преобразует вводимое с клавиатуры число в виде строки в символьный тип данных*/

switch (ch) // переменная символьного типа

{

case 'A': Console.WriteLine("ch содержит A"); break;

case 'B': Console.WriteLine("ch содержит В"); break;

case 'C': Console.WriteLine("ch содержит 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,5:f} *",x,y);

Console.WriteLine(" *********************** ");

Console.ReadKey();

}

Соседние файлы в папке ЛК