Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lesson 4.doc
Скачиваний:
4
Добавлен:
23.09.2019
Размер:
780.8 Кб
Скачать

Оператор 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>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]