Итоги
В этом уроке вы узнали, что:
- Цикл повторяет блок кода. Каждое выполнение блока — это итерация. Делайте отступ блока в 4 пробела.
while condition do … endповторяет блок, пока условие истинно. Что-то в блоке должно меняться, чтобы в какой-то момент условие стало ложным. Иначе цикл никогда не закончится, и на этом сайте программу остановят через 5 секунд. То, что она успела вывести, остаётся в выводе.for i = 1, 10 do … endсчитает от 1 до 10, включая оба числа. Цикл сам делаетiлокальной, а послеendциклаiравнаnil.- Третье число — шаг:
for i = 10, 1, -1считает в обратную сторону, аfor i = 1, 9, 2берёт каждое второе число. Если начало больше конца, цикл выполняется ноль раз. Остерегайтесь ошибки на единицу. - Используйте
for, когда знаете, сколько раз выполнится цикл, иwhile, когда не знаете. - Сумма: переменная, которая до цикла равна 0, внутри цикла прибавляет каждое значение (
total = total + value) и выводится после цикла. Среднее — это сумма, делённая на количество значений. - Подсчёт: счётчик, который начинается с 0 и увеличивается на 1 внутри
if. Условиеday % 5 == 0выбирает каждый 5-й день. repeat … until conditionпроверяет условие после блока, поэтому блок выполняется хотя бы один раз, а останавливается цикл, когда условие истинно. В условии можно использовать локальные переменные из блока.breakсразу завершает цикл. В Lua нетcontinue: вместо него поместите остаток блока вif.- Циклы можно вкладывать: внутренний цикл проходит целиком в каждой итерации внешнего.
io.writeзаписывает строки и числа без перевода строки и без табуляций, а пустойprint()завершает строку.
В следующем уроке вы познакомитесь с таблицами: одна переменная, в которой лежит целый список значений, например все культуры Эммы. Перебирать их вы будете уже знакомыми вам циклами.
Задание
- 1
Потренируемся на плане Эммы на следующие 12 дней. Циклом
forвыведите по одной строке для каждого дня от 1 до 12. Каждый 3-й день — полив, каждый 4-й — ярмарка, а в день, который подходит под оба условия (здесь только день 12), Эмма делает и то и другое. В остальные дни она занимается прополкой. Сначала проверяйте «и то и другое», иначе день 12 попадёт только в полив. Программа выводит:День 1: прополка День 2: прополка День 3: полив День 4: ярмарка День 5: прополка День 6: полив День 7: прополка День 8: ярмарка День 9: полив День 10: прополка День 11: прополка День 12: полив и ярмарка - 2
В каждый день ярмарки Эмма зарабатывает 40 монет. До цикла создайте локальную переменную
coinsсо значением0, а в цикле прибавляйте к ней 40 в каждый день ярмарки (в день 12 тоже). После цикла выведите:Монеты с ярмарки: 120 - 3
Эмма копит на новую дверь для сарая, которая стоит 300 монет, и каждый следующий день ярмарки приносит ещё 40. В конце программы напишите цикл
while, который прибавляет 40 кcoins, пока там меньше 300, и считает эти дни ярмарки в новой переменной. После цикла выведите:Ещё дней ярмарки: 5