Циклы

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

Вот некоторые примеры циклично повторяющихся действий:

  • Ожидание подключения клиента. После подключения, нам нужно ожидать следующего клиента, т.е. мы снова повторяем действие "Ожидание подключения клиента".
  • Отображения элемента списка. При разработке мессенджера, нам нужно отобразить на экране пользователя историю сообщений. Каждое сообщение отдельный элемент, и нам нужно отображать один за другим, т.е. выполнять одинаковые действия с каждым элементом списка.
  • Выполнение алгоритма, до тех пор пока условие не нарушено. Например, допустим у нас имеется автополив растений. Мы раз за разом проверяем условие, если влажность почвы ниже 30%, то включить помпу. Как видите здесь тоже имеет место цикличность.

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


Цикл while

while - "до тех пор пока" (для программистов переводится с англ. как предлог)

Цикл while используется для повторения блока кода, пока некоторое условие истинно.

Пример:

public class Main { public static void main(String[] args) { int count = 0; while (count < 5) { // До тех пор пока count меньше 5, выполняем блок кода System.out.println("Счетчик: " + count); // Выводим сообщение на экран count++; // инкрементируем переменную (увеличение на единицу) } } }

В данном примере цикл выполняется до тех пор пока count < 5, так как count увеличивается на единицу каждую итерацию цикла, то цикл выполнится 5 раз

Пример (бесконечный цикл):

public class Main { public static void main(String[] args) { while (true) { System.out.println("Hello world"); } } }

В этом примере цикл не завершиться, так как условие всегда истинно.

Пример:

public class Main { public static void main(String[] args) { while (false) { System.out.println("Hello world"); } } }

А данный пример вообще не запустится, так как цикл не сможет вообще запуститься!


Цикл do-while

Есть люди которые сначала думают, а потом делают, а есть люди которые сначала делают, а потом думают.

Так вот, цикл while перед началом выполнения блока проверял условие. Но есть в java цикл, который сначала выполняет одну итерацию, а затем проверяет условие, такое цикл называется do-while.

Цикл do-while похож на цикл while, за исключением того, что он гарантирует, что блок кода будет выполнен хотя бы один раз, даже если условие ложно.

Пример:

public class Main { public static void main(String[] args) { int number = 101; do { System.out.println(number); } while (number < 100); } }

Условие на 6 строке кода не позволит выполняться циклу, однако как минимум один раз это цикл выполнится и выведет на экран значение числа number.

Цикл do-while выполняет блок кода, затем проверяет условие. Если условие истинно, то цикл продолжается. Процесс повторяется до тех пор, пока условие станет ложным.

Для обеспечения работы циклов while и do-while мы создавали переменную, затем сравнивали, а в самом цикле меняли её значение. В Java сещуствует цикл, который позволяет держать все эти операции в одном месте.


Цикл for

Цикл for предоставляет удобный способ для выполнения итераций по заданному диапазону значений или перебора списка.

Как перебирать списки мы узнаем позже, а сейчас посмотрим на синтаксис этой конструкции.

Пример:

public class Main { public static void main(String[] args) { for (int i = 0; i < 3; i++) { // выведет 0, затем 1, затем 2 System.out.println(i); } } }

Рассмотрим конструкцию for подробней:

начало
int i = 0
Выполняется один раз при входе в цикл
условие
i < 3
Проверяется перед каждой итерацией цикла.
Если оно вычислится в false, цикл остановится.
тело
System.out.println(i);
Выполняется снова и снова, пока условие вычисляется в true.
шаг i++ Выполняется после тела цикла на каждой итерации перед проверкой условия.

Так же, хочу обратить внимание на то, что переменная i объявлена в скобках цикла for. Такая переменная называется локальный и существует только пределах блока кода цикла. При попытке обратиться к ней за пределами цикла, мы получим ошибку.

Пример:

public class Main { public static void main(String[] args) { for (int i = 0; i < 3; i++) { // выведет 0, затем 1, затем 2 System.out.println(i); } System.out.println(i); // Здесь будет ошибка!!! } }

Прерывание цикла: «break»

Обычно цикл завершается при вычислении условия в false.

Но мы можем выйти из цикла в любой момент с помощью специальной директивы break.

Пример:

public class Main { public static void main(String[] args) { for (int i = 0; i < 10; i++) { if (i == 5){ break; } // Прерываем цикл если i=5 System.out.println(i); } } }

В данном примере цикл должен был бы выполнится 10 раз, однако когда переменная i станет равна 5 цикл встретит дериктиву break и завершится.

Переход к следующей итерации: «continue»

Если есть необходимость пропустить итерацию цикла, это можно реализовать используя директиву continue.

Пример:

public class Main { public static void main(String[] args) { for (int i = 0; i < 10; i++) { if (i == 5){ continue; } // Пропускаем итерацию цикла при i=5 System.out.println(i); } } }

В данном примере будут выведены числа от 0 до 9 кроме числа 5


Мы рассмотрели различные циклы в языке программирования java. Понимание работы этих циклов позволяет эффективно управлять повторяющимися операциями в программах.

Напоминаю, что от теории мало толку если не подкреплять её практикой, решайте задачи для закрипления материала. Решать задачи


Комментарии

Добавить комментарий

Чтобы оставить комменатрий необходимо Авторизоваться