حلقهها در لوا
حلقههای while، numeric for، generic for و repeat...until در لوا
حلقه چیست؟
حلقه (Loop) به شما اجازه میدهد کدی را چند بار تکرار کنید — بدون اینکه چند بار بنویسید. لوا ۴ نوع حلقه دارد.
۱. حلقه while
«تا وقتی شرط درست است، تکرار کن»:
local count = 1
while count <= 5 do
print("شماره: " .. count)
count = count + 1 -- فراموش نکنید! وگرنه حلقه بینهایت میشود
end
اگر شرط هیچوقت false نشود، حلقه بینهایت میشود و برنامه هنگ میکند! همیشه مطمئن شوید چیزی شرط را تغییر میدهد.
۲. حلقه numeric for
وقتی میدانید چند بار میخواهید تکرار کنید:
-- از 1 تا 5
for i = 1, 5 do
print("تکرار: " .. i)
end
-- با گام (step)
for i = 0, 10, 2 do
print(i) -- 0, 2, 4, 6, 8, 10
end
-- شمارش معکوس!
for i = 10, 1, -1 do
print(i)
end
print("پرواز! 🚀")
ساختار کامل
for init, limit, step do
-- کد
end
-- init: شروع
-- limit: پایان
-- step: گام (پیشفرض 1، میتواند منفی باشد)
۳. حلقه generic for
برای پیمایش جدولها (آرایهها و دیکشنریها):
-- ipairs: برای آرایهها (ایندکس عددی)
local fruits = {"سیب", "موز", "پرتقال"}
for index, value in ipairs(fruits) do
print(index, value)
end
-- pairs: برای همه جدولها (حتی دیکشنری)
local person = {name = "علی", age = 25, city = "تهران"}
for key, value in pairs(person) do
print(key .. " = " .. tostring(value))
end
ipairs از ایندکس ۱ تا اولین nil ادامه میدهد (فقط بخش آرایهای). pairs همه کلیدها را پیمایش میکند اما ترتیب تضمینشدهای ندارد!۴. حلقه repeat...until
مثل while اما شرط آخر بررسی میشود — یعنی حداقل یک بار اجرا میشود:
local input = ""
local attempts = 0
repeat
attempts = attempts + 1
input = "مقدار" .. attempts -- شبیهسازی ورودی
print("تلاش:", input)
until input == "مقدار۳"
print("پس از " .. attempts .. " تلاش موفق شد")
کدام حلقه را انتخاب کنم؟
| حلقه | وقتی که... |
|---|---|
for i = 1, n | تعداد تکرار مشخص است |
for ... in ipairs/pairs | میخواهید روی جدول پیمایش کنید |
while | تا رسیدن به شرطی باید ادامه دهید |
repeat...until | حداقل یک بار اجرا باید شود |
حلقههای تو در تو
-- جدول ضرب
for i = 1, 3 do
for j = 1, 3 do
print(string.format("%d × %d = %d", i, j, i * j))
end
end
مثال: جمع اعداد
local sum = 0
for i = 1, 100 do
sum = sum + i
end
print("مجموع ۱ تا ۱۰۰: " .. sum) -- 5050
این مبحث بخشی از دوره آموزش کامل لوا است.