Основы программирования

         

Выход из цикла break, переход на конец цикла continue


Если необходимо прервать выполнение цикла, следует использовать оператор

break;

Оператор break применяется внутри тела цикла, заключенного в фигурные скобки. Пример: требуется найти корень целочисленной функции f(x), определенной для целочисленных аргументов.

int f(int x); // Описание прототипа функции . . . int x; . . . // Ищем корень функции f(x) x = 0; while (true) { if (f(x) == 0) { break; // Нашли корень } // Переходим к следующему целому значению x // в порядке 0, -1, 1, -2, 2, -3, 3, ... if (x >= 0) { x = (-x - 1); } else { x = (-x); } } // Утверждение: f(x) == 0

Здесь используется бесконечный цикл "while (true)". Выход из цикла осуществляется с помощью оператора "break".

Иногда требуется пропустить выполнение тела цикла при каких-либо значениях изменяющихся в цикле переменных, переходя к следующему набору значений и очередной итерации. Для этого используется оператор

continue;

Оператор continue, так же, как и break, используется лишь в том случае, когда тело цикла состоит более чем из одного оператора и заключено в фигурные скобки. Его следует понимать как переход на фигурную скобку, закрывающую тело цикла. Пример: пусть задана n+1 точка на вещественной прямой xi, i = 0, 1,..., n; точки xi будут называться узлами интерполяции. Элементарный интерполяционный многочлен Лагранжа Lk(x) - это многочлен степени n, который принимает нулевые значения во всех узлах xi, кроме xk. В k-ом узле xk многочлен Lk(x) принимает значение 1. Многочлен Lk(x) вычисляется по следующей формуле:


Пусть требуется вычислить значение элементарного интерполяционного многочлена Lk(x) в заданной точке x = t. Это делается с помощью следующего фрагмента программы:

double x[100]; // Узлы интерполяции (не более 100) int n; // Количество узлов интерполяции int k; // Номер узла double t; // Точка, в которой вычисляется значение double L; // Значение многочлена L_k(x) в точке t int i; . . . L = 1.0; // Начальное значение произведения i = 0; while (i <= n) { if (i == k) { ++i; // К следующему узлу continue; // Пропустить k-й множитель }

// Вычисляем произведение L *= (t - x[i]) / (x[k] - x[i]); ++i; // К следующему узлу } // Ответ в переменной L

Здесь оператор continue используется для того, чтобы пропустить вычисление произведения при i = k.



Содержание раздела