Операторы цикла
Операторы цикла
Основной оператор цикла — оператор while — выглядит так:
while (логВьгр) оператор
Вначале вычисляется логическое выражение
логВыр;
если его значение true, то выполняется оператор, образующий цикл. Затеем снова вычисляется
лог-выр
и действует оператор, и так до тех пор, пока не получится значение false. Если логВыр изначально равняется false, то оператор не будет выполнен ни разу. Предварительная проверка обеспечивает безопасность выполнения цикла, позволяет избежать переполнения, деления на нуль и других неприятностей. Поэтому оператор while является основным, а в некоторых языках и единственным оператором цикла.
Оператор в цикле может быть и пустым, например, следующий фрагмент кода:
int i = 0;
double s = 0.0;
while ((s += 1.0 / ++i) < 10);
вычисляет количество i сложений, которые необходимо сделать, чтобы гармоническая сумма s достигла значения 10. Такой стиль характерен для языка С. Не стоит им увлекаться, чтобы не превратить текст программы в шифровку, на которую вы сами через пару недель будете смотреть с недоумением.
Можно организовать и бесконечный цикл:
while (true) оператор
Конечно, из такого цикла следует предусмотреть какой-то выход, например, оператором break, как в листинге 1.5. В противном случае программа зациклится, и вам придется прекращать ее выполнение "комбинацией из трех пальцев" <Ctrl>+<Alt>+<Del> в MS Windows 95/98/ME, комбинацией <Ctrl>+<C> в UNIX или через Task Manager в Windows NT/2000.
Если в цикл надо включить несколько операторов, то следует образовать блок операторов {}.
Второй оператор цикла — оператор do-while — имеет вид do оператор while (логВыр)
Здесь сначала выполняется оператор, а потом происходит вычисление логического выражения логвыр. Цикл выполняется, пока логвыр остается равным true.
Знатокам Pascal
В цикле do-while проверяется условие продолжения, а не окончания цикла.
Существенное различие между этими двумя операторами цикла только в том, что в цикле do-while оператор обязательно выполнится хотя бы один раз.
Например, пусть задана какая-то функция f(x), имеющая на отрезке,[о; Ь] ровно один корень. В листинге 1.5 приведена программа, вычисляющая этот корень приближенно методом деления пополам (бисекции, дихотомий).