Циклы

Прогрессии

Просуммируем несколько элементов арифметической прогрессии. Арифметической прогрессией называют ряд чисел, каждое последующее из которых равно предыдущему, плюс какое-то фиксированное число.

Напишем функцию. Первым параметром будет первое число (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()); // Проверяем, что гриб съедобен

Задания

  1. Напишите функцию isPlain, определяющую, является ли переданное целое положительное число — простым. Функция будет принимать один параметр number и возвращать true, если число — простое и false, если число делится на другое целое число без остатка. Например, числа 2, 3 и 5 являются простыми, а 9, 12 и 40 — не являются. В решении используйте цикл for. Чтобы проверить, является ли число простым, достаточно проверить, делится ли оно на числа от 2 до половины number (включительно) без остатка.
  2. Напишите функцию fib, получающую на вход положительное целое число и возвращающую число фибоначчи с указанным номером. (Первое и второе числа фибоначчи: 1, начиная с третьего, число фибоначчи равно сумме двух предыдущих чисел). Необходимо выполнить задание, используя цикл.
  3. Напишите функцию digitSumm, вычисляющую сумму цифр числа. Первый параметр функции — number. Для получения цифр используйте операцию получения остатка от деления %.

results matching ""

    No results matching ""