Добавить в цитаты Настройки чтения

Страница 42 из 502

<b>// Разделить только на четные, ненулевые значения.</b>

<b>using System;</b>

<b>class NoZeroDiv2 { </b>

<b>  static void Main() {</b>

<b>    for(int i = -5; i &lt; 6; i++)</b>

<b>      if(i != 0 ? (i % 2 == 0) : false)</b>

<b>        Console.WriteLine(&quot;100 / &quot; + i + &quot; равно &quot; + 100 / i);</b>

<b>  }</b>

<b>}</b>

Обратите внимание на оператор if в приведенной выше программе. Если значение переменной i равно нулю, то оператор if дает ложный результат. А если значение переменной i не равно нулю, то оператор if дает истинный результат, когда значение переменной i оказывается четным, и ложный результат, если оно нечетное. Благодаря этому допускается деление только на четные и ненулевые значения. Несмотря на то что данный пример служит лишь для целей демонстрации, подобные конструкции иногда оказываются весьма полезными.

Использование пробелов и круглых скобок

В выражении на C# допускается наличие символов табуляции и пробелов, благодаря которым оно становится более удобным для чтения. Например, оба приведенных ниже выражения, по существу, одинаковы, но второе читается легче.

<b>х=10/у*(127+х) ; </b>

<b>х = 10 / у * (127 + х) ;</b>

Скобки могут служить для группирования подвыражений, по существу, повышая порядок предшествования заключенных в них операций, как в алгебре. Применение лишних или дополнительных скобок не приводит к ошибкам и не замедляет вычисление выражения. Поэтому скобки рекомендуется использовать, чтобы сделать более ясным и понятным порядок вычисления как для самого автора программы, так и для тех, кто будет разбираться в ней впоследствии. Например, какое из двух приведенных ниже выражение легче читается?

<b>х = у/3-34*temp+127; </b>

<b>х = (у/3) - (34*temp) + 127;</b>

Предшествование операторов

В табл. 4.2 приведен порядок предшествования всех операторов в С#: от самого высокого до самого низкого. В таблицу включен ряд операторов, рассматриваемых далее в этой книге.

Таблица 4.2. Предшествование операторов в C#

ГЛАВА 5 Управляющие операторы

В этой главе речь пойдет об операторах, управляющих ходом выполнения программы на С#. Управляющие операторы разделяются на три категории: операторы выбора, к числу которых относятся операторы if и switch, итерационные операторы, в том числе операторы цикла for, while, do-while и foreach, а также операторы перехода: break, continue, goto, return и throw. За исключением оператора throw, который является неотъемлемой частью встроенного в C# механизма обработки исключительных ситуаций, рассматриваемого в главе 13, все остальные управляющие операторы представлены в этой главе.

Оператор if

Оператор if уже был представлен в главе 2, а здесь он рассматривается более подробно. Ниже приведена полная форма этого оператора:

<b>if (<i>условие) оператор</i>; else <i>оператор</i>;</b>

где условие — это некоторое условное выражение, а оператор — адресат операторов if и else. Оператор else не является обязательным. Адресатом обоих операторов, if и else, могут также служить блоки операторов. Ниже приведена общая форма оператора if, в котором используются блоки операторов.

<b>if (<i>условие)</i></b>

<i><b>{</b></i>

<i><b>последовательность операторов</b></i>

<i><b>}</b></i>

<b>else</b>

<b>{</b>

<i><b>последовательность операторов</b></i>

<b>}</b>

Если условное выражение оказывается истинным, то выполняется адресат оператора if. В противном случае выполняется адресат оператора else, если таковой существует. Но одновременно не может выполняться и то и другое. Условное выражение, управляющее оператором if, должно давать результат типа bool.

Ниже приведен пример простой программы, в которой операторы if и else используются для того, чтобы сообщить, является ли число положительным или отрицательным.

<b>// Определить, является ли числовое значение положительным или отрицательным.</b>

<b>using System;</b>

<b>class PosNeg {</b>

<b>  static void Main() { </b>

<b>    int i;</b>

<b>    for(i=-5; i &lt;= 5; i++) {</b>

<b>      Console.Write(&quot;Проверка &quot; + i + &quot;: &quot;);</b>

<b>      if(i &lt; 0) </b>

<b>        Console.WriteLine(&quot;отрицательное число&quot;); </b>

<b>      else </b>

<b>        Console.WriteLine(&quot;положительное число&quot;);</b>

<b>    }</b>

<b>  }</b>

<b>}</b>