Роботландский Университет © А.А.Дуванов |
На предыдущих уроках рассматривались команды:
команда присваивания | result = x*y; |
условная команда | if (x) z++; |
переключатель |
switch(x) { case "1": str = "one"; break; case "2": str = "two"; break; default: str = "ошибка"; } |
блок (составная команда) | { 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.floor(a + (b-a+1)*Math.random()); if (number%2) continue; sum += number; str += number; if (counter < len-1) str += " + "; else str += " = "; counter++; } str += sum; alert(str); |
Замечание. Стандартная функция Math.random() генерирует случайное число из отрезка [0,1]. Стандартная функция Math.floor(num) возвращает ближайщее целое число, меньшее или равное аргументу.
Целые числа случайным образом генерируются из диапазона [1,20]. Требуется суммировать эти числа до тех пор, пока очередное случайное число не станет равным 10.
var a = 1; // Левая граница интервала. var b = 20; // Правая граница интервала. var special = 10; // Критическое значение случайного числа. var sum = 0; // Сумматор. var number; // Случайное число. var str = ""; // Строка для вывода. for (;;) { number = Math.floor(a + (b-a+1)*Math.random()); sum += number; str += number; if (number == special) break; str += " + "; } str += " = " + sum; alert(str); |
Замечание. Конструкцияfor(;;){...} используется для задания бесконечного цикла.
Испытатель while
Испытатель for
В каждом задании трех Зачетных классов нужно записать сообщение, которое появится в окошке alert после выполнения скрипта.
Сначала нажмите кнопку Сброс, затем приступайте к решению.
Сначала нажмите кнопку Сброс, затем приступайте к решению.
Сначала нажмите кнопку Сброс, затем приступайте к решению.
![]() |