Главная arrow Язык программирования C# arrow C# Полное руководство Герберт Шилдт arrow Оператор цикла for C# Полное руководство Герберт Шилдт

Оператор цикла for C# Полное руководство Герберт Шилдт

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

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

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

using System;

class DecrFof {
   static void Main() {
      int x;

      for(x = 100; x > -100; x -= 5)
         Console.WriteLine(x);
   }
}

В отношении циклов for следует особо подчеркнуть, что условное выражение всегда проверяется в самом начале цикла. Это означает, что код в цикле может вообще не выполняться, если проверяемое условие с самого начала оказывается ложным. Рассмотрим следующий пример:
   for(count=10; count < 5; count++) x += count; // этот оператор не будет выполняться
Этот цикл вообще не будет выполняться, поскольку первоначальное значение переменной count, которая им управляет, сразу же оказывается больше 5. Это означает, что условное выражение count < 5 оказывается ложным с самого начала, т.е. еще до выполнения первого шага цикла.
Оператор цикла for — наиболее полезный для повторного выполнения операций известное число раз. В следующем примере программы используются два цикла for для выявления простых чисел в пределах от 2 до 20. Если число оказывается непростым, то выводится наибольший его множитель.

// Выяснить, является ли число простым. Если оно непростое, вывести наибольший его множитель.

using System;

class FindPrimes {
   static void Main() {
      int num;
      int i;
      int factor;
      bool isprime;

      for (num = 2; num < 20; num++) {
         isprime = true; factor = 0;
         
     // Выяснить, делится ли значение переменной
         // num нацело.
     for(i=2; i <= num/2; i++) {
        if ( (num % i) ==0) {

               // Значение переменной num делится нацело.
               // Следовательно, это непростое число,
           isprime = false;
           factor = i;
               }
            }
            if(isprime)
               Console .WriteLine (num + " — простое число.11);
        else
               Console.WriteLine( "Наибольший множитель числа " + num + " равен " + factor) ;
      }
   }
}

Ниже приведен результат выполнения этой программы.
2 - простое число
3 - простое число
Наибольший множитель числа 4 равен 2
5 - простое число
Наибольший множитель числа 6 равен 3
7 - простое число
Наибольший множитель числа 8 равен 4
Наибольший множитель числа 9 равен 3
Наибольший множитель числа 10 равен 5
11 — простое число
Наибольший множитель числа 12 равен 6
13 — простое число
Наибольший множитель числа 14 равен 7
Наибольший множитель числа 15 равен 5
Наибольший множитель числа 16 равен 8
17 — простое число
Наибольший множитель числа 18 равен 9
19 — простое число