JavaRush /Курси /JAVA 25 SELF /Цикл while: знайомство та нюанси роботи

Цикл while: знайомство та нюанси роботи

JAVA 25 SELF
Рівень 4 , Лекція 1
Відкрита

1. Вступ

У програмуванні регулярно доводиться виконувати одні й ті самі дії багато разів поспіль. Наприклад:

  • Перебрати всі елементи списку.
  • Зчитувати з клавіатури значення, доки користувач не введе потрібне.
  • Обчислити суму чисел від 1 до 100.
  • Запитувати пароль у користувача, доки він не стане правильним.

Якщо спробувати все це реалізувати без циклів, отримаємо довгий, нудний і практично немасштабований код. Уявіть, що ви пишете програму-калькулятор і вирішуєте додавати числа від 1 до 10 вручну:

int sum = 0;
sum = sum + 1;
sum = sum + 2;
sum = sum + 3;
// ... і так 10 разів. Незручно.
Ручне повторення без циклу — незручно!

Вам стане нудно раніше, ніж ви закінчите. Рішення — цикли. Вони дають змогу описати повторення дій лаконічно й зрозуміло. Сьогодні познайомимося з одним із найпростіших, але надзвичайно корисних циклів — while.

2. Знайомство з циклом while

Синтаксис і базова схема

Цикл while — це «папуга» у світі програмування: він повторює один і той самий фрагмент коду доти, доки виконується певна умова. Щойно умова перестає бути істинною, папуга замовкає (цикл завершується).

Синтаксис:

while (умова)
{
    // Тіло циклу
}
Запис циклу while з блоком команд

Діаграма

Ось проста блок‑схема для розуміння роботи циклу while:

uml-while

3. Приклади: цикл while у дії

Класичний лічильник

Зробімо просту програму, яка рахує від 1 до 5 і виводить числа:

int i = 1;
while (i <= 5)
{
    System.out.println("Крок № " + i);
    i++; // Не забудьте збільшити лічильник!
}
// Виведе:
// Крок № 1
// Крок № 2
// Крок № 3
// Крок № 4
// Крок № 5

Зверніть увагу: якщо забути збільшити змінну i, цикл ніколи не завершиться (наш «папуга» повторюватиме без кінця). Це називається нескінченний цикл — небезпечна ситуація.

Введення з клавіатури до потрібного значення

Часто цикл використовують, щоб повторно запитувати правильну відповідь у користувача:

String password = "";
while (!password.equals("qwerty"))
{
    System.out.print("Введіть пароль: ");
    password = console.nextLine();
}
System.out.println("Ласкаво просимо!");

Тут програма просить ввести пароль, доки ви не введете умовне "qwerty". Не забудьте: якщо видалити рядок password = console.nextLine();, цикл знову стане нескінченним (питатиме пароль, але не читатиме введення).

4. Види та сценарії використання циклу while

Звичайний цикл while

Цей цикл, як було показано вище, перевіряє умову до першої ітерації. Якщо умова хибна одразу — тіло циклу не виконається жодного разу.

Приклад: умова не виконується одразу

int i = 10;
while (i < 5)
{
    System.out.println(i); // Не виконається ніколи!
}

Саме так і працює.

Вкладені цикли while

Іноді потрібно створити цикл усередині іншого циклу. Наприклад, перебрати всі рядки й у кожному з них перевірити всі символи. Ось простий приклад:

int i = 1;
while (i <= 3)
{
    int j = 1;
    while (j <= 2)
    {
        System.out.println("i = " + i + ", j = " + j);
        j++;
    }
    i++;
}

// i = 1, j = 1
// i = 1, j = 2
// i = 2, j = 1
// i = 2, j = 2
// i = 3, j = 1
// i = 3, j = 2

Детальніше розглядатимемо вкладені цикли через кілька лекцій — наразі цього прикладу достатньо для ілюстрації ідеї.

Нескінченний цикл

Іноді цикли завершуються, а іноді — виконуються вічно.

while (true)
{
    System.out.println("Я вічний!");
}

Такий підхід використовують рідко — переважно для фонових процесів (наприклад, для роботи сервера), але іноді він буває корисним на практиці.

5. Як уникати помилок: часті помилки з while

У програмуванні цикл — як електрика: корисний інструмент, але потрібно дотримуватися правил безпеки.

Проблема 1: нескінченний цикл через неуважність

Часто новачки забувають оновлювати змінну, від якої залежить умова. У результаті цикл працює нескінченно, і доводиться зупиняти програму примусово (наприклад, комбінацією клавіш Ctrl + C).

int i = 1;
while (i <= 5)
{
    System.out.println(i);
    // Забули збільшити i
}

Проблема 2: некоректно задана умова

Іноді умову задано некоректно: вона ніколи не буває істинною. У результаті цикл не виконується взагалі.

int i = 10;
while (i < 5)
{
    System.out.println(i); // Цей код ніколи не спрацює.
    i++;
}

Проблема 3: помилка з типами даних

В умові циклу завжди має бути булевий вираз — тобто результат обчислення має бути true або false.

int number = 5;
while (number) // Помилка! Очікувався boolean, а не int.
{
    number--;
}
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ