Что такое циклы

Программа, написанная на языке Java, состоит из определенного кода. Обычно он выполняется последовательно: строка за строкой, сверху вниз. Но есть и такие конструкции кода, которые меняют линейное выполнение программы. Их называют управляющими конструкциями. Циклы в Java - 1Благодаря им, код можно выполнять выборочно. Например, запустить один блок кода вместо другого. Циклы — это разновидность управляющих конструкций для организации многократного выполнения одного и того же участка кода. Код внутри такой управляющей конструкции выполняется циклично. Каждое выполнение кода — это итерация цикла. Количество итераций регулируется условием цикла. Код, который выполняется внутри цикла, называют телом цикла. Известны такие виды циклов:
  1. Циклы с предусловием: условие выполнения определяется перед первой итерацией.

  2. Циклы с постусловием: условие выполнения определяется после первой итерации (поэтому они всегда выполняются минимум один раз). Полезны, когда нужно выполнять некое действие, пока не реализуется некое условие: например, считывать ввод пользователя, пока он не введет слово “stop”.

  3. Циклы со счетчиком: количество итераций определяется смоделированным счетчиком. В условии цикла задается его начальное и конечное значение. Каждую итерацию счетчик наращивается. Мы можем заранее определить количество итераций.

    Эти циклы бывают полезны, когда нужно перебрать все элементы в какой-то коллекции. Циклы со счетчиком называют “циклами для...”. “Для каждого элемента некоторой коллекции осуществить следующие действия”.

    Допустимы случаи, когда выполнение цикла можно прервать до достижения его условия. Например, если у нас есть коллекция из 100 чисел и нам необходимо понять, содержит ли она отрицательные числа. Мы можем начать перебор всех чисел, используя цикл “для”. Но когда мы найдем первое отрицательное число, нам не обязательно перебирать оставшиеся числа. Мы можем прервать выполнение цикла, если его дальнейшее выполнение не имеет смысла. Подобные ситуации называют прерыванием цикла.

  4. Безусловные циклы — циклы, которые выполняются бесконечно. Например: “Пока 1=1, печатать “1=1””. Такая программа будет выполняться, пока ее вручную не прервут.

    Данные циклы тоже бывают полезны, когда используются вместе с прерыванием цикла “изнутри”. Используйте их осторожно, чтобы не спровоцировать зависание программы.

    Подробнее с циклами в языке программирования Java можно познакомиться на 4-ом уровне курса JavaRush. В частности, с циклами while и for.

Циклы в Java

Теперь рассмотрим циклы в Java. В этом ЯП их есть несколько типов:
  • while — цикл с предусловием;
  • do..while — цикл с постусловием;
  • for — цикл со счетчиком (цикл для);
  • for each.. — цикл “для каждого…” — разновидность for для перебора коллекции элементов.

while, do.. while и for можно использовать в качестве безусловных циклов. Сравнить синтаксис циклов в разных языках программирования можно на четвертом уровне обучения курса JavaRush. Например циклов for и while. Рассмотрим кратко каждый из представленных типов.

Цикл while

Этот цикл в Java структурно выглядит так:

while (expression) {
     statement(s)
}
Здесь:
  • expression — условие цикла, выражение, которое должно возвращать boolean значение.
  • statement(s) — тело цикла (одна или более строк кода).
Перед каждой итерацией будет вычисляться значение выражения expression. Если результатом выражения будет true, выполняется тело цикла — statement(s). Пример:

public class WhileExample {
    public static void main(String[] args) {
        int countDown = 10;

        while (countDown >= 0) {
            System.out.println("До старта: " + countDown);
            countDown --;
        }

        System.out.println("Поехали !");
        
    }
}
Вывод:

До старта: 10
До старта: 9
До старта: 8
До старта: 7
До старта: 6
До старта: 5
До старта: 4
До старта: 3
До старта: 2
До старта: 1
До старта: 0
Поехали !
Используя while, можно создать бесконечный цикл:

while (true) {
    // тело цикла
}
Чтобы прервать выполнение цикла, используется оператор break. Например:

public class WhileExample {
    public static void main(String[] args) {

        int count = 1;
        while (true) {
            System.out.println("Строка №" + count);
            if (count > 3) {
                break;
            }
            count++; // Без наращивания цикл будет выполняться вечно
        }

    }
}
Вывод:

Строка №1
Строка №2
Строка №3
Строка №4
Попрактиковаться в написании своих циклов можно уже на 4-ом уровне курса JavaRush.

Цикл do..while

Структура do.. while выглядит так:

do {
     statement(s)
} while (expression);
Здесь:
  • expression — условие цикла, выражение, которое должно возвращать boolean значение.
  • statement(s) — тело цикла (одна или более строк кода).
В отличие от while, значение expression будет вычисляться после каждой итерации. Если результатом выражения будет true, в очередной раз выполнится тело цикла — statement(s) (как минимум раз). Пример:

public class DoWhileExample {
    public static void main(String[] args) {
        int count = 1;
        do {
            System.out.println("count = " + count);
            count ++;
        } while (count < 11);
    }
}
Вывод:

count = 1
count = 2
count = 3
count = 4
count = 5
count = 6
count = 7
count = 8
count = 9
count = 10

Цикл for

Этот Java цикл выглядит так:

for (initialization; termination; increment) {
    statement(s)
}
Здесь:
  • initialization — выражение, которое инициализирует выполнение цикла. Исполняется только раз в начале цикла. Чаще всего в данном выражении инициализируют счетчик цикла
  • terminationboolean выражение, которое регулирует окончание выполнения цикла. Если результат выражения будет равен false, цикл for прервется.
  • increment — выражение, которое исполняется после каждой итерации цикла. Чаще всего в данном выражении происходит инкрементирование или декрементирование переменной счетчика.
  • statement(s) — тело цикла.
Выражения initialization, termination, increment опциональны. Если опустить каждое из них, мы получим бесконечный цикл:

// бесконечный цикл
for ( ; ; ) {
    // код тела цикла
}
Пример цикла for:

public class ForExample {

    public static void main(String[] args) {
        for (int i = 1; i < 6; i++) {
            System.out.println("Строка №" + i);
        }
    }
}
Вывод:

Строка №1
Строка №2
Строка №3
Строка №4
Строка №5
Практикум по циклу for представлен на четвертом уровне курса JavaRush.

Цикл for each

Этот цикл Java — разновидность цикла for для итерации коллекций и массивов. Структура for each выглядит так:

for (Type var : vars) {
    statement(s)
}
Здесь:
  • vars — переменная, существующий список или массив
  • Type var — определение новой переменной того же типа (Type), что и коллекция vars.
Данную конструкцию можно прочитать так: “Для каждого var из vars сделать...”. Предположим, у нас есть массив строк из названий дней недели. Выведем каждый элемент этого массива на печать:

public class ForExample {

    public static void main(String[] args) {
        String[] daysOfWeek =
                { "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье" };
        
        
        for (String dayOfWeek : daysOfWeek) {
            System.out.println(dayOfWeek);
        }
    }
}
Циклы Java изучаются на курсе JavaRush на четвертом уровне квеста Java Syntax. Попробуйте свои силы в решении задач по этой теме :) Циклы в Java - 2