Как было показано во многих предыдущих примерах, ключевыми компонентами цикла являются:
• Условие. Когда оно равно true, тело цикла повторяется.
• Инициализация цикла. На этом этапе переменным, задействованным в условии цикла, присваиваются начальные значения. Данный процесс происходит до начала исполнения цикла.
• Обновление переменных. При каждой итерации цикла происходит обновление значений переменных, входящих в его условие.
Все сказанное используется в коде цикла while, приведенный ранее. Правилами синтаксиса фиксировано положение только одного элемента — условия цикла, которое размещается в круглых скобках после ключевого слова while. Инициализация цикла и обновление переменных может производиться в любой точке кода. Все это удобно для цикла, тело которого невелико. Если же инициализация и обновление разбросаны в пределах достаточного длинного фрагмента кода, эти существенные элементы непросто найти, а значит, и следить за их правильностью. Слишком часто это приводит к тому, что в циклах whileилиdo-whileне обновляется третий важный компонент.
|
|
Для решения этой проблемы применяется цикл for, синтаксические правила которого четко фиксируют положение всех трех управляющих элементов цикла. Как показано в синтаксическом блоке, все три элемента должны находиться в скобках после ключевого слова for и быть разделены точкой с запятой.
Оператор for::=
for ([< Операторы инициализации> ]; [< Условие цикла> ]; [< Операторы обновления> ])
<Тело цикла>
где:
<Операторы инициализации>::=
<Операторы инициализации1>, <Операторы инициализации2>...
<Условие цикла>::= <Логическое выражение>
<Операторы обновления>::=
<Операторы обновления 1>, <Операторы обновления 2>...
<Тело цикла>::=
<Оператор>;
<Составной оператор>;
Примечания:
· чтобы разделить несколько операторов инициализации, используются запятые. То же относится и к операторам обновления. Точки с запятыми применяются для отделения операторов инициализации от условия и условия от операторов обновления;
· операторы инициализации, а также условие цикла и операторы обновления не являются обязательными.
Цикла forпозволяет реализовать ту же семантику, что и в коде while важно отметить, что последовательность событий в цикле for совпадает с последовательностью в цикле while, т.е.:
• инициализация цикла происходит один раз в начале цикла;
• условие цикла проверяется перед каждой итерацией;
• обновление переменных цикла происходит в конце каждой итерации.
Задание. Написать программу, которая выводит на консоль последовательность чисел от нуля до десяти. В качестве цикла использовать цикл for.
|
|
Далее рассмотрим некоторые особенности применения цикла for.
1. Никакая из трех частей цикла не является обязательной, однако скобки после ключевого слова for должны всегда содержать две точки с запятой. Условие цикла можно опустить, однако при этом наличие точки с запятой по-прежнему является обязательными условием.
2. Инициализация и обновление цикла могут состоять из нескольких операторов, разделенных запятыми, условие же цикла может быть только одно. Таким образом, в скобках после ключевого слова for в инициализации и обновлении цикла можно разместить любое число операторов.