Роботландский Университет © А.А.Дуванов |
На предыдущих уроках рассматривались команды:
команда присваивания | result = x*y; |
условная команда | if (x) z++; |
блок (составная команда) | { c = x; x = y; y = c; } |
Продолжим знакомство с командами JavaScript.
Цикл работает так. Сначала проверяется условие. Если оно истинно, выполняется команда (тело цикла). И эти действия повторяются.
Цикл заканчивает работу тогда, когда условие становится ложным. Так как условие проверяется перед выполнением тела цикла, то команды, входящие в цикл могут не выполниться ни разу.
Сначала выполняется команда присваивания, помещаемая в раздел начало. В примере это команда i = 1;
Команда, помещаемая в начало выполняется до циклического повторения, а сам цикл образуется следующими действиями:
Как и в команде while, тело цикла может не выполниться ни разу, если условие ложно с самого начала. Не выполнится при этом и команда из раздела приращение. А вот команда из раздела начало выполняется всегда, независимо от условия и выполняется ровно один раз.
В заголовке цикла for любая из трех конструкций начало, условие, приращение может быть опущена, при этом соответствующую точку с запятой опускать нельзя. Когда опущено условие, считается, что оно имеет значение true. Таким образом, цикл превращается в бесконечный:
for(;;) команда; |
Этот цикл -- бесконечный; выполнение команды не остановится, если только она не будет содержать внутри себя команду break. |
Эти команды используют в теле цикла для изменения последовательного хода выполнения команд.
Команда continue заставляет браузер пропустить выполнение всех команд после нее и до конца тела цикла. Но цикл продолжается!
Команда break еще радикальнее
Найти сумму 5 четных чисел, случайным образом взятых из диапазона [1,20].
var len = 5; // количество чисел var a = 1; // левая граница интервала var b = 20; // правая граница интервала var sum = 0; // сумматор var counter = 0; // счетчик чисел var number; // случайное число var str = ""; // строка для вывода while (counter < len) { number = Math.round(a + (b-a)*Math.random()); if (number%2) continue; sum += number; str += number; if (counter < len-1) str += " + "; else str += " = "; counter++; } str += sum; alert(str); |
Целые числа случайным образом генерируются из диапазона [1,20]. Суммировать эти числа до тех пор, пока очередное случайное число не станет равным 10.
var a = 1; // левая граница интервала var b = 20; // правая граница интервала var c = 10; // критическое значение случайного числа var sum = 0; // сумматор var number; // случайное число var str = ""; // строка для вывода for (;;) { number = Math.round(a + (b-a)*Math.random()); sum += number; str += number; if (number == c) break; str += " + "; } str += " = " + sum; alert(str); |
Испытатель while
Испытатель for
![]() |