If (Условие)
Оператор ветви «Да»;
else
Оператор ветви «Нет»;
Оператор if выполняется следующим образом. Сначала вычисляется выражение, записанное в условии. В результате его вычисления получается значение булевского типа. В первом случае, если значение есть true (истина), то выполняется < Оператор ветви «Да»>, указанный после ключевого слова then, иначе выполняется < Оператор ветви «Нет»>, указанный после ключевого слова else. Во втором случае, если результат вычисления выражения есть false (ложь), то выполняется оператор, следующий за оператором if.
Условие — это некоторое выражение, имеющее результат логического типа.
Условие всегда должно записываться в круглых скобках. Примеры записи условий:
if (a>b) — простое условие, используется операция сравнения;
if (a>0 && b>0 && c>0) — сложное условие, три операции отношения объединены в одно условие с помощью логической операции И.
Часто возникает необходимость выполнять в одной из ветвей (или в обеих ветвях) условного оператора несколько команд. В этом случае используется составной оператор.
Составной оператор – группа операторов, помещенных между скобок {}.
Например:
if (x>y)
{
max=x;
Console.Write("max=", max);
}
else
x=x+1;
В качестве оператора в одной ветви или в обеих ветвях могут быть использованы условные операторы. Такие операторы называются вложенными.
Например:
if (x>y)
{
if (x > z)
max=z;
Console.Write("max=", max);
}
else
x=x+1;
Примечание. Служебное слово else всегда ассоциируется с ближайшим по тексту if.
Пример 1. Определить, является ли заданное целое число кратным 3.
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.Write("Задайте n = ");
int n = int.Parse(Console.ReadLine());
if(n % 3 == 0)
Console.WriteLine("Число {0} кратно 3", n);
else
Console.WriteLine("Число {0} некратно 3", n);
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
2.6.2. Оператор выбора switch ..Case
Как мы выяснили, оператор if позволяет сделать выбор одного из двух возможных продолжений. Если вариантов выбора более двух, то можно использовать вложенные операторы if. Но это не всегда удобно. Когда счёт вариантов выбора идёт на десятки (а может быть, и на сотни!), тогда применение if становится совершенно неудобным. Для таких случаев рекомендуют использовать специальный оператор switch.
Оператор switch — это оператор для выбора одного из многих продолжений.
Схематично этот оператор можно изобразить так:
Формальная запись этого оператора на С# выглядит так:
switch(Выражение)
{
case Константа1: Операторы1; break;
case Константа2: Операторы2; break;
...................................
case КонстантаN: ОператорыN; break;
default:
Операторы по умолчанию; break;
}
Здесь Выражение — это любое выражение целого типа (чаще — просто переменная), например типа int. Так же допустимо в качестве Выражения использовать выражение символьного типа char или строкового типа string.
Далее в блоке за заголовком мы видим набор конструкций вида
case Константа: Операторы; break;
В них Константа — это константа того же типа, что и Выражение. Операторы — любые исполняемые операторы. Количество их произвольное, оформлять блоком не требуется.
Алгоритм работы оператора switch:
1. Вычисляется значение Выражения.
2. Затем среди рассмотренных выше конструкций ищется такая, которая начинается с Константы, равной значению Выражения. Если Константа найдена, то выполняются следующие за ней Операторы. Оператор break осуществляет выход из оператора switch. Если ни одна из Констант не равна значению Выражения, то выполняется ветвь default (по умолчанию), и оператор заканчивает работу.
Ветвь default в операторе switch может отсутствовать. В этом случае, если ни одна из ветвей не соответствует значению Выражения, то делается выход из оператора switch.
Количество вариантов в операторе switch ни чем не ограничено. В принципе, они все могут отсутствовать (как и ветвь default), то есть вполне можно написать:
switch(Выражение) { }
но фигурные скобки за заголовком должны быть всегда.
Пример 1. По номеру дня недели вывести на экране монитора название этого дня недели.
Возможный вариант решения:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Задайте номер недели:");
int n = int.Parse(Console.ReadLine());
switch(n)
{
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("Неверный номер для дня недели: {0}", n);
break;
}
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
}
}
Оператор goto
Этот оператор позволяет сделать переход в пределах текущего метода. Переход возможен как по ходу выполнения программы, так и в обратном направлении. Пример:
goto Metka;
// Любые операторы
// ...............
Metka:;
Здесь Metka — это идентификатор (метка), обозначающий то место в тексте программы, куда делается переход. Такая метка не требует описания (её и нельзя описывать!), задается по общим правилам и не может совпадать ни с ключевыми словами, ни с именами объектов программы.
В языке C# этот оператор используется редко. Необдуманное применение goto приводит к затруднению понимания текста программы. Как правило, если в тексте программы требуется использование этого оператора, то это означает слабую логику в проектировании алгоритма программы.
