Страница 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("Число: " + num);</b>
<b> while(num > 0) {</b>
<b> mag++;</b>
<b> num = num / 10;</b>
<b> };</b>
<b> Console.WriteLine("Порядок величины: " + 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 < 10; i++) {</b>
<b> result = 1; </b>
<b> e = i;</b>
<b> while (e > 0) {</b>
<b> result *= 2;</b>
e--;
<b> }</b>
<b> Console.WriteLine ("2 в степени " + i + " равно " + 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 выполняется до тех пор, пока условное выражение истинно.