New sizeof typeof unchecked
(постфиксный)
(постфиксный)
j
(приведение
+ (унарный)
- (унарный)
++
--
типов)
(префиксный) префиксный)
★
/
о
о
+
-
«
»
<
>
1 =
<=
>=
Is
&
А
&&
1 I
1 1 ? ?
? :
=
ор=
=>
Наинизший
порядок
ГЛАВА 5 Управляющие операторы
В этой главе речь пойдет об операторах, управляющих ходом выполнения программы на С#. Управляющие операторы разделяются на три категории: операторы выбора , к числу которых относятся операторы if и switch, итерационные операторы, в том числе операторы цикла for, while, do-while и foreach, а также операторы перехода: break, continue, goto, return и throw. За исключением оператора throw, который является неотъемлемой частью встроенного в C# механизма обработки исключительных ситуаций, рассматриваемого в главе 13, все остальные управляющие операторы представлены в этой главе.
Оператор if
Оператор i f уже был представлен в главе 2, а здесь он рассматривается более подробно. Ниже приведена полная форма этого оператора:
if ( условие) оператор ; else оператор ;
где условие — это некоторое условное выражение, а оператор — адресат операторов if и else. Оператор else не является обязательным. Адресатом обоих операторов, if и else, могут также служить блоки операторов. Ниже приведена общая форма оператора i f, в котором используются блоки операторов.
if ( условие)
{
последовательность операторов
Else
{
последовательность операторов
}
Если условное выражение оказывается истинным, то выполняется адресат оператора if. В противном случае выполняется адресат оператора else, если таковой существует. Но одновременно не может выполняться и то и другое. Условное выражение, управляющее оператором if, должно давать результат типа bool.
Ниже приведен пример простой программы, в которой операторы if и else используются для того, чтобы сообщить, является ли число положительным или отрицательным.
// Определить, является ли числовое значение положительным или отрицательным.
Using System;
class PosNeg {
static void Main() { int i;
for(i=-5; i <= 5; i++) {
Console.Write("Проверка " + i + ": ");
if(i < 0) Console.WriteLine("отрицательное число"); else Console.WriteLine("положительное число");
}
}
}
Результат выполнения этой программы выглядит следующим образом.
Проверка
-5
Отрицательное
Число
Проверка
-4
Отрицательное
Число
Проверка
-3
Отрицательное
Число
Проверка
-2
Отрицательное
Число
Проверка
-1
Отрицательное
Число
Проверка
Положительное
Число
Проверка
Положительное
Число
Проверка
Положительное
Число
Проверка
Положительное
Число
Проверка
Положительное
Число
Проверка
Положительное
Число
Если в данном примере значение переменной i оказывается меньше нуля, то выполнятся адресат оператора if . В противном случае выполняется адресат оператора else, одновременно они не выполняются.
Вложенные операторы if
Вложенным называется такой оператор if, который является адресатом другого оператора if или же оператора else. Вложенные операторы if очень часто применяются в программировании. Что же касается их применения в С#, то не следует забывать, что любой оператор else всегда связан с ближайшим оператором if, т.е. с тем
Оператором if, который находится в том же самом блоке, где и оператор else, но не с другим оператором else. Рассмотрим следующий пример.
if (i == Ю) {
if (j < 20) -a = b; if(k > 100) с = d;
else a = с; // этот оператор else связан с оператором if(k > 100)
}
else a = d; // этот оператор else связан с оператором if(i == 10)
Как следует из комментариев к приведенному выше фрагменту кода, последний оператор else не связан с оператором if (j < 20), поскольку они не находятся в одном и том же блоке, несмотря на то, что этот оператор является для него ближайшим оператором if без вспомогательного оператора else. Напротив, последний оператор else связан с оператором if (i == 10). А внутренний оператор else связан с оператором i f (k > 100), поскольку этот последний является для него ближайшим оператором i f в том же самом блоке.
В приведенном ниже примере программы демонстрируется применение вложенного оператора if. В представленной ранее программе определения положительных и отрицательных чисел о нуле сообщалось как о положительном числе. Но, как правило, нуль считается числом, не имеющим знака. Поэтому в следующей версии данной программы о нуле сообщается как о числе, которое не является ни положительным, ни отрицательным.
// Определить, является ли числовое значение // положительным, отрицательным или нулевым.
Using System;
class PosNegZero { static void Main() { int i;
for(i=-5; i <= 5; i++) {
Console.Write("Проверка " + i + ": "); if(i < 0) Console.WriteLine("отрицательное число"); else if(i == 0) Console.WriteLine("число без знака"); else Console.WriteLine("положительное число");
}
}
}