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

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

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

Оператор цикла while

Еще одним оператором цикла в C# является оператор while. Ниже приведена общая форма этого оператора:

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

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

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

<b>// Вычислить порядок величины целого числа,</b>

<b>using System;</b>

<b>class WhileDemo {</b>

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

<b>    int num; </b>

<b>    int mag;</b>

<b>    num = 435679; </b>

<b>    mag = 0;</b>

<b>    Console.WriteLine(&quot;Число: &quot; + num);</b>

<b>    while(num &gt; 0) {</b>

<b>      mag++;</b>

<b>      num = num / 10;</b>

<b>    };</b>

<b>    Console.WriteLine(&quot;Порядок величины: &quot; + mag);</b>

<b>  }</b>

<b>}</b>

Выполнение этой программы дает следующий результат.

<b>Число: 435679</b>

<b>Порядок величины: 6</b>

Приведенный выше цикл while действует следующим образом. Сначала проверяется значение переменной num. Если оно больше нуля, то переменная mag, выполняющая роль счетчика порядка величины, инкрементируется, а значение переменной num делится на 10. Цикл повторяется до тех пор, пока значение переменной num остается больше нуля. Как только оно окажется равным нулю, цикл завершается, а в переменной mag остается порядок величины первоначального числового значения.

Как и в цикле for, в цикле while проверяется условное выражение, указываемое в самом начале цикла. Это означает, что код в теле цикла может вообще не выполняться, а также избавляет от необходимости выполнять отдельную проверку перед самим циклом. Данное свойство цикла while демонстрируется в следующем примере программы, где вычисляются целые степени числа 2 от 0 до 9.

<b>// Вычислить целые степени числа 2.</b>

<b>using System;</b>

<b>class Power {</b>

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

<b>    int e; </b>

<b>    int result;</b>

<b>    for (int i=0; i &lt; 10; i++) {</b>

<b>      result = 1; </b>

<b>      e = i;</b>

<b>      while (e &gt; 0) {</b>

<b>        result *= 2;</b>

        e--;

<b>      }</b>

<b>      Console.WriteLine (&quot;2 в степени &quot; + i + &quot; равно &quot; + result);</b>

<b>    }</b>

<b>  }</b>

<b>}</b>

Результат выполнения этой программы приведен ниже.

<b>2 в степени 0 равно 1</b>

<b>2 в степени 1 равно 2</b>

<b>2 в степени 2 равно 4</b>

<b>2 в степени 3 равно 8</b>

<b>2 в степени 4 равно 16</b>

<b>2 в степени 5 равно 32</b>

<b>2 в степени 6 равно 64</b>

<b>2 в степени 7 равно 128</b>

<b>2 в степени 8 равно 256</b>

<b>2 в степени 9 равно 512</b>

Обратите внимание на то, что цикл while выполняется только в том случае, если значение переменной е больше нуля. А когда оно равно нулю, как это имеет место на первом шаге цикла for, цикл while пропускается.

Оператор цикла do-while

Третьим оператором цикла в C# является оператор do-while. В отличие от операторов цикла for и while, в которых условие проверялось в самом начале цикла, в операторе do-while условие выполнения цикла проверяется в самом его конце. Это означает, что цикл do-while всегда выполняется хотя бы один раз. Ниже приведена общая форма оператора цикла do-while.

<b>do {</b>

<b><i>операторы</i>;</b>

<b>} while (<i>условие</i>) ;</b>

При наличии лишь одного оператора фигурные скобки в данной форме записи необязательны. Тем не менее они зачастую используются для того, чтобы сделать конструкцию do-while более удобочитаемой и не путать ее с конструкцией цикла while. Цикл do-while выполняется до тех пор, пока условное выражение истинно.