Цикл while

В отличие от цикла for, который устанавливает заданное число шагов, цикл while выполняется до тех пор, пока истинно заданное логическое условие. В общем случае цикл записывается так.

while <условие> do
-- что-то делаем
end

Вначале проверяется условие, если оно истинно, то выполняется тело цикла. Перед end условие проверяется ещё раз и если оно по прежнему истинно, то цикл повторяется. В противном случае, цикл завершается.

Легко получить бесконечный цикл, если внутри цикла не изменять значения переменных используемых в условии.

i = 5;
while i < 10 do
  print ("Вечность");
end

В примере выше i всегда будет меньше 10, поскольку его значение никак не меняется внутри цикла, из-за чего цикл никогда не завершится. Заметьте, что это логическая ошибка, но никак не ошибка с точки зрения компилятора. Корректный пример показан ниже.

i = 5;
while i  <= 10 do
  print (i);
  i = i + 0.5;
end

Здесь внутри цикла значение переменной i увеличивается на 0.5, а в условии идёт проверка, что i меньше или равно 10. Будут выведены цифра 5, 5.5, 6, 6.5 и так до 10 включительно.

Автор: Влад Мержевич
Последнее изменение: 23.03.2024