0Pricing
Lua Academy · Pelajaran

Perulangan while dan repeat-until

Gunakan while dan repeat-until untuk iterasi yang dikendalikan kondisi.

Perulangan while dan repeat-until adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.

Perulangan while

Perulangan while mengulangi isi tubuhnya selama kondisi bernilai truthy. Kondisi diperiksa sebelum setiap iterasi. Jika sejak awal kondisinya false, tubuh perulangan tidak pernah dijalankan. Selalu pastikan perulangan bergerak menuju kondisi keluar agar tidak terjadi perulangan tak terbatas.

local count = 1

while count <= 5 do
  print(count)
  count = count + 1
end
-- prints 1 through 5

Perulangan repeat-until

Perulangan repeat...until adalah padanan do-while di Lua. Isi perulangan dijalankan setidaknya sekali, dan kondisi diperiksa setelah setiap iterasi. Perulangan berhenti saat kondisi menjadi benar, kebalikan dari while. Variabel yang dideklarasikan di dalam isi perulangan dapat terlihat dalam kondisi.

local n = 1

repeat
  print(n)
  n = n * 2
until n > 100
-- prints: 1, 2, 4, 8, 16, 32, 64

Perulangan Tak Terbatas dengan break

Gunakan while true do untuk perulangan kejadian atau pola percobaan ulang, bersama break untuk keluar saat suatu kondisi terpenuhi. Pola ini umum digunakan dalam perulangan utama gim dan peladen jaringan yang berjalan terus-menerus.

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

Hitung Mundur dengan while

Perulangan while juga dapat digunakan untuk menghitung mundur. Hal yang penting adalah memperbarui variabel dengan cara yang pada akhirnya memenuhi kondisi keluar. Lupa memperbarui pencacah merupakan penyebab umum perulangan tak terbatas.

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

repeat-until untuk Validasi Masukan

Pola repeat-until ideal untuk validasi masukan: tampilkan permintaan sekali, lalu periksa setelahnya. Dalam pola ini, isi perulangan selalu dijalankan setidaknya sekali, sesuai dengan alur alami "tanyakan, lalu validasi".

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

Variabel Perulangan Bersifat Lokal

Variabel yang dideklarasikan dengan local di dalam isi perulangan dibuat ulang pada setiap iterasi. Hal ini penting saat menangkap variabel perulangan dalam fungsi penutup—setiap fungsi penutup menangkap salinannya sendiri. Variabel yang dideklarasikan di luar perulangan tetap ada di antara iterasi.

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

Pola Akumulator

Salah satu penggunaan umum perulangan while adalah mengakumulasi hasil. Penjumlahan, perkalian, penggabungan string, dan pembuatan tabel semuanya mengikuti pola akumulator: lakukan inisialisasi sebelum perulangan, perbarui di dalam perulangan, lalu gunakan hasilnya setelah perulangan.

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

Perulangan Bersarang

Perulangan dapat disarangkan. Setiap perulangan memiliki pencacahnya sendiri. Gunakan nama variabel yang deskriptif agar kode mudah dipahami. Pernyataan break hanya keluar dari perulangan terdekat yang membungkusnya—untuk keluar dari beberapa tingkat, Anda mungkin memerlukan variabel penanda atau goto (Lua 5.2+).

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

goto untuk Keluar dari Beberapa Tingkat

Lua 5.2+ memperkenalkan goto untuk melompat ke posisi yang diberi label. Meskipun umumnya tidak dianjurkan, fitur ini sah digunakan untuk keluar dari perulangan bersarang dengan rapi tanpa variabel penanda. Label didefinisikan dengan ::name::.

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")

Pertimbangan while dan repeat-until

while: gunakan saat perulangan mungkin tidak dijalankan sama sekali—kondisi diperiksa terlebih dahulu. repeat-until: gunakan saat perulangan harus dijalankan setidaknya sekali—kondisi diperiksa setelahnya. Utamakan while untuk sebagian besar perulangan. Gunakan repeat-until untuk menu, permintaan, dan perulangan percobaan ulang yang tindakannya harus dilakukan sebelum pemeriksaan.

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

Pemeriksaan Singkat

Kapan kondisi diperiksa dalam perulangan repeat...until?

Ringkasan: while dan repeat-until

Poin penting:

  • while cond do ... end — memeriksa sebelum perulangan; mungkin tidak dijalankan sama sekali
  • repeat ... until cond — memeriksa setelah perulangan; dijalankan setidaknya sekali
  • break keluar dari perulangan terdekat
  • goto ::label:: dapat keluar dari perulangan bersarang (Lua 5.2+)
  • Variabel lokal perulangan dibuat ulang pada setiap iterasi
  • Gunakan pola akumulator untuk membangun hasil

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Perulangan while dan repeat-until” gratis?

Ya — teks lengkap “Perulangan while dan repeat-until” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Perulangan while dan repeat-until”?

Gunakan while dan repeat-until untuk iterasi yang dikendalikan kondisi. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Lua Academy?

Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Perulangan while dan repeat-until” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?

Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pernyataan if, elseif, dan else
  2. Perulangan while dan repeat-until
  3. Perulangan for Numerik
  4. for Generik dan break
← Kembali ke Lua Academy