while ve repeat-until Döngüleri
Koşula dayalı yineleme için while ve repeat-until kullanın.
while ve repeat-until Döngüleri, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.
while Döngüsü
Bir while döngüsü, koşul doğru olduğu sürece gövdesini tekrarlar. Koşul, her yinelemeden önce denetlenir. Koşul başlangıçta yanlışsa gövde hiçbir zaman çalıştırılmaz. Sonsuz döngülerden kaçınmak için döngünün çıkış koşuluna doğru ilerlediğinden her zaman emin olun.
local count = 1
while count <= 5 do
print(count)
count = count + 1
end
-- prints 1 through 5repeat-until Döngüsü
repeat...until döngüsü, Lua'daki do-while karşılığıdır. Gövde en az bir kez yürütülür ve koşul her yinelemeden sonra denetlenir. Koşul doğru olduğunda döngü durur (while'ın tersine). Gövde içinde tanımlanan değişkenler koşulda görünür durumdadır.
local n = 1
repeat
print(n)
n = n * 2
until n > 100
-- prints: 1, 2, 4, 8, 16, 32, 64break ile Sonsuz Döngüler
Olay döngüleri veya yeniden deneme düzenleri için while true do kullanın; bir koşul karşılandığında çıkmak için bunu break ile birleştirin. Bu düzen, sürekli çalışan oyun ana döngülerinde ve ağ sunucularında yaygındır.
local attempts = 0
local MAX = 3
while true do
attempts = attempts + 1
print("Attempt " .. attempts)
if attempts >= MAX then
print("Max attempts reached")
break
end
endwhile ile Geri Sayım
while döngüleri geriye doğru saymak için de aynı şekilde kullanılabilir. Önemli olan, çıkış koşulunu sonunda karşılayacak biçimde değişkeni güncellemektir. Sayacı güncellemeyi unutmak, sonsuz döngülerin yaygın nedenlerinden biridir.
local i = 10
while i > 0 do
io.write(i .. " ")
i = i - 1
end
print() -- newline
-- output: 10 9 8 7 6 5 4 3 2 1Girdi Doğrulama için repeat-until
repeat-until düzeni, girdi doğrulama için idealdir: bir kez isteyin, ardından denetleyin. Bu düzende gövde her zaman en az bir kez çalışır; bu da "sor, sonra doğrula" akışına uygundur.
-- Simulated input validation
local inputs = {-1, 0, 5} -- pretend user input
local idx = 0
local value
repeat
idx = idx + 1
value = inputs[idx]
print("Got: " .. value)
until value > 0
print("Valid value: " .. value) -- 5Döngü Değişkenleri Yereldir
Bir döngü gövdesi içinde local ile tanımlanan değişkenler her yinelemede yeniden oluşturulur. Bu, döngü değişkenleri kapanımlarda yakalanırken önemlidir; her kapanım kendi kopyasını yakalar. Döngünün dışında tanımlanan değişkenler yinelemeler boyunca varlığını sürdürür.
local callbacks = {}
for i = 1, 3 do
local captured = i -- local per iteration
callbacks[i] = function() return captured end
end
print(callbacks[1]()) -- 1
print(callbacks[2]()) -- 2
print(callbacks[3]()) -- 3Birikimli Sonuç Düzeni
while döngülerinin yaygın kullanım alanlarından biri sonuç biriktirmektir. Toplam, çarpım, dizge birleştirme ve tablo oluşturma işlemlerinin tümü aynı birikimli sonuç düzenini izler: döngüden önce başlatın, içinde güncelleyin, sonucu sonra kullanın.
local numbers = {3, 1, 4, 1, 5, 9, 2, 6}
local sum = 0
local i = 1
while i <= #numbers do
sum = sum + numbers[i]
i = i + 1
end
print("Sum:", sum) -- 31
print("Avg:", sum / #numbers) -- 3.875İç İçe Döngüler
Döngüler iç içe yerleştirilebilir. Her döngü kendi sayacını korur. Açıklığı artırmak için anlamlı değişken adları kullanın. break ifadesi yalnızca en içteki kapsayan döngüden çıkar; birden çok düzeyden çıkmak için bir bayrak değişkenine veya goto'ya (Lua 5.2+) ihtiyacınız olabilir.
local found = false
local target = 6
local i = 1
while i <= 3 and not found do
local j = 1
while j <= 3 do
if i * j == target then
print(i .. " * " .. j .. " = " .. target)
found = true
break
end
j = j + 1
end
i = i + 1
endÇok Düzeyli Çıkış için goto
Lua 5.2+, etiketlenmiş bir konuma atlamak için goto'yu kullanıma sundu. Genel olarak önerilmese de, bayrak değişkeni kullanmadan iç içe döngülerden temiz biçimde çıkmak için meşru bir seçenektir. Etiketler ::name:: ile tanımlanır.
for i = 1, 5 do
for j = 1, 5 do
-- goto only valid approach for nested break in Lua
if i * j > 10 then
goto done
end
io.write(i*j .. " ")
end
end
::done::
print()
print("Stopped early")while ve repeat-until Tercihleri
while: sıfır yineleme gerekebilecek durumlarda kullanın; koşul önce denetlenir. repeat-until: en az bir yineleme gerektiğinde kullanın; denetim sonra yapılır. Çoğu döngü için while'ı tercih edin. Eylemin denetimden önce gerçekleşmesi gereken menüler, istemler ve yeniden deneme döngülerinde repeat-until kullanın.
-- while: may execute zero times
local ready = false
while ready do
print("never prints")
end
-- repeat-until: always executes at least once
local done = false
repeat
print("runs once even though done=false")
done = true
until doneHızlı Kontrol
repeat...until döngüsünde koşul ne zaman denetlenir?
Özet: while ve repeat-until
Temel noktalar:
while cond do ... end— önce denetlenir; hiç çalışmayabilirrepeat ... until cond— sonra denetlenir; en az bir kez çalışırbreaken içteki döngüden çıkargoto ::label::iç içe döngülerden çıkabilir (Lua 5.2+)- Döngü içindeki yerel değişkenler her yinelemede yeniden oluşturulur
- Sonuç oluşturmak için birikimli sonuç düzenini kullanın
Sıkça Sorulan Sorular
“while ve repeat-until Döngüleri” dersi ücretsiz mi?
Evet — “while ve repeat-until Döngüleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.
“while ve repeat-until Döngüleri” dersinde ne öğreneceğim?
Koşula dayalı yineleme için while ve repeat-until kullanın. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Lua Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“while ve repeat-until Döngüleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- if, elseif ve else İfadeleri
- while ve repeat-until Döngüleri
- Sayısal for Döngüsü
- Genel for ve break