Цикл For

Вкратце

for (счётчик; предикат; изменение счётчика) {
  // тело цикла
}

// например
for (var index = 10; index >= 0; index--) {
  // ...
}

Инструкция цикла for по существу является сокращенной записью для while, позволяющей объявить счетчик, указать его начальное значение и условие прекращения более компактно - обычно в одну строку кода. Вот как изменится реализация переворота строки, если вместо while применить for:

static String reverseString(String str) {
    var result = "";

    for (var index = str.length() - 1; index >= 0; index--) {
        var currChar = str.charAt(index);
        result = result + currChar;
    }

    return result;
}

Можно читать так: «цикл с индексом index повторяется пока index >= 0 и после каждого шага уменьшает index на 1».

И за счет того, что вся эта фраза собрана в одной строке кода и к тому же легко в ней читается (если начальное значение, предикат и изменение могут быть записаны коротко), понятность кода от этого выигрывает.

В определении цикла for есть:

  1. начальное значение счетчика
  2. предикат-условие повторения циклов
  3. описание того, как счётчик меняется после каждого шага

Принцип работы точно такой же, как у цикла while. Традиционно цикл for применяют именно со счетчиками, когда некий счетчик принимает значения от M до N с некоторым шагом. Конечно, никто не мешает применять его, например, в такой форме:

var s = "";
for (; s.length < 3; ) { s += "*"; }
  • этот код создает строку s из трех “звездочек”, при этом не указано ни объявление счетчика, ни инструкция для изменения счетчика - только проверяемое условие. Но в таких случаях - когда счетчика нет - у цикла for нет преимущества в компактности кода перед while и тогда обычно применяют while.

Давайте рассмотрим ход движения программы на примере вызова функции с простой строкой:

reverseString("cat");

В строке 3 символа, поэтому в цикле будет 3 итерации.

Задание

Реализуйте функцию sumOfSeries, которая считает сумму ряда целых чисел. Ряд задаётся двумя числами — начальным и конечным.

Функция принимает два аргумента-числа и возвращает сумму ряда. Например, для аргументов 4, 7 сумма будет 4 + 5 + 6 + 7 = 22.

sumOfSeries(1, 2); // => 3
sumOfSeries(1, 3); // => 6
sumOfSeries(4, 7); // => 22

Если начальное и конечное числа равны, то результатом будет то же число:

sumOfSeries(1, 1); // => 1

Нашли ошибку? Есть что добавить? Пулреквесты приветствуютсяhttps://github.com/hexlet-basics

Упражнение доступно только авторизованным пользователям.

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