Инструкции выбора switch, case
Или
Else
Else
Else
{
Блок инструкций 2; //несколько действий
}
Фраза else может отсутствовать, т.к. это не обязательная часть инструкции if.
Если условие выполняется, то исполняется Блок инструкций 1, в противном случае исполняется Блок инструкций 2.
Фигурные скобки записываются в случае, если в блоке более, чем одна инструкция.
Выполняется инструкция if следующим образом:
1. Вычисляется значение условия (правда или ложь?);
2. Если условие истинно (true), то выполняются инструкции1.На этомвыполнение инструкций if завершается, инструкции, следующие за словом else, не будут выполнены. Если условие ложно (false), то выполняются инструкции, следующие за словом else, а инструкции за словом if игнорируются.
Задача. Поиск максимального числа из двух чисел x и y.
// 1-й вариант решения
int y, x, max;
x=12; y=5;
if (x>y) max=x;
else max=y;
Console.WriteLine("Максимальное "+ max);
Сокращенный формат if
Сокращенная форма используется для усеченного алгоритма, когда ветвь с альтернативным решением отсутствует.
|
|
if (условие) инструкция;
// 2-й вариант решения задачи поиска
максимального числа их двух чисел:
int y, x, max;
x=12; y=5;
max=x;
if(x<y) max=y;
Console.WriteLine("Максимальное "+ max);
Вложенные инструкции if; else …
Применяются для множественного ветвления. Синтаксис инструкции:
if (условие_1)
{
Блок инструкций 1;
}
if (условие_2)
{
Блок инструкций 2;
}
{
Блок инструкций 3;
}
Фраза else может отсутствовать, т.к. т.к. это не обязательная часть инструкции if.
Если условие1 выполняется, то исполняется Блок инструкций 1, в противном случае проверяется условие2. Если оно выполняется, то исполняется Блок инструкций 2, в противном случае Блок инструкций 3.
В случае, если в какой-либо ветви необходимо выполнить одну инструкцию, то блочная инструкция в виде фигурных скобок { } в этой ветви не нужна.
Пример.
Задача. Вычислить значение функции:
Ответы решения задачи:
При помощи логических операторов & («И») и | («ИЛИ») из простых условий можно строить сложные.
Например:
1) 2)
Примеры записи условия:
|
|
Применяется для множественного ветвления на произвольное число направлений.
С его помощью можно выбрать вариант из множества альтернатив.
Если в условии задачи имеется сложный набор условий, то использование вложенных инструкций if … else приводит к громоздкому коду. Для упрощения кода лучше воспользоваться инструкцией switch (переключение)
Инструкция switch выбирает нужное действие из списка возможных, размещенных во фразах выбора case ( выбор ).
|
|
Общий формат записи:
switch (выражение)
{
case константа_1: инструкция действия; инструкция прерывания;
case константа_2: инструкция действия; инструкция прерывания;
……..
default:: инструкция действия; инструкция прерывания;
}
Выполняются инструкции следующим образом:
1. Сначала вычисляется значение выражения.
2. Полученное значение выражения последовательно сравнивается с константами из списка констант секций case.
3. Если значение выражения (или переменной) совпадает с константой из списка, то выполняется соответствующая этому списку группа инструкций в секции case до тех пор, пока не встретиться инструкция прерывания.
4. Если значение выражения (или переменной) не совпадает ни с одной константой из списка, то, выполняется последовательность инструкций, следующая за default.
Синтаксис инструкций switch, case позволяет не писать 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();
}
}
}
Результаты работы программы:
...