| Роботландский Университет © А.А.Дуванов |
На предыдущих уроках рассматривались команды:
| команда присваивания | 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
|
|