Цикл While

Вкратце

while (условие) {
  // код, который будет повторяться
  // пока условие истинно
}

Компьютеры могут не уставая повторять действия десятки, сотни, тысячи раз. В программировании для повторений используются циклы.

Напишем функцию с циклом, который будет выводить на экран числа от 1 до числа-аргумента:

<?php

function printNumbers($lastNumber)
{
    $i = 1;

    while ($i <= $lastNumber) {
        print_r("{$i}\n");
        $i = $i + 1;
    }
    print_r('finished!');
}

printNumbers(3);
1
2
3
finished!

Конструкция читается так: «делать то, что указано в теле цикла пока истинно условие (предикат) $i <= $lastNumber».

Цикл while состоит из трех элементов:

  • Ключевое слово while.
  • Предикат в скобках после while.
  • Блок кода в фигурных скобках (тело цикла).

Каждое выполнение тела называется итерацией. В нашем примере вызов printNumbers(3) породил три итерации, на каждой из которых была выведена на экран переменная $i.

Самое главное в цикле — завершение (выход). Процесс, который порождает цикл, должен в конце концов остановится. Ответственность за остановку полностью лежит на программисте.

Обычно задача сводится к введению переменной, называемой «счётчик». Сначала он инициализируется, то есть ему задаётся начальное значение. В нашем примере это строчка $i = 1. Затем в условии цикла проверяется, не достиг ли счетчик своего предельного значения.

В нашем примере предельное значение определяется аргументом функции. Если условие цикла не выполнено, то тело не выполняется и интерпретатор двигается дальше, выполняя инструкции после цикла. Но если условие цикла истинно, то выполняется тело, в котором находится ключевой элемент остановки — изменение счетчика. Обычно его делают в конце тела, и это изменение — одно из редких мест, где невозможно обойтись без переменной. В нашем примере за изменение отвечает строчка $i = $i + 1.

Задание

Модифицируйте функцию printNumbers, так, чтобы она выводила числа в обратном порядке. Для этого нужно идти от верхней границы к нижней. То есть, счетчик должен быть инициализирован максимальным значением, а в теле цикла его нужно уменьшать до нижней границы.

Пример вызова и вывода:

<?php

printNumbers(4);
// => 4
// => 3
// => 2
// => 1
// => finished!

Определения
  • Цикл While — инструкция для повторения кода пока удовлетворяется какое-то условие.

Упражнение доступно только авторизованным пользователям.

Пожалуйста, авторизуйтесь с помощью учётной записи GitHub, это необходимо для отслеживания прогресса выполнения уроков. Если у вас ещё нет учётной записи, то сейчас самое время создать аккаунт на GitHub.