Студенту >> Язык программирования Си


Оператор цикла 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 (ложь).

НАВЕРХ