Цель работы. Организация циклических или итерационных вычислитель-ных процессов с помощью операторов цикла с предусловием, постусловием и с параметром (итерационным).
Операторы цикла задают многократное (фиксированное или определяемое в процессе счета) исполнение операторов тела цикла. В С определены три разных оператора цикла:
1) цикл с предусловием, где проверка выражения или условия проводится до начала выполнения цикла:
while (логическое выражение)
тело цикла;
2) цикл с постусловием, где проверка выражения или условия проводится после выполнения тела цикла:
do
тело цикла
while(логическое выражение);
3) итерационный цикл:
for ([выражение инициализации]; [выражение проверки условия]; [выражение коррекции])
тело цикла;
Тело цикла - это либо отдельный ( в том числе пустой ) оператор, либо составной оператор. Прекращение выполнения цикла возможно в следующих случаях:
1) нулевое значение проверяемого логического выражения;
2) выполнения в теле цикла оператора передачи управления (break, goto) за пределы цикла.
Выражение инициализации цикла for(...) служит для инициализации счетчика, и она осуществляется только один раз при входе в цикл. Выражение коррекции вычисляется на каждой итерации (вычислительном шаге) после выполнения операторов тела цикла. Оператор for(...) - это цикл с предусловием. Каждое из трех выражений цикла for(...) можно опускать, но символ ";" остается.
Примеры записи оператора for(...):
1) for (n=10; n<0; n--) ...;
2) for(x=1; y<=75; y=5*x+++ 15 )...;
3) ans=2;
for(n=3; ans<=25;) ans=ans*n;
4) for(x=1,y=1.2; y<=10.5; x++, y=y+x*0.3 ) ...;
5) for(; ;)...; - бесконечный цикл.
Операция "запятая" (табл. 5) связывает два оператора или выражения в одно и гарантирует, что левое выражение будет выполняться первым. Из примеров видно, что она используется для включения дополнительной информации в заголовок цикла for(...).
Предостережения
1. Ошибка типа "бесконечный цикл"
К бесконечному циклу приводят неправильное написание логического выражения или отсутствие в теле цикла корректировки шага параметра цикла.
2. Ошибка типа "лишний шаг"
При работе с массивами возможен выход за границу массива, который никаким образом не контролируется компилятором, например, при работе с массивом а[50], оператор while (i<=50) s+=a[i++]; приведет к попытке обратиться к 51-му элементу массива, о чем компилятор не сообщит пользователю. Это очень серьезная ошибка.