0Pricing
Lua Academy · Ders

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 5

repeat-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, 64

break 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
end

while 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 1

Girdi 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)  -- 5

Dö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]())  -- 3

Birikimli 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 done

Hı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ışmayabilir
  • repeat ... until cond — sonra denetlenir; en az bir kez çalışır
  • break en içteki döngüden çıkar
  • goto ::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

  1. if, elseif ve else İfadeleri
  2. while ve repeat-until Döngüleri
  3. Sayısal for Döngüsü
  4. Genel for ve break
← Lua Academy Sayfasına Dön