Оператор цикла do-while.
Оператор цикла do-while предназначен для реализации циклических алгоритмов и имеет следующую форму записи
БНФ:
цикл_do-while =
"do" оператор "while" "("выражение")" ";"
Оператор выполняется циклически до тех пор, пока выражение отлично от нуля. В отличие от оператора while, тело оператора do-while выполняется хотя бы один раз до первого вычисления условия.
Работу оператора do-while проиллюстрируем на примере программы, которая определяет корень уравнения x-cos(sin(x))=0 методом итераций, который заключается в циклическом вычислении очередного приближения x_new по предыдущему приближению x_old, согласно выражению x_new=cos(sin(x_old)), вытекающему из исходного уравнения. Процесс итерации заканчивается тогда, когда x_new станет равен x_old. Программа, реализующая этот алгоритм, приведена ниже.
#include <stdio.h>
#include <math.h>
/* Решение уравнения x-cos(sin(x))=0 */
void main (void)
{
double x_new=0.9, x_old, eps=0.0001;
do
{
x_old = x_new;
x_new = cos(sin(x_old));
} while ( fabs( x_new - x_old ) > eps );
printf ( "x=%lf", x_new );
}
Сравнение двух вещественных чисел осуществляется с использованием точности eps. Это необходимо потому, что из-за погрешностей округления прямая проверка на равенство двух вещественных чисел скорее всего даст в результате 0 (ложь).
Дата добавления: 2015-02-13; просмотров: 669;