Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Изменение управляющей переменной.




Изменение управляющей переменной можно перенести внутрь тела цикла, как это происходит в while и do while. Здесь будьте внимательны – точка с запятой в конце ОБЯЗАТЕЛЬНА.

 

for (var i = 1; i <= 5;)
{
document. write (i + " ");

i++;
}

 

Условие.

Условие конструкции также можно пропустить, однако в этом случае оно будет считаться по умолчанию истинным. Таким образом, мы получаем постоянно истинное условие и, как следствие - ВЕЧНЫЙ ЦИКЛ.

 

for (var i = 1;; i++)
{
document. write (i + " ");
}

 

 

Примечание:

Если хотите узнать, как пропустить условие и избежать вечного цикла - читайте следующий раздел урока.

 

Исходя из вышеописанного, мы можем сделать следующий вывод: ни одна из частей цикла for не является обязательной.

 

Как видите, работа for проста и аналогична работе while. Что выбрать?! Это зависит от поставленной задачи и от вашего решения.

Обычно цикл for используется, когда нам нужно повторить цикл определенное количество раз, либо получить числа в определенном интервале; while – когда у нас цикл выполняется неизвестное количество раз, вернее не зависит от итератора; do.. while – когда нам нужно сначало что-то выполнить, а потом проверить.

 

 

 

Ключевые слова break и continue.

 

Оператор break

Нередко при работе с циклами, возникает необходимость искусственно прервать выполнение цикла. Для этого используется, уже знакомый вам (по изучению switch), оператор break. Этот оператор должен находиться в теле цикла, в том месте, где необходимо сделать остановку. Например, именно с помощью этого оператора, мы можем решить проблему вечного цикла, в ситуации, когда условие в цикле for не указывается. Рассмотрим пример:

 

<html>
<head>
<script type="text/javascript">
for (var i = 1;; i++)
{
if (i ==6) break;
document. write (i + " ");
}
</script>
</head>

 

Комментарии к примеру:

1. Согласно правилу, условие цикла всегда истинно, так как его просто нет.

2. При значениях 1,2, 3, 4 и 5 переменной i условие оператора if выполняться не будет. break, естесственно не сработает, так как находится в теле if. Между тем, на экран последовательно будут выводиться числа 1,2, 3, 4 и 5.

3. Когда i станет равно 6, программа попадет в тело if и выполнится break. Цикл сразу же будет остановлен, а выполнение программы перейдет на следующую строчку за закрывающейся фигурной скобкой оператора for.

4. Цифра 6 на экране никогда не появится, так как, если сработал break, все что находится в цикле ниже него, уже не выполнится.

 

Примечание:

break может быть использован либо в цикле, либо в операторе switch. Любое другое размещение приводит к ошибке на этапе компиляции.

 

Оператор break удобно использовать тогда, когда мы по определению не знаем когда он закончиться, что может означать, что он может выполняться долго или закончиться от разных условий. Можно записать само условие в определенном месте, но из-за этого мы можем нагромоздить строчку условия. Давайте вернемся к старому примеру и переделаем его следующим образом:

 

 

<html>
<head>
<script type="text/javascript">
while (true)
{
var res = confirm("Хотите увидеть звездочку?");
if (res == false) break;

document. write ("*");
}
</script>
</head>

 

Вы можете проследить: мы сделали вечный цикл тем, что записали true в условие. Затем результат ответа пользователя записали в переменную и сравнили эту переменную с false (этот ответ будет, если пользователь нажмет отмену). Так вот, если он нажмет отмену, то произойдет выход из ЦИКа, если нет, то выйдет на экран звездочка. И так по кругу – у нас ведь бесконечный цикл.

 

Оператор 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 можно и не употреблять, ведь всегда можно условие перенести в управление цикла, но иногда это очень полезно и удобно, поэтому употреблять эти конструкции – это дело ваше.

 

 

Примеры

 

Следующие примеры на использование циклов и управляющих операторов 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>

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...