Циклы for

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. Это наиболее универсальная форма инструкции цикла.