- •1. Введение
- •2. Динамическое заполнение страницы
- •3. Циклы
- •3.1. Цикл do .. While
- •3.2. Цикл while
- •3.3. Примеры
- •3.4. Конструкция for
- •Общий синтаксис и принцип работы конструкции for:
- •Пример использования:
- •Комментарий к примеру:
- •Некоторые особенности синтаксиса for:
- •Инициализация управляющей переменной.
- •Изменение управляющей переменной.
- •Условие.
- •3.5. Ключевые слова break и continue. Оператор break
- •Комментарии к примеру:
- •Оператор continue
- •Комментарии к примеру.
- •3.6. Примеры
- •3.7. Вложенная конструкция циклов
- •Еще один пример:
- •Комментарий к коду:
- •4. Самостоятельное задание:
Оператор continue
Оператор continue используется для прерывания текущей итерации цикла и осуществления перехода на следующий шаг. В ряде случаев, такие действия являются необходимыми. Если выполняется оператор continue, то в зависимости от вида цикла происходит следующее:
Циклы while и do while останавливают выполнение шага и переходят к проверке условия.
Цикл for также останавливает выполнение шага. Но, сначала переходит к изменению управляющей переменной, а потом уже к проверке условия.
Рассмотрим пример: показать на экран все нечетные целые числа, в диапазоне от нуля до 25 включительно.
<html> <head> <script type="text/javascript"> for(var i=0; i<26; i++) { if(i%2 == 0) // если число делится на два без остатка { continue; // остановить итерацию цикла и перейти к i++ } document.write(i + " "); } </script> </head>
Комментарии к примеру.
1. Цикл начинает свое движение с нуля и проходит итерации до 25 включительно.
2. Внутри цикла предусмотрено условие: если число i – четное, то нужно остановить текущий шаг цикла (continue) и перейти к конструкции i++.
3. То, что располагается ниже сработавшего оператора continue на текущем шаге, уже не выполнится.
4. Если условие if не выполняется, значит, число i нечетное, if будет проигнорирован, а число – отображено на экран.
Видите, что просто в некоторых случаях document.write() будет игнорирован.
Давайте для наглядности сделаем следующее: выведем цифры от 0 до 100, которые не делятся на 2, 3 и на 5.
<html> <head> <script type="text/javascript"> for(var i=0; i<100; i++) { if(i%2 == 0) continue; if(i%3 == 0) continue; if(i%5 == 0) continue; document.write(i + " "); } </script> </head>
Думаю, комментарии излишни.
Примечание:
Будьте внимательны при использовании конструкции continue внутри циклов while и do .. while. Ведь в этих циклах внутри тела цикла необходимо записывать увеличение переменной-итератора. Если вы поставите увеличение итератора ниже, чем continue, то у вас получиться вечный цикл. Ведь continue пропускает все, что за ним находиться и переходит к следующей итерации. Внимательно проанализируйте следующий код:
<html> <head> <script type="text/javascript"> var i=0 while(i<100) { if(i%2 == 0) continue; if(i%3 == 0) continue; if(i%5 == 0) continue; document.write(i + " "); i++; } </script> </head>
Послесловие:
Конструкции break и continue можно и не употреблять, ведь всегда можно условие перенести в управление цикла, но иногда это очень полезно и удобно, поэтому употреблять эти конструкции – это дело ваше.
3.6. Примеры
Следующие примеры на использование циклов и управляющих операторов break и continue вы должны выполнить самостоятельно. Но все же, если что-то не понятно вы можете подсматривать в готовые решения. А если вы не можете самостоятельно их решить, то проследите за ходом решения и вам будет задание по проще: попробуйте переделать циклы на противоположные. К примеру, если в примере был использован цикл while, то переделайте его на for, или наоборот. Так же вы можете попробовать переделать цикл do .. while на while и наоборот, либо в for. В любом случае вы должны уметь переделывать один вид цикла в другой. В уроке есть даже примеры по поводу этого.
1. Вычислить сумму чисел в заданном диапазоне.
2. Написать программу, вычисляющую 10!
3. Вычислить сумму четных чисел и произведение нечетных в заданном диапазоне.
4. Разбить введенное число на отдельные цифры и вывести в обратном порядке.
5. Найти сумму целых положительных чисел, больших 20, меньших 100 и кратных 3.
6. Составьте программу вычисления степени числа A с натуральным показателем N.
1. Задание: Вычислить сумму чисел в заданном диапазоне.
Решение: Для начала нам необходимо составить программу, которая будет просто выводить числа в заданном диапазоне. Я думаю, это простая задача организовать счетчик, тем более за счет цикла for. А теперь каким-то образом необходимо сложить все эти числа. Эта задача кажется сложно, но только в первый раз. Будьте внимательны, это очень важно, потому что эту операцию мы будем использовать постоянно, и вы должны ее понять. Для того, чтобы сложить числа в цикле необходимо создать переменную, за его пределами. Эта переменная и будет самой суммой. Сумма с самого начала будет нулевой. В цикле, каждую итерацию цикла, мы будем к этой переменной добавлять новое значение нашего счетчика (обычного числа из диапазона). Это можно сделать двумя способами: sum = sum + i либо sum += i. Эти две операции идентичны, но вторая намного проще для записи, поэтому мы будем использовать ее.
<html> <head> <script type="text/javascript"> var start = prompt("Введите первое число:", 0); start = parseInt(start); var finish = prompt("Введите второе число:", 0); finish = parseInt(finish); var sum = 0; for (var i=start; i<finish; i++) { sum += i; } document.write("Сумма чисел в диапазоне от " + start + " до " + finish + " не включая, равна " + sum + "."); </script> </head>
2. Задание: Факториал числа n (обозначается n!) — произведение всех натуральных чисел от 1 до n включительно. Написать программу, вычисляющую10!.
Решение: Это задание аналогично прошлому, только теперь необходимо не складывать все числа, а их перемножать. Если не поняли, то смотрите:
<html> <head> <script type="text/javascript"> var fact = 1; for (var i=1; i<=10; i++) { fact *= i; } document.write("10! = " + fact); </script> </head>
В этом примере много чего изменилось: например переменная, которая будет постоянно в цикле умножаться на итератор равна 1, как вы думаете почему не нуля, как в прошлом случае? Плюс к этому мы изменили знак на «меньше либо равно», потому что 10 нам нужно включить в факториал, если бы мы оставили знак «меньше», то числа были в интервале от 1 до 9.
3. Задание: Вычислить сумму четных чисел и произведение нечетных в заданном диапазоне.
Решение: Решив два предыдущих задания, для этого будут комментарии излишни.
<html> <head> <script type="text/javascript"> var start = prompt("Введите первое число:", 0); start = parseInt(start); var finish = prompt("Введите второе число:", 0); finish = parseInt(finish); var sum = 0; var mul = 1; for (var i=start; i<finish; i++) { if (i%2 == 0) sum += i; else mul *= i; } document.write("Сумма четных чисел в диапазоне от " + start + " до " + finish + " не включая, равна " + sum + ".<br>"); document.write("Произведение нечетных чисел в диапазоне от " + start + " до " + finish + " не включая, равна " + sum + ".<br>"); </script> </head>
4. Задание: Разбить введенное число на отдельные цифры и вывести в обратном порядке.
Решение: Помните, как мы могли выделить цифру из числа? Знаете, а это циклический процесс. Давайте вспомним старую задачу, когда мы знали количество знаков числа:
123 = 1*100 + 2*10 + 3*1;
3 = (123/1) % 10;
2 = (123/10) % 10;
1 = (123/100) % 10;
Видите цикл? Он заключается в том, что увеличивается количество нулей в числе, которое является делителем. Для этого подходит цикл for: for(var div = 1; ; div *= 10). Пока условия для выхода нет, но итератор уже есть. Мы выйдем из цикла тогда, когда у нас при делении на итератор получиться ноль, конечно, если сделать его целым. Все остальные операции понятны.
<html> <head> <script type="text/javascript"> var num = prompt("Введите число:", 0); num = parseInt(num); document.write("Число наоборот: "); for (var div=1; ; div*=10) { //Узнать число в div (1, 10, 100, ..) раз меньшее var fig = parseInt(num/div); //Если это число равно нулю значит пора заканчивать if (fig == 0) break; document.write(fig%10); } </script> </head>
5. Задание: Найти сумму целых положительных чисел, больших 20, меньших 100 и кратных 3.
Решение: Это задание, тоже не будет прокомментировано.
<html> <head> <script type="text/javascript"> var sum = 0; for (var i=20; i<100; i++) { if (i%3 != 0) continue; sum += i; } document.write("Cумма целых положительных чисел, больших 20, меньших 100 и кратных 3: " + sum); </script> </head>
6. Задание: Составьте программу вычисления степени числа A с натуральным показателем N.
Решение: Эта задача сводится к тем же, которые были рассмотрены в начале. Проанализируйте код:
<html> <head> <script type="text/javascript"> var num = prompt("Введите число:", 2); num = parseInt(num); var p = prompt("Введите степень:", 3); p = parseInt(p); var pow = 1; for (var i=0; i<p; i++) { pow *= num; } document.write("Число " + num + " в степени " + p + " равно " + pow); </script> </head>