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

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

Відкрита

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 у реальному житті: Поки Барні в барі — Мо викидає його. Але Барні завжди повертається... Умова ніколи не змінюється = нескінченний цикл!

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

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--;
}
1
Задача
JAVA 25 SELF,  4 рівень,  1 лекція
Недоступна
Зворотний відлік перед стартом 🚀
Зворотний відлік перед стартом 🚀
1
Задача
JAVA 25 SELF,  4 рівень,  1 лекція
Недоступна
Розблокування смартфона 📱
Розблокування смартфона 📱
1
Задача
JAVA 25 SELF,  4 рівень,  1 лекція
Недоступна
Виведення місць у кінотеатрі 🎞️
Виведення місць у кінотеатрі 🎞️
1
Задача
JAVA 25 SELF,  4 рівень,  1 лекція
Недоступна
Облік витрат на каву ☕
Облік витрат на каву ☕
Коментарі
  • популярні
  • нові
  • старі
Щоб залишити коментар, потрібно ввійти в систему
Для цієї сторінки немає коментарів.