Урок 5

Урок 5. Циклы

На данном уроке мы рассмотрим:

  1. Циклы

    • Цикл while

    • Цикл do/while

    • Цикл for

  2. Инструкции break и continue

    • Break

    • Continue

Циклы

Цикл - это инструкция, позволяющая повторять выполнение некоторых действий (инструкций) определённое количество раз. Каждое отдельное исполнение инструкций в теле цикла называется итерация.

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

Цикл while

Синтаксис цикла while:

Инструкция while сначала вычисляет значение выражения. Полученное значение, если необходимо, неявно преобразуется к логическому типу. Само выражение называется условием выполнения цикла while или просто условие. Если выражение имеет ложное значение, интерпретатор не выполняет тело цикла, и переходит к выполнению следующей инструкции в коде программы. Если результатом вычисления выражения является истинное значение, то тело цикла выполняется, затем управление передаётся в начало цикла и выражение вычисляется снова. Иными словами, интерпретатор снова и снова выполняет инструкции расположенные в теле цикла, пока значение выражения остаётся истинным.

Рассмотрим простой пример цикла while:

var count=0; //определяем переменную счетчик

while (count<5) {

document.write(count+" ");

count++; // если из кода убрать эту строку, то цикл будет работать бесконечно

}

Перед началом цикла значение переменной count устанавливается равным 0 (значение может быть любым). Это называется инициализацией переменной-счётчика. Значение выражения (count < 5) проверяется каждый раз перед итерацией цикла. Когда исполняется тело цикла, с помощью инкремента count++ значение переменной count увеличивается на единицу. После пяти итераций выражение вернёт значение false (так как значение переменной count уже будет не меньше 5) и работа цикла прекратится.

Цикл do/while

Синтаксис цикла do/while:

Цикл do/while похож на цикл while, за исключением того, что проверка условия выполнения цикла производится после итерации, а не в начале, и завершается цикл точкой с запятой. Так как условие проверяется в конце, тело цикла do/while всегда выполняется минимум один раз:

var count=0;

do{

document.write(count+" ");

count++;

} while (count<15);


Между циклом do/while и обычным циклом while имеются два отличия. Во-первых, цикл do требует как ключевого слова do(для отметки начала цикла), так и ключевого слова while(для отметки конца цикла и указания условия). Во-вторых, в отличии от цикла while цикл do завершается точкой с запятой. Цикл while необязательно завершать точкой с запятой, если тело цикла заключено в фигурные скобки.

Цикл for

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


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

Цикл for состоит из ключевого слова for, за которым следуют круглые скобки, внутри которых располагаются три выражения, разделяемые точками с запятой. Он имеет следующий порядок выполнения:

  1. Первое выражение всегда вычисляется только один раз - в начале цикла. В цикле for допускается определять переменные, поэтому обычно в качестве первого выражения выступает определение переменной-счётчика.

  2. Второе выражение определяет условие выполнения цикла. Оно вычисляется перед каждой итерацией и определяет, будет ли выполняться тело цикла. Если результатом вычисления выражения является истинное значение, инструкции, являющиеся телом цикла - выполняются. Если возвращается ложное значение, выполнение цикла завершается. Если при первой проверке условия, оно оказывается ложным, тело цикла не выполнится ни разу.

  3. После каждой итерации вычисляется третье выражение. Обычно его используют для изменения значения переменной-счётчика, которая используется в проверке условия выполнения цикла.

Небольшой пример, в котором выводятся цифры от 0 до 9:

for (var count=0; count<10; count++)

document.write(count+" ");

Любое из выражений может отсутствовать, однако сами точки с запятой (;) обязательно должны присутствовать, иначе будет ошибка синтаксиса.

var i=0;

for (;i<4; i++)

document.write(i+ " ");

Если второе выражение отсутствует, это означает, что цикл будет выполняться бесконечно.

var i=0;

for (; i<4; )

document.write(i + " ");

Инструкции break и continue

Break

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

break;

Ниже показано применение инструкции break:

for (var i=-10; i<=10; i++){

if (i>0) break; // завершить цикл, как только значение переменной станет положительным

document.write(i + " ");

}

Continue

Инструкция continue схожа с инструкцией break, однако вместо выхода из цикла она запускает новую итерацию цикла. Инструкция continue может использоваться только в циклах. Синтаксис инструкции continue также прост, как и синтаксис инструкции break:

continue;

Когда выполняется инструкция continue, текущая итерация цикла прерывается и начинается следующая. Для разных циклов инструкция даёт разный эффект:

  • После выполнения инструкции continue в цикле while проверяется условие выполнения, и если оно имеет значение true, тело цикла выполняется.

  • В цикле for после выполнения инструкции continue сначала вычисляется третье выражение, и только затем происходит проверка условия.

  • В цикле do/while после выполнения инструкции continue происходит переход в конец цикла и проверяется условие выполнения, если оно имеет значение true, тело цикла выполняется.

Ниже приведён пример, в котором инструкция continue используется в качестве вспомогательного средства для вывода чётных чисел в пределах от 0 до 20:

for (var i=0; i<=20; i++) {

if ((i %2) !=0) continue;

document.write ( i+ " ");

}

Вопросы и задания!

  1. Запишите синтаксис циклов do/while и for. Объясните отличия этих циклов. Сравните их с циклами в других языках программирования(Delphi, C++).

  2. Напишите код, которая выводит i, пока i<7 с помощью цикла:

    • while

    • for

  3. Пока i<=5 вычислить сумму чисел от 1 до 5, использую циклы:

    • while

    • do/while

    • for

  4. Вычислить произведение нечетных цифр от 1 до 20. Завершить цикл, как только значение переменной р станет больше 1000.