Имеет вид:
for(выражение_1; выражение_условие; выражение_3)
{ тело цикла }
Выражения в операторе for могут состоять из нескольких выражений, разделенных запятыми. Выражение_1 определяет действия выполняемые до начала цикла., т.е. задает начальные условия для цикла. Выражение_условие обычно-логическое или арифметическое. Оно определяет условие окончания или продолжения цикла. Если оно истинно (т.е. не равно 0), то выполняется тело цикла, а затем вычисляется выражение_3). Выражение_3 обычно задает необходимые для следующей итерации изменения параметров или любых переменных тела цикла. После выполнения Выражения_3 вычисляется истинность выражения_условия и все повторяется. Т.е. Выражение_1 вычисляется один раз, а выражение_условие и выражение_3 вычисляются после каждого выполнения тела цикла. Цикл выполняется до тех пор пока не станет ложным выражение_условие.
Стоящие в скобках после оператора for выражения могут отсутствовать как все вместе, так и в любом сочетании, но разделяющие их символы должны присутствовать всегда.
Пример:
for ( ;x<0; x++)
{ printf(“x=%5.2f”,x);
}
Здесь Выражение_1 отсутствует, считается, что начальное значение x определено ранее, выражение_условие имеет вид x<0, а тело цикла это printf(“x=%5.2f”,x).
То есть здесь написано следующее: для ранее заданного x, пока x<0 увеличивать его значение на единицу и на каждом таком шаге выводить значение x на печать.
Для иллюстрации трех операторов цикла (С предусловием, постусловием и параметрического) воспользуемся следующей задачей.
Необходимо вычислить с заданной точностью eps сумму членов ряда:
для данного значения x.
Пусть i – номер члена ряда;
r – очередной член ряда;
b – результат.
Для нашей задачи цикл с предусловием может быть реализован следующим образом:
1 i=2;
2 b=1.0;
3 r=x;
4 while(r>eps||r<-eps) //* означает “или” *//
{
5 b=b+r;
6 r=r*x/i;
7 i++;
}
Блок-схема цикла с предусловием представлена на рис. 8.3.
Рис. 8.3. Блок-схема цикла с предусловием
Если команду цикла с предусловием можно сформулировать как: “До тех пор пока выполняется выражение_условие (в нашем примере: “До тех пор пока переменная r>eps или r<-eps”) выполнять операторы внутри фигурных скобок или тело цикла”.
Для рассмотренной нами задачи цикл с постусловием реализуется так:
1 i=1; b=0.0; r=1.0;
2 do
{
3 b=b+r;
4 r=r*x/i;
5 i++;
}
6 while(r>=eps||r<=-eps);
Блок-схема цикла с постусловием представлена на рис. 8.4.
Рис. 8.4. Блок-схема цикла с постусловием
Команду цикла с постусловием можно сформулировать так: “выполнять операторы тела цикла до тех пор, пока не будет выполняться выражение_условие”. (В нашем примере: “Выполнять операторы с3 по 5 до тех пор пока переменная r>=eps или r<=-eps”.)
Для нашего примера параметрический цикл может быть реализован следующим образом:
i=2; b=1.0; r=x;
for(;r>eps||r<-eps;)
{ b=b+r;
r=r*x/i;
i=i+1; }
или так
for(i=2, b=1.0, r=x;r>eps||r<-eps;)
{ b=b+r;
r=r*x/i;
i=i+1; }
или так
for(i=2, b=1.0, r=x;r>eps||r<-eps;i++)
{ b=b+r;
r=r*x/i; }
или так
for(i=2, b=1.0, r=x; r>eps||r<-eps; b+=r, r*=x/i; i++);
Здесь тело цикла пустой оператор.
Блок-схема параметрического оператора представлена на рис. 8.5.
Рис. 8.5. Блок-схема параметрического оператора
1. Какими операторами реализуются циклические конструкции?
2. Напишите программу вычисления значений функции
на отрезке [0,1] с шагом .
3. Найдите ошибки в следующих фрагментах программ:
a) if(y-1<=12);
{for (i=1; j=1;k=0;i>j;i++;j=j+2);
y=i*j*k-sqrt(k);
else
y=x*i*j-k;}
b) do
{z=pow(x+y);
x=x+5;
printf(“x=%5.2f”,z);}
while (x<0)
c) while(a>0 && b>9);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.