Циклы
Прогрессии
Просуммируем несколько элементов арифметической прогрессии. Арифметической прогрессией называют ряд чисел, каждое последующее из которых равно предыдущему, плюс какое-то фиксированное число.
Напишем функцию. Первым параметром будет первое число (base
), вторым — разница между соседними числами (diff
) и третьим — количество элементов последовательности (count
).
var summProgression = function (base, diff, count) {
var summ = 0;
// Нужно посчитать сумму
return summ;
}
Чтобы посчитать сумму, нам понадобится использовать цикл. Самый простой в объяснении цикл — цикл while
. Используем его:
var summProgression = function (base, diff, count) {
var summ = 0;
var value = base;
var i = 1;
while(i <= count) { // [1]
summ = summ + value; // [2]
value = value + diff; // [3]
i = i + 1; // [4]
}
return summ;
}
[1] — Проверяем, выполняется ли условие. Если условие не выполняется, выходим из цикла.
[2] — Накапливаем сумму.
[3] — Получаем следующее значение.
[4] — Меняем номер числа в последовательности на следующий.
Как только цикл выполнился count
раз, сумма считается подсчитанной и выполнение переходит к следующему за циклом оператору.
Три оператора цикла
В записи оператора цикла while
участвует только условие выполнения цикла. При этом присвоение начального значения переменной цикла и изменение этой переменной находятся на разных строках функции. В случае, если цикл разрастается больше, чем на экран (так, увы, бывает), это может привести тому, что такой код будет трудно сопровождать.
Чтобы вынести всё, что касается переменной цикла, в одну строку, используют оператор for
.
Используем оператор for
, чтобы записать условие в нашем примере:
// ...
for (var i = 1; i <= count; i = i + 1) { // [5]
summ = summ + value;
value = value + diff;
}
//
[5] — в этой строке изменение переменной цикла описано полностью.
Третий оператор цикла: do … while
, используется в случаях,
когда первое выполнение цикла должно произойти в любом случае,
даже если условие не выполняется.
Проиллюстрируем при помощи этого оператора высказывание: «все грибы съедобны, хотя бы один раз»:
do {
eatMushroom(); // Съедаем гриб
} while(mushroomIsEdible()); // Проверяем, что гриб съедобен
Задания
- Напишите функцию
isPlain
, определяющую, является ли переданное целое положительное число — простым. Функция будет принимать один параметрnumber
и возвращатьtrue
, если число — простое иfalse
, если число делится на другое целое число без остатка. Например, числа2
,3
и5
являются простыми, а9
,12
и40
— не являются. В решении используйте циклfor
. Чтобы проверить, является ли число простым, достаточно проверить, делится ли оно на числа от2
до половиныnumber
(включительно) без остатка. - Напишите функцию
fib
, получающую на вход положительное целое число и возвращающую число фибоначчи с указанным номером. (Первое и второе числа фибоначчи:1
, начиная с третьего, число фибоначчи равно сумме двух предыдущих чисел). Необходимо выполнить задание, используя цикл. - Напишите функцию
digitSumm
, вычисляющую сумму цифр числа. Первый параметр функции —number
. Для получения цифр используйте операцию получения остатка от деления%
.