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

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

В приведенном ниже примере программы цикл do-while используется для представления отдельных цифр целого числа в обратном порядке.

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

<b>using System;</b>

<b>class DoWhileDemo { </b>

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

<b>    int num; </b>

<b>    int nextdigit;</b>

<b>    num = 198;</b>

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

<b>    Console.Write(&quot;Число в обратном порядке: &quot;); </b>

<b>    do {</b>

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

<b>      Console.Write(nextdigit); </b>

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

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

<b>    Console.WriteLine() ;</b>

<b>  }</b>

<b>}</b>

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

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

<b>Число в обратном порядке: 891</b>

Приведенный выше цикл действует следующим образом. На каждом его шаге крайняя слева цифра получается в результате расчета остатка от деления целого числа (значения переменной num) на 10. Полученная в итоге цифра отображается. Далее значение переменной num делится на 10. А поскольку это целочисленное деление, то в его результате крайняя слева цифра отбрасывается. Этот процесс повторяется до тех пор, пока значение переменной num не достигнет нуля.

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

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

Применение оператора break для выхода из цикла

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

<b>// Применить оператор break для выхода из цикла.</b>

<b>using System;</b>

<b>class BreakDemo {</b>

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

<b>    // Использовать оператор break для выхода из этого цикла, </b>

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

<b>     if(i &gt; 0) break; // завершить цикл, как только значение </b>

<b>       // переменной i станет положительным </b>

<b>     Console.Write(i + &quot; &quot;);</b>

<b>    }</b>

<b>    Console.WriteLine(&quot;Готово ! &quot;) ;</b>

<b>  }</b>

<b>}</b>

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

<b>-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 Готово!</b>

Как видите, цикл for организован для выполнения в пределах от -10 до 10, но, несмотря на это, оператор break прерывает его раньше, когда значение переменной i становится положительным.

Оператор break можно применять в любом цикле, предусмотренном в С#. В качестве примера ниже приведена версия предыдущей программы, переделанная с целью использовать цикл do-while.

<b>// Применить оператор break для выхода из цикла do-while.</b>

<b>using System;</b>

<b>class BreakDemo2 { </b>

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

<b>    int i;</b>

<b>    i = -10;</b>

<b>    do {</b>

<b>      if (i &gt; 0) break;</b>

<b>      Console.Write(i + &quot; &quot;) ; </b>

<b>      i++ ;</b>

<b>    } while (i &lt;= 10);</b>

<b>    Console.WriteLine(&quot;Готово!&quot;);</b>

<b>  }</b>

<b>}</b>

А теперь рассмотрим более практический пример применения оператора break. В приведенной ниже программе выявляется наименьший множитель числа.

<b>// Выявить наименьший множитель числа.</b>

<b>using System;</b>

<b>class FindSmallestFactor { </b>

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

<b>    int factor = 1; </b>

<b>    int num = 1000;</b>

<b>    for (int i=2; i &lt;= num/i; i++) {</b>