repeat-until Döngüsü
Coddy'nin Lua Journey'sinin Fundamentals bölümünün bir parçası — ders 72 / 90.
Lua, az önce öğrendiğiniz while döngüsünden kendisini ayıran benzersiz bir özelliğe sahip olan repeat-until döngüsü adı verilen başka bir döngü türü sunar. Temel fark, bir repeat-until döngüsünün, koşul ne olursa olsun kod bloğunu her zaman en az bir kez çalıştırmasıdır.
Söz dizimi şu şekildedir:
repeat
-- tekrarlanacak kod
until conditionKoşulun, kod bir kez çalıştıktan sonra sonda kontrol edildiğine dikkat edin. Döngü, koşul true olana kadar tekrarlanmaya devam eder - bu, koşul true olduğu sürece devam eden bir while döngüsünün tam tersidir.
İşte 6 gelene kadar zar atmayı simüle eden pratik bir örnek:
local roll = 0
repeat
roll = math.random(1, 6)
print("Rolled:", roll)
until roll == 6
print("Finally got a 6!")Bu döngü, zarı en az bir kez atacağınızı garanti eder ve roll == 6 koşulu doğru olana kadar zar atmaya devam eder. Bu "önce çalıştır, sonra kontrol et" davranışı, repeat-until döngülerini, devam edip etmemeye karar vermeden önce bir şeyin en az bir kez gerçekleşmesine ihtiyaç duyduğunuz durumlar için mükemmel kılar.
Görev
KolayBasit bir şifre doğrulama simülasyonu oluşturuyorsunuz.
passwordadında bir değişken oluşturun ve bunu boş bir dizeye ("") ayarlayın.correctPasswordadında başka bir değişken oluşturun ve bunu"secure123"olarak ayarlayın.- Aşağıdaki şifre denemelerini sırasıyla içeren
attemptsadında bir tablo oluşturun:"password""123456""admin""secure123"
indexadında bir değişken oluşturun ve bunu1olarak ayarlayın. Bunu şu anda hangi denemede olduğunuzu takip etmek için kullanacaksınız.- Şunları yapmak için bir
repeat-untildöngüsü kullanın:attempts[index]kullanarak mevcut denemeyipassworddeğişkenine atayın — bu, tablodakiindexkonumundaki öğeyi okur- Mevcut
passworddeğerini yazdırın - Bir sonraki denemeye geçmek için
indexdeğerini 1 artırın (örneğinindex = index + 1)
- Döngü yalnızca
password,correctPassworddeğerine eşit olduğunda durmalıdır.
Döngü her çalıştığında, tablodan bir deneme okur, onu yazdırır ve ardından bir sonrakine geçer. Döngü, doğru şifre bulunana kadar devam eder.
Kopya kağıdı
repeat-until döngüsü, koşulu kontrol etmeden önce kodu en az bir kez çalıştırır. Koşul true olana kadar tekrarlamaya devam eder.
Sözdizimi:
repeat
-- tekrar edilecek kod
until conditionÖrnek - 6 gelene kadar zar atmak:
local roll = 0
repeat
roll = math.random(1, 6)
print("Rolled:", roll)
until roll == 6
print("Finally got a 6!")while döngülerinden temel farklar:
- Her zaman en az bir kez çalışır
- Koşul sonda kontrol edilir
- Koşul
trueolana kadar devam eder (whiledöngüsünün tersi)
Kendin dene
-- Değişkenleri başlat
local password = ""
local correctPassword = "secure123"
-- Şifre denemeleri listesi
local attempts = {"password", "123456", "admin", "secure123"}
local index = 1
-- YAPILACAKLAR:
-- Şunları yapmak için bir repeat-until döngüsü kullanın:
-- 1. Mevcut denemeyi `password` değişkenine ata
-- 2. Denenen şifreyi yazdır
-- 3. Bir sonraki denemeye geç
-- Şifre correctPassword ile eşleştiğinde durBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Fundamentals bölümündeki tüm dersler
4Operatörler 2 İlişkisel ve Mantıksal
Eşitlik Operatörleriİlişkisel Operatörler'and' Operatörü'or' Operatörü'not' OperatörüKısa Devre DeğerlendirmesiTruthy ve Falsy DeğerlerÖzet - Basit Mantık10Tablolar Bölüm 1: Liste Stili
Tablo Nedir?Tablo Oluşturmaİndeks ile Elemanlara Erişmeİndeks ile Elemanları DeğiştirmeUzunluk Operatörü '#'table.insert()table.remove()Özet - Parti Üyelerini Yönetme13Proje: Basit İksir Dükkanı
Proje Kurulumuİksir Ekleme2Değişkenler ve Veri Tipleri
Değişken Nedir?SayılarStringlerBooleanlar'nil' Değeritype() Fonksiyonuİsimlendirme KurallarıÖzet - Karakter Profili5Temel Çıktı
Sabitleri YazdırmaDeğişkenleri YazdırmaBirden Fazla Değer YazdırmaMetinleri ve Değişkenleri Birleştirmetostring() FonksiyonuGirdiTip DönüşümüÖzet - Durum RaporuÖzet - 120'ye Kadar8String Manipülasyonu Temelleri
string.len()string.upper & string.lowerstring.sub()string.rep()string.find()Özet - Kullanıcı Adı Biçimlendirme3Operatörler 1 Aritmetik ve Birleştirme
Aritmetik OperatörlerMod Alma OperatörüÜs Alma OperatörüString BirleştirmeOperatör ÖnceliğiÖzet - Basit Hesaplamalar6Proje: Karakter İstatistiklerini Görüntüleme
Hoş Geldiniz MesajıKarakter İstatistiklerini Tanımlama9Fonksiyon Temelleri
Fonksiyon TanımlamaFonksiyon ÇağırmaParametreli FonksiyonlarÇoklu Parametreli Fonksiyonlar'return' İfadesiÖzet - Alan Hesaplayıcı12Döngü Temelleri
while Döngüsürepeat-until DöngüsüSayısal for DöngüsüAdımlı for Döngüsü'break' İfadesiÖzet - Geri Sayım