Благодаря применению двух переменных управления циклом удается выявить наименьший и наибольший множители числа в одном циклеfor.В частности, управляющая переменнаяiслужит для выявления наименьшего множителя. Первоначально ее значение устанавливается равным 2 и затем инкрементируется до тех пор, пока не превысит половину значения переменнойnum. Ауправляющая переменнаяjслужит для выявления наибольшего множителя. Ее значение первоначально устанавливается равным половине значения переменнойnumи затем декрементируется до тех пор, пока не станет меньше 2. Цикл продолжает выполняться до тех пор, пока обе переменные,iиj,не достигнут своих конечных значений. По завершении цикла оба множителя оказываются выявленными.
Условное выражение
Условным выражением, управляющим цикломfor,может быть любое действительное выражение, дающее результат типаbool.В него не обязательно должна входить переменная управления циклом. В следующем примере программы управление цикломforосуществляется с помощью значения переменнойdone.
// Условием выполнения цикла может служить любое выражение типа bool.
using System;
class forDemo {
static void Main() { int i, j;
bool done = false;
for(i=0, j=100; !done; i++, j—) {
if(i*i >= j) done = true;
Console.WriteLine("i, j: " + i + " " + j);
}
}
}
Ниже приведен результат выполнения этой программы.
i, j
0 100
i/ j
1 99
i, j
2 98
i, j
3 97
if j
4 96
1a j
5 95
1a j
6 94
1a j
7 93
j
8 92
1a j
9 91
ir j
10 90
В данном примере цикл for повторяется до тех пор, пока значение переменной done типа не окажется истинным (true). Истинное значение переменной done устанавливается в цикле, когда квадрат значения переменнойiоказывается больше или равным значению переменной j.
Отсутствующие части цикла
Ряд интересных разновидностей цикла for получается в том случае, если оставить пустыми отдельные части определения цикла. В C# допускается оставлять пустыми любые или же все части инициализации, условия и итерации в операторе цикла for. В качестве примера рассмотрим такую программу.
// Отдельные части цикла for могут оставаться пустыми.
using System;
class Empty {
static void Main() { int i;
for (i = 0; i < 10; ) {
Console.WriteLine("Проход №" + i);
i++; // инкрементировать переменную управления циклом
}
}
}