1. Порівняння циклів for
і while
Цикл while
можна використовувати у всіх випадках, коли команду або групу команд потрібно виконати кілька разів. Однак серед усіх цих випадків один варто виділити особливо.
Це випадок, коли програміст (автор програми) заздалегідь знає, скільки разів має виконуватися його цикл. Зазвичай для цього використовується спеціальна змінна-лічильник, яка під час кожної ітерації циклу збільшується (або зменшується) на 1
.
Начебто все працює як слід, але це не дуже зручно. Перед циклом ми присвоюємо змінній-лічильнику початкове значення, а потім в умові перевіряємо, чи не досягла вона кінцевого значення. А от змінюємо її зазвичай аж наприкінці тіла циклу.
А якщо тіло циклу велике? Або маємо кілька вкладених циклів? Загалом у таких випадках бажано зібрати всю цю інформацію про змінну-лічильник в одному місці. Так у мові Java з'явився цикл for
. Він теж має зовсім нескладний вигляд:
for (команда1; умова; команда2)
{
блок команд
}
У циклі while
у круглих дужках була тільки умова, а тут додано ще дві команди, розділені крапкою з комою.
Насправді все досить просто: компілятор перетворює цикл for
на звичайний цикл while
таким чином:
команда1;
while (умова)
{
блок команд
команда2;
}
Покажемо це на прикладі: два приклади нижче ідентичні.
Варіант 1 | Варіант 2 |
---|---|
|
|
Ми просто зібрали в одному місці весь код, який стосується змінної-лічильника — i
.
команда1 у циклі for
виконується тільки один раз перед початком циклу (це видно у другому прикладі)
команда2 виконується таку саму кількість разів, як і тіло циклу, але вона виконується щоразу вже після повного завершення тіла циклу
2. Де використовується цикл for
Цикл for
використовується в Java, мабуть, найчастіше з усіх видів циклів. Він застосовується скрізь, тому що для програмістів це просто зрозуміліша й зручніша форма запису циклу while
. Практично будь-який цикл while
можна перетворити на цикл for
.
Приклади:
Цикл while | Цикл for |
---|---|
|
|
|
|
|
|
|
|
|
|
Зверніть увагу на останній приклад. Там пропущені команди для роботи з лічильником циклу. Немає лічильника —- немає команд.
Java дозволяє не писати в циклі for
команди для ініціалізації лічильника та змінення лічильника. І навіть вираз-умову циклу можна не писати.
3. Особливості використання циклу for
Важливий момент щодо використання циклу for
і операторів break
і continue
.
Оператор break
у циклі for
діє так само, як і в циклі while
— призводить до негайного завершення циклу. А от коли використовується оператор continue
, тіло циклу пропускається, а команда2
(яка змінює лічильник циклу) — ні.
Подивімося ще раз, як пов'язані між собою цикли for
і while
.
for (команда1; умова; команда2)
{
блок команд
}
команда1;
while (умова)
{
блок команд
команда2;
}
Якщо в блоці команд циклу for
викликати оператор continue
, наступні команди блоку будуть пропущені, а от команда2 (яка змінює лічильник циклу for
) все одно буде виконана.
Повернімося до нашого прикладу з пропусканням чисел, що діляться на 7.
Цей код зациклиться | Цей код чудово працюватиме |
---|---|
|
|
Код із циклом while
не діятиме — значення змінної i
ніколи не перевищить 7. А от код із циклом for
діятиме чудово.
4. Порівняння циклів for: Java і Pascal
До речі, у мові Pascal теж є цикл For
. Цей цикл взагалі є майже в усіх мовах програмування. Але в Pascal він набагато зрозуміліший. Приклади:
Pascal | Java |
---|---|
|
|
|
|
|
|
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ