logo
otvety1

Цикл for

При выполнении цикла while заранее не известно, сколько итераций необходимо выполнить, но иногда в программе необходимо выполнить заранее известное количество повторений определенной группы операторов. Например, нужно прочитать из файла 5 строк и видоизменить их по определенным правилам. Для решения подобных задач с заранее известным числом повторений используется специальная конструкция цикла — цикл for:

[МЕТКА] for (ВЫРАЖЕНИЕ1; ВЫРАЖЕНИЕ2; ВЫРАЖЕНИЕ3) БЛОК

ВЫРАЖЕНИЕ1, называемое инициализирующим выражением, используется для установки начальных значений переменных, управляющих циклом. Обычно это одна или несколько операций присваивания, разделенных запятыми.

ВЫРАЖЕНИЕ2 определяет условие, при выполнении которого будут повторяться итерации цикла. Оно, как и выражение-условие цикла while, вычисляется в булевом контексте и должно быть истинным, чтобы началась следующая итерация цикла. Как только это выражение становится ложным, цикл for прекращает свое выполнение и передает управление следующему за ним в программе оператору.

ВЫРАЖЕНИЕЗ вычисляется после завершения каждой итерации цикла и «отвечает» за увеличение/уменьшение значений переменных цикла на каждом его шаге. Его иногда называют изменяющим выражением.

Приведем схему выполнения цикла for.

  1. Вычисляется инициализирующее выражение ВЫРАЖЕНИЕ1.

  2. Вычисляется выражение-условие ВЫРАЖЕНИЕ 2. Если оно истинно, то выполняются операторы блока БЛОК, иначе цикл завершает свое выполнение.

  3. После выполнения очередной итерации вычисляется выражение увеличения/уменьшения (ВЫРАЖЕНИЕ З) и повторяется пункт 2.

Все три выражения цикла for являются необязательными, и некоторые из них, или даже все, могут быть опущены, но соответствующие разделители ( ; ) должны быть оставлены. Если опущено выражение условия, то по умолчанию оно принимается равным «истина». Это позволяет организовать бесконечный цикл:

for (;;) {

# операторы этого блока будут выполняться бесконечно!

}

Выход из такого цикла осуществляется командами управления.

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

Цикл for позволяет использовать несколько переменных для управления своей работой. В этом случае в инициализирующем и изменяющем выражениях используется операция «запятая».

Цикл for — достаточно гибкая конструкция, которую можно использовать не только для реализации цикла с заранее заданным числом итераций. Он позволяет в своих управляющих выражениях использовать вызовы встроенных и пользовательских функций, а не только определять и изменять переменные цикла. При таком подходе главное — помнить, что выражение-условие завершения цикла должно изменяться на каждой итерации.