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

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

<b>  Console.WriteLine(&quot;Эта ветвь А — часть &quot; +</b>

<b>             &quot;внешнего оператора switch.&quot;);</b>

<b>  switch(ch2) {</b>

<b>  case 'A':</b>

<b>    Console.WriteLine(&quot;Эта ветвь A — часть &quot; +</b>

<b>              &quot;внутреннего оператора switch&quot;);</b>

<b>    break; </b>

<b>  case 'В': // ...</b>

<b>  } // конец внутреннего оператора switch </b>

<b>  break; </b>

<b>case 'В': // ...</b>

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

Оператор for уже был представлен в главе 2, а здесь он рассматривается более подробно. Вас должны приятно удивить эффективность и гибкость этого оператора. Прежде всего, обратимся к самым основным и традиционным формам оператора for.

Ниже приведена общая форма оператора for для повторного выполнения единственного оператора.

<b>for<i>{инициализация; условие</i>; итерация) <i>оператор;</i></b>

А вот как выглядит его форма для повторного выполнения кодового блока:

<b>for<i>(инициализация; условие;</i> итерация)</b>

<b>{</b>

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

<i>}</i>

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

Цикл for может продолжаться как в положительном, так и в отрицательном направлении, изменяя значение переменной управления циклом на любую величину. В приведенном ниже примере программы выводятся числа; постепенно уменьшающиеся от 100 до -100 на величину 5.

<b>// Выполнение цикла for в отрицательном направлении.</b>

<b>using System;</b>

<b>class DecrFor {</b>

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

<b>    int x;</b>

<b>    for(x = 100; x &gt; -100; x -= 5)</b>

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

<b>  }</b>

<b>}</b>

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

<b>for(count=10; count &lt; 5; count++)</b>

<b>x += count; // этот оператор не будет выполняться</b>

Данный цикл вообще не будет выполняться, поскольку первоначальное значение переменной count, которая им управляет, сразу же оказывается больше 5. Это означает, что условное выражение count < 5 оказывается ложным с самого начала, т.е. еще до выполнения первого шага цикла.

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

<b>// Выяснить, является ли число простым. Если оно</b>

<b>// непростое, вывести наибольший его множитель.</b>

<b>using System;</b>

<b>class FindPrimes { </b>

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

<b>    int num; </b>

<b>    int i; </b>

<b>    int factor; </b>

<b>    bool isprime;</b>

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

<b>      isprime = true; </b>

<b>      factor = 0;</b>

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

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

<b>        if((num % i) == 0) {</b>

<b>          // Значение переменной num делится нацело.</b>

<b>          // Следовательно, это непростое число, </b>

<b>          isprime = false; </b>

<b>          factor = i;</b>

<b>        }</b>

<b>      }</b>

<b>      if(isprime)</b>

<b>        Console.WriteLine(num + &quot; — простое число.&quot;); </b>

<b>      else</b>

<b>        Console.WriteLine(&quot;Наибольший множитель числа &quot; + num + &quot; равен &quot; + factor);</b>