C
Формат:
for([<выражение 1>];[<выражение 2>];[<выражение 3>])[<инструкция>];
Эквивалентная схема
<выражение 1>;
while(<выражение 2>){
<инструкция>
<выражение 3>;
}
Замечания.
1. Каждое из выражений является необязательным. Как отсутствие каждого из них влияет на выполнение инструкции, удобно проследить по эквивалентной схеме.
2. Тело цикла – одна инструкция, которая может отсутствовать.
Примеры.
Дано: {ai}, i=1...100. Найти сумму(ai>0) и сумму(ai<0).
u=v=0;
for(i=0; i<100; i++){
if(a[ i ]>0)u+=a[ i ]; if(a[ i ]<0)v+=a[ i ];
}
Найти Sxn/n!,n=1,2,..., пока |un|>5e-6.
s=0;
u=1;
for(n=1; fabs(u)>5e-6; n++){
u *= x/n;
s += u;
}
Определить число цифр натурального числа n.
for(k=0; n!=0; n/=10)k++;
Найти первый отрицательный элемент массива. Если его нет, то ответ = 0.
for(i=0; i<100 && a[ i ]>=0; i++); // Тело цикла отсутствует
if(i==100){
y=0;
}else{
y=a[ i ];
}
Замечания.
1. Как видно из примеров, почти все циклы используют для своей организации некоторую переменную, которую называют параметром или счетчиком цикла. См. переменные i, n, k, i в порядке следования примеров. Эту переменную не рекомендуется изменять в теле цикла, поскольку логика алгоритма становится запутанной.
2. После окончания цикла параметр сохраняет последнее присвоенное значение. В последнем примере i равно 100, если отрицательных элементов в массиве нет, или равно индексу первого по порядку следования в массиве отрицательного элемента.
3. Это наиболее универсальная форма инструкции цикла.