Форма записи реализует цикл с постусловием и имеет вид:
do
{
оператор_1;
......
оператор_n;
}
while (<выражение >);
Схема работы такого цикла:
- сначала выполняется оператор;
- затем проверяется условие;
- если условие является истина (true), выполняется оператор, и снова проверяется условие и т.д.
- когда условие станет ошибочной (false) цикл завершает работу.
Такой цикл называют циклом с постусловием.
Пример 3.14. Составить фрагмент программы с использованием оператора типа do... while для задачи с предварительным условием.
Текст фрагмента программы.
do
y = sqrt (fabs (x)) – x*x;
printf (“x=%.1f y=%.3f\n”, x, y);
if (y > 0) k ++;
x+ = 0.1;
while (x<=2);
printf (“k=%d\n”,k);
Пример 3.15. Найти приближенное значение
по итерационной формуле:
k=0, 1, …
Вычисления прекратить, когда | yk+1- yk|<e
Пусть p=7, y0=1; уk у1, уk +1 у2,
r=| yk+1- yk|
x, eps – ввести при выполнении программы.
void main()
{
int n=0, p=7;
float y1=1, y2, eps, x, r;
printf (“Введите значение x, eps\n”);
scanf(“%f%f”, &x, &eps);
do
{
y2= (1/p)*((p–1)*y1+x/pow(y1,(p-1)));
|
|
n++;
r=fabs(y2-y1);
y1=y2;
}
while(r>=eps);
printf(“Приближенное значение у=%f,eps=%e\n”,
y2,eps);
printf(“Количество итераций n = %d \n”, n);
}
3.8.3 Оператор цикла типа for
Форма записи имеет следующий вид:
for(выражение1;выражение2;выражение3)
оператор;
или с составным оператором в теле цикла
for(выражение1;выражение2;выражение3)
{оператор_1;
.........
оператор_М;
}
где выражение1 – задаёт начальное значение параметру цикла, а также может задавать начальные значения другим переменным, например:
for(t=-5,s=0,p=1;...)
t – параметр цикла
s и p переменные, которые перед началом цикла надо обнулить или обединичить.
выражение2 – логическое выражение, которое задаёт условие окончания работы цикла
for (…; t<=10;…)
или (…; t>=-5 && t<=10; …)
выражение3 – задаёт изменение параметру цикла, а также может при необходимости задавать изменения другим переменным
for (...;...; t=t+0.5)
или (...;...; t+ =0.5, s+ =y, p* =y)
Схема работы такого цикла:
- сначала выполняется выражение1,
- потом проверяется выражение2,
- если оно истинно, то выполняются операторы цикла,
- выполняются выражение3,
- снова проверяется выражение2 и т.д.
- если выражение2 ложно, цикл заканчивается.
Пример 3.16:Условие что и для предыдущих типов циклов:
вычислить выражение y=√|x|-x2 для -2 ≤ x ≤ 2 с Δx = 0.1;
.......
{
float x, y;
int k;
for (x=-2, k=0; x<=2; x+=0.1)
{
y=sqrt(fabs(x))-x*x;
printf (“x=.... “, x, y);
if (y>0) k++;
}
printf (“k=.... “, k);
}