1. Цикли в нашому житті
Дуже часто в нашому житті доводиться виконувати однотипні дії багато разів. Наприклад, мені потрібно відсканувати багатосторінковий документ. Тоді ми знову і знову виконуємо один і той самий порядок дій:
- Покласти першу сторінку на сканер
- Натиснути кнопку сканувати
- Покласти наступну сторінку
Вручну це робити складно. Було б добре, якби цей процес можна було якось автоматизувати.
Або ще приклад: я хочу відмітити всі непрочитані листи в поштовій скриньці як спам. Колись їх потрібно було виділяти по одному і помічати як спам.
Але програмісти народ лінивий, тому цю функцію вже давно автоматизували: ви просто виділяєте будь-який список листів і натискаєте кнопку «помітити як спам», а ваш поштовий клієнт сам проходиться по цьому списку і переносить кожен лист у папку спам.
Що тут сказати? Зручно, коли комп'ютер або програма можуть зробити сотні і тисячі рутинних операцій за один клік. Зараз цьому навчитеся і ви.
2. Цикл while
Оператор if-else суттєво розширив наші можливості програмування: тепер можна писати програми, які виконують різні дії в різних ситуаціях. Але є ще одна річ, яка зробить наші програми на порядок потужнішими — це цикли.
У Java є 4 види циклів: while, for, for-each і do-while. Зараз ми розглянемо найперший з них.
Оператор циклу while дуже простий і складається всього з двох частин: умова і тіло циклу. Тіло циклу виконується знову і знову, поки умова дорівнює true. Загальний вигляд циклу while такий:
while (умова)
команда;
while з однією командою
while (умова)
{
блок команд
}
while з блоком команд
Все дуже просто. Команда або блок команд виконуються знову і знову, поки умова циклу істинна — дорівнює true.
Це працює так: спочатку перевіряється умова, і якщо вона істинна, виконується тіло циклу (команда або блок команд), потім знову перевіряється умова і знову виконується тіло циклу. І так доти, поки умова не стане хибною.
Якщо умова завжди буде істинна, значить програма ніколи не завершить роботу і завжди буде виконувати цикл.
Якщо ж у самий перший раз умова була хибною, тіло циклу не виконається жодного разу.
3. Приклади циклів
Ось кілька практичних прикладів використання циклів.
| Код | Пояснення |
|---|---|
|
На екран буде виведено 5 рядків: |
| Код | Пояснення |
|---|---|
|
На екран буде виведено 10 рядків: |
| Код | Пояснення |
|---|---|
|
Програма зчитує з клавіатури числа до того моменту, поки вводять саме числа. |
| Код | Пояснення |
|---|---|
|
Програма буде безкінечно друкувати на екран букву C. |
| Код | Пояснення |
|---|---|
|
Програма буде вводити рядки з клавіатури, поки не буде введено рядок |
Функція equals() у попередньому прикладі використовується для порівняння рядків. Якщо рядки рівні, функція поверне результат — true, якщо рядки не рівні, то поверне false.
4. Цикл в циклі
Під час знайомства з умовним оператором ви побачили, що за його допомогою можна реалізувати складну логіку, якщо комбінувати кілька умовних операторів. Іншими словами, використовувати if всередині if-а.
З циклами також так можна. Щоб написати цикл в циклі, потрібно у тілі першого циклу написати другий. Виглядати це буде приблизно так:
while (умова зовнішнього циклу)
{
while (умова внутрішнього циклу)
{
блок команд
}
}
while (з
блоком команд) всередині іншого циклу
while
Розберемо три задачі.
Задача 1. Припустимо, ми хочемо написати програму, яка б виводила на екран 4 рази слово Мама. Цикл — це саме те, що нам потрібно. І приблизно так виглядав би наш код:
| Код | Пояснення |
|---|---|
|
На екран будуть виведені 4 рядки: |
Задача 2. Ми хочемо написати програму, яка б виводила в один рядок 5 літер А. Для цього нам знову потрібен цикл. Ось як буде виглядати цей код:
| Код | Пояснення |
|---|---|
|
Замість println пишемо print, інакше кожна літера A буде в окремому рядку.На екран буде виведено: |
Задача 3. Ми хочемо вивести на екран прямокутник з літер А розміром у 4 рядки та 5 стовпців. А ось для цього нам вже потрібні вкладені цикли. Просто візьмемо перший приклад, де ми виводимо 4 рядки, і замінимо код по виводу одного рядка на код з другого прикладу.
| Код | Пояснення |
|---|---|
|
Зовнішній цикл позначено фіолетовим кольором, він використовує змінну n для підрахунку кількості витків циклу.Внутрішній цикл позначено зеленим кольором. Для підрахунку кількості витків циклу він використовує змінну m.Потрібно явно переносити курсор на наступний рядок після того, як відпрацював внутрішній цикл. Інакше всі літери, які виведе програма, будуть в одному рядку. На екран буде виведено: |
Зовнішній та внутрішній цикли повинні використовувати різні змінні для підрахунку кількості вже зроблених витків. Також довелося додати команду System.out.println() після внутрішнього циклу, адже він друкує літери А в один рядок, і після виводу всіх літер хтось має перенести курсор на новий рядок.
5. Порівняння циклів: Java vs Pascal
Багато з вас вивчали в школі Паскаль, тому, щоб полегшити вам розуміння матеріалу, наведемо порівняння циклів while у мові Pascal і в Java. Якщо ви не знаєте Pascal, просто пропустіть цей матеріал.
| Pascal | Java |
|---|---|
|
|
|
|
|
|
|
|
|
|
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
int n = 0;int m = 0; while (m < 5) { while (n < 10) { System.out.print("Q"); n++; } System.out.println(); m++; } } }