$ sudo teach IT
МОДУЛЬ 4 · УРОК 1

Цикл while

Представьте, что вам нужно вывести числа от 1 до 100. Писать 100 строк System.out.println — глупо. Циклы позволяют повторять действия много раз, написав код один раз.

⏱ ~20 минут 🎓 Для начинающих 📌 Начало модуля 4

🔄 Синтаксис while

while — цикл с предусловием. Тело цикла выполняется пока условие истинно. Сначала проверяется условие, потом выполняется тело:

public class WhileLoop {
    public static void main(String[] args) {
        int i = 1;
        while (i <= 5) {
            System.out.println(i);
            i++;  // ОБЯЗАТЕЛЬНО! Иначе бесконечный цикл
        }
        System.out.println("Готово!");
    }
}

Вывод: 1, 2, 3, 4, 5, «Готово!». Цикл выполняется 5 раз, потом условие i <= 5 становится false и цикл заканчивается.

Порядок выполнения:

  1. Проверить условие i <= 5
  2. Если true — выполнить тело цикла
  3. Вернуться к шагу 1
  4. Если false — выйти из цикла

🚫 Бесконечный цикл: Если забыть i++, переменная i всегда будет 1, условие 1 <= 5 всегда true, и цикл никогда не закончится. Программа зависнет!

🔢 Счётчик в цикле

// Вывод чисел от 1 до 10
int i = 1;
while (i <= 10) {
    System.out.println(i);
    i++;
}

// Обратный отсчёт от 10 до 1
int j = 10;
while (j >= 1) {
    System.out.println(j);
    j--;
}

// Чётные числа от 2 до 20
int n = 2;
while (n <= 20) {
    System.out.println(n);
    n += 2;
}

➕ Суммирование и подсчёт

public class Summation {
    public static void main(String[] args) {
        // Сумма чисел от 1 до 100
        int sum = 0;
        int i = 1;
        while (i <= 100) {
            sum += i;
            i++;
        }
        System.out.println("Сумма от 1 до 100: " + sum);  // 5050

        // Подсчёт чётных чисел от 1 до 50
        int count = 0;
        int n = 1;
        while (n <= 50) {
            if (n % 2 == 0) {
                count++;
            }
            n++;
        }
        System.out.println("Чётных чисел от 1 до 50: " + count);  // 25
    }
}

🔍 Поиск по условию

public class SearchWhile {
    public static void main(String[] args) {
        // Найти первое число, делящееся на 7 и на 3
        int number = 1;
        while (true) {
            if (number % 7 == 0 && number % 3 == 0) {
                System.out.println("Первое число: " + number);
                break;
            }
            number++;
        }
        // Выведет: 21
    }
}

Здесь while (true) — бесконечный цикл, который прерывается через break, когда условие найдено. Это безопасный паттерн, если вы точно знаете, когда выходить.

⚠️ Бесконечный цикл и как его избежать

// ОШИБКА: забыли инкремент
int x = 0;
while (x < 5) {
    System.out.println(x);
    // x++ забыли! → бесконечный цикл
}

// ОШИБКА: условие всегда true
while (true) {
    System.out.println("Навсегда!");
    // Нет break → бесконечный цикл
}

// ПРАВИЛЬНО:
int x = 0;
while (x < 5) {
    System.out.println(x);
    x++;
}

💡 Совет: Всегда проверяйте, что переменная цикла изменяется (инкрементируется/декрементируется) и что условие рано или поздно станет false.

✅ Итоги урока

  • while (условие) { тело } — цикл с предусловием
  • Тело выполняется пока условие true
  • Всегда изменяйте переменную цикла (иначе — бесконечный цикл)
  • Условие должно стать false рано или поздно
  • while (true) { ... break; } — безопасный бесконечный цикл с выходом

Далее: do-while — цикл с постусловием →

Проверяем понимание

3 вопроса

Сумма чисел

Premium