В операторе цикла for
разрешается использовать две или более переменных для управления циклом. В этом случае операторы инициализации и инкремента каждой переменной разделяются запятой. Рассмотрим следующий пример программы.
// Использовать запятые в операторе цикла for.
using System;
class Comma {
static void Main() {
int i, j;
for (i = 0, j = 10; i < j; i++, j--)
Console.WriteLine("i и j: " + i + " " + j);
}
}
Выполнение этой программы дает следующий результат.
i и j: 0 10
i и j: 1 9
i и j: 2 8
i и j: 3 7
i и j: 4 6
В данном примере запятыми разделяются два оператора инициализации и еще два итерационных выражения. Когда цикл начинается, инициализируются обе переменные, i
и j
. Всякий раз, когда цикл повторяется, переменная i
инкрементируется, а переменная j
декрементируется. Применение нескольких переменных управления циклом нередко оказывается удобным, упрощая некоторые алгоритмы. Теоретически в операторе цикла for
может присутствовать любое количество операторов инициализации и итерации, но на практике цикл получается слишком громоздким, если применяется более двух подобных операторов.
Ниже приведен практический пример применения нескольких переменных управления циклом в операторе for
. В этом примере программы используются две переменные управления одним циклом for
для выявления наибольшего и наименьшего множителя целого числа (в данном случае — 100). Обратите особое внимание на условие окончания цикла. Оно опирается на обе переменные управления циклом.
// Использовать запятые в операторе цикла for для
// выявления наименьшего и наибольшего множителя числа.
using System;
class Comma {
static void Main() {
int i, j;
int smallest, largest;
int num;
num = 100;
smallest = largest = 1;
for (i = 2, j = num / 2; (i <= num / 2) & (j >= 2); i++, j--) {
if ((smallest == 1) & ((num % i) == 0))
smallest = i;
if ((largest == 1) & ((num % j) == 0))
largest = j;
}
Console.WriteLine("Наибольший множитель: " + largest);
Console.WriteLine("Наименьший множитель: " + smallest);
}
}
Ниже приведен результат выполнения этой программы.
Наибольший множитель: 50
Наименьший множитель: 2
Благодаря применению двух переменных управления циклом удается выявить наименьший и наибольший множители числа в одном цикле for
. В частности, управляющая переменная i
служит для выявления наименьшего множителя. Первоначально ее значение устанавливается равным 2 и затем инкрементируется до тех пор, пока не превысит половину значения переменной num
. А управляющая переменная j
служит для выявления наибольшего множителя. Ее значение первоначально устанавливается равным половине значения переменной num
и затем декрементируется до тех пор, пока не станет меньше 2. Цикл продолжает выполняться до тех пор, пока обе переменные, i
и j
, не достигнут своих конечных значений. По завершении цикла оба множителя оказываются выявленными.
Некоторые разновидности оператора цикла for | Условное выражение |