Главная
Простейшие операторы
Операторы условия
Циклы
Массивы
Массивы II
Строки
Функции I
Функции II

Цикл for

Цикл - это многоразовое повторение одних и тех же действий. Цикл for также называют "счетчик". Опять таки классический пример - написать программу для вычисления среднего арифметического, ну, скажем, трех чисел. Как? А очень просто: спрашиваем первое число - прибавляем его к сумме - спрашиваем второе число - прибавляем его к сумме - спрашиваем третье число - прибавляем его к сумме - делим сумму на три, чтобы получить среднее арифметическое.

<script>
var a, s=0;
for (i=1; i<4; ++i) {
a=prompt("Введи число №"+i, "");
s=s+Number(a);
}
{alert("Среднее арифметическое введенных вами чисел равно "+s/3);}
</script>
В этой программе переменная s после первого раза выполнения цикла примет значение переменной a, потом - a+a, потом - a+a+a. Рассмотрим по подробней конструкцию цикла.

А это две части: условие цикла и операторы для выполнения. Условие задается в круглых скобках: for (i=1; i<4; ++i). Счет цикла начинается с того значения переменной, которое указано первым в скобках - начальное значение цикла.

Как только второе выражение в условии цикла примет ложное значение выполнение цикла прекратится - конечное значение цикла. Ну а последнее значение в скобках показывает шаг изменения основной переменной цикла (по ней начальное значение должно "прийти" в конечное). В нашем примере этот шаг равен единице. И каждый раз после выполнения операторов, записанных в теле цикла, значение начальной переменной увеличивается на 1, пока не станет больше трех. Для шага стоит запомнить несколько операторов:
++ унарный плюс - увеличение на единицу (если i==5, то ++i или i++ будет равно 6)
-- унарный минус - то же самое, только уменьшение (i будет равно 4)
+= то же самое, только увеличивает не обязательно на единицу (i+=2 означает i=i+2, и i в таком случае будет равно 7)
-= уменьшение на произвольное число (i-=2 - это то же, что и i=i-2, и i будет равно 3)
*= /= аналогично

++i и i++ немного отличаются. Префиксные операции (первая) увеличит значение переменной первым делом (речь идет не о циклах: ведь эти операторы можно применять где угодно). Допустим, значение переменной i было равно 1. Тогда: ++i + 13 будет равно 15, так как i сначала увеличилась на единицу, а потом прибавилась к тринадцати.

А i++ +13 будет равно 14, так как i сначала прибавилась к тринадцати, а потом увеличилась на 1. Рассмотрим программу, которая будет последовательно выводить натуральные числа от 1 до 10.

<script>
for(i=1; i<11; ++i) {
alert(i)
} </script>

Пользы в такой программе немного, но можно заставить пользователя помучиться, если организовать бесконечный цикл. Если заменить условие цикла на такое: for (i=1; i>0; ++i), то натуральные числа будут выводиться пользователю бесконечно, ведь i бесконечно долго будет больше нуля. Разумеется, бесконечных циклов следует всегда избегать и перепроверять на них код, но такая хакерская шутка может помочь развеселить или разгневить ваших друзей и родственников.

Упражнение 7
Усложним наше среднее арифметическое. Пусть теперь пользователь сначала скажет, сколько чисел он хочет ввести, а затем только введет их все. Например, если пользователь закажет 6 чисел, то среднее арифметическое надо будет вывести для 6 чисел.
Упражнение 8
Еще одно математическое упражнение. На этот раз программа будет выводить факториал введенного пользователем числа. Вспомним, что факториал - это произведение последовательных натуральных чисел. Т.е. n!=1·2·3·...·n; 5!=1·2·3·4·5=120. Но факториал растет настолько быстро, что вскоре число бы не поместилось в окно сообщения, поэтому они будут выводиться в экспонентациальном режиме, а после 170! JavaScript вообще перестанет считать и выдаст "Infinity".

Цикл while

А этот цикл не требует наличия переменных для "счетчика". В качестве примера рассмотрим одну из наших программ, которая просила пользоdателя ввести ноль. Теперь программа будет просить делать это до тех пор, пока пользователь не введет ноль.

<script>
a=prompt("Введите число","(Введи лучше НОЛЬ (0))");
while (a != 0) {
a=prompt("Введи НОЛЬ - говорю!!!", "Please...");
}
alert("Неужели дошло!");
</script>
Таким образом, цикл while будет выполняться до тех пор, пока выражение в скобках не станет ложным. Совместив метод confirm() и цикл while, можно сделать программы, которые перестанут работать тогда, когда пользователь нажмет "Отмена". Выглядеть это будет примерно так:

<script>
var a=true;
while (a) {
......................................
a=confirm("Начать программу заново?");}
</script>

Упражнение 9
Программа проверки пароля. Предложите пользователю угадать какое-нибудь слово или число. Через 5 попыток скажите ему, что он ошибся. Можно сделать, чтобы пользователь пытался отгадывать случайное число.

[В начало]

Hosted by uCoz