Зачем нужны циклы?
Представьте, что вам нужно вывести на экран числа от 1 до 100. Писать 100 раз System.out.println() — неразумно и утомительно. А что если нужно вывести миллион чисел? Для таких задач в программировании существуют циклы — конструкции, которые позволяют повторять блок кода многократно.
Цикл while: повторяем, пока условие истинно
Цикл while — это цикл с предусловием. Он сначала проверяет условие, и только если оно истинно, выполняет команды внутри тела цикла.
Синтаксис:
while (условие) {
// команды для повторения
}
// код после цикла
Практический пример:
Представьте программу для кондиционера:
while (температураВКомнате > желаемаяТемпература) {
охлаждатьВоздух();
}
остановитьОхлаждение();
Задача:
вывести все числа от 1 до 100 и сумму всех этих чисел(1+2+3+4+5+6 и тд.)
Реализация:
class Counter {
public static void main(String[] args) {
int i = 1;
int sum = 0;
while (i <= 100) {
System.out.println(i);
i++; // увеличиваем i на 1
sum +=i
}
System.out.println(sum);
System.out.println("Готово!");
}
}
Наш цикл в коде будет работать пока переменная i меньше или равно 100
в блоке цикла мы увеличиваем (i++; // увеличиваем i на 1) таким образом выводим все переменные i пока они меньше или равно 100, так же у нас есть переменная sum, к ней мы с каждый раз добавляем новую i когда она обновляется
Цикл do-while
Цикл do-while похож на цикл while с одним небольшим отличием. Цикл do-while всегда выполняется один раз перед проверкой условия.
do {
// Блок кода
} while(condition);
Пример
На этом примере вы видите, что оператор do или блок кода всегда выполняются один раз перед проверкой истинности или ложности условия.
static int x = 5;
public static void main(String[] args) {
do {
System.out.println("x = "+x);
i++;
} while(x < 3);
}
Поскольку это do-while мы обязательно выполняем код как минимум один раз.
в блоке do мы выводим значение числа х, затем проверяем условие, пока (5<3)
это ложь, значит цикл продолжаться не будет и переменная i не будет увеличиваться
Ответ: 5
Цикл for: компактная запись счётчика
Цикл for — это более компактная форма цикла, которая объединяет инициализацию переменной, условие и изменение переменной в одной строке.
Синтаксис:
for (инициализация; условие; изменение) {
// команды для повторения
}
Тот же пример с числами, но с for:
class CompactCounter {
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
System.out.println(i);
}
System.out.println("Готово!");
}
}
Все тоже самое мы делаем в одной строке: for (int i = 1; i <= 100; i++)
создаем переменную i, проходим по циклу пока i <= 100, с каждой итерацией увеличиваем i++
Управление циклами: break и continue
Иногда нужно прервать цикл досрочно или пропустить текущую итерацию. Для этого существуют специальные команды:
break — мгновенный выход из цикла
for (int i = 0; i < 15; i++) {
if (i == 9) {
System.out.println("Найдено число 9!");
break; // сразу выходим из цикла
}
System.out.println("Текущее число: " + i);
}
System.out.println("Программа завершена");
Наш цикл должен пройти от 0 до 15, но в нашем цикле есть оператор условия if,
по его условию когда i=9, вызывается команда break, которая полностью останавливает цикл, цикл заканчивается на i=9
continue — пропуск текущей итерации
for (int i = 0; i < 15; i++) {
if (i == 9) {
System.out.println("Пропускаем число 9");
continue; // переходим к следующей итерации
}
System.out.println("Текущее число: " + i);
}
System.out.println("Программа завершена");
continue - просто пропускает указанную итерацию и продолжает цикл до конца
Практическое применение: поиск числа с флагом
Флаг — это булева переменная, которая отвечает на вопрос "произошло ли нужное событие?".
Задача:
Определить, есть ли среди введённых чисел ноль, и вывести "YES" если есть, "NO" если нет.
Решение с флагом:
import java.util.Scanner;
class ZeroFinder {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // сколько чисел проверим
boolean foundZero = false; // флаг - нашли ли ноль?
for (int i = 0; i < n; i++) {
int number = sc.nextInt();
if (number == 0) {
foundZero = true; // нашли ноль!
break; // можно выйти досрочно
}
}
if (foundZero) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
}
Вводим число n в терминал, это будет переменная до которой будет идти цикл.
(boolean foundZero = false) создаем флаг
В цикле создаем еще одну переменную, это числа которые мы можем ввести, но их не может быть больше переменной n
Если мы находим цифру 0, то флаг меняется (foundZero = true;)
В операторе if мы проверяем, если true, значит нашли 0, иначе не нашли
Почему это важно?
Циклы — фундаментальная концепция программирования. Они позволяют:
- Обрабатывать большие объемы данных
- Автоматизировать повторяющиеся задачи
- Создавать интерактивные программы
- Эффективно работать с коллекциями элементов
Освоив циклы, вы сможете писать по-настоящему мощные и эффективные программы!
Заключение
Мы закончили тему операторов, это уже ооочень большой шаг для начинающего айтишника, но еще все впереди, не забывайте решать задачи самостоятельно. Всем спасибо.