Оператор for
уже был представлен в главе Основные элементы языка C#, а здесь он рассматривается более подробно. Вас должны приятно удивить эффективность и гибкость этого оператора. Прежде всего обратимся к самым основным и традиционным формам оператора for
.
Ниже приведена общая форма оператора for
для повторного выполнения единственного оператора.
for (инициализация; условие; итерация) оператор;
А вот как выглядит его форма для повторного выполнения кодового блока:
for (инициализация; условие; итерация) {
последовательность операторов;
}
где инициализация
, как правило, представлена оператором присваивания, задающим первоначальное значение переменной, которая выполняет роль счетчика и управляет циклом; условие
— это логическое выражение, определяющее необходимость повторения цикла; а итерация
— выражение, определяющее величину, на которую должно изменяться значение переменной, управляющей циклом, при каждом повторе цикла. Обратите внимание на то, что эти три основные части оператора цикла for
должны быть разделены точкой с запятой. Выполнение цикла for
будет продолжаться до тех пор, пока проверка условия дает истинный результат. Как только эта проверка даст ложный результат, цикл завершится, а выполнение программы будет продолжено с оператора, следующего после цикла for
.
Цикл for
может продолжаться как в положительном, так и в отрицательном направлении, изменяя значение переменной управления циклом на любую величину. В приведенном ниже примере программы выводятся числа, постепенно уменьшающиеся от 100 до -100 на величину 5.
// Выполнение цикла for в отрицательном направлении.
using System;
class DecrFor {
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 + " — простое число.");
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 — простое число.
Вложенные операторы switch | Некоторые разновидности оператора цикла for |