C# 4.0 полное руководство - 2011
Шрифт:
Наибольший множитель
числа
16
равен 8
17 — простое число Наибольший множитель
числа
18
равен 9
19 — простое число
Некоторые разновидности оператора
Оператор цикла for относится к самым универсальным операторам языка С#, поскольку он допускает самые разные варианты своего применения. Некоторые разновидности оператора цикла for рассматриваются ниже.
Применение нескольких переменных управления циклом
В операторе цикла 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 для // выявления наименьшего и наибольшего множителя числа.
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, может быть любое действительное выражение, дающее результат типа 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);
}
}
}
Ниже приведен результат выполнения этой программы.