В отличие от цикла 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 включительно.