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 5Perulangan 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, 64Perulangan 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
endHitung 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 1repeat-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) -- 5Variabel 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]()) -- 3Pola 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.875Perulangan 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
endgoto 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 donePemeriksaan 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 sekalirepeat ... until cond— memeriksa setelah perulangan; dijalankan setidaknya sekalibreakkeluar dari perulangan terdekatgoto ::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
- Pernyataan if, elseif, dan else
- Perulangan while dan repeat-until
- Perulangan for Numerik
- for Generik dan break