Menu
CoddyTech

La boucle repeat-until

Fait partie de la section Notions fondamentales du Journey Lua de Coddy. Leçon 72 sur 90.

Lua propose un autre type de boucle appelé boucle repeat-until, qui possède une caractéristique particulière qui la distingue de la boucle while que tu viens d’apprendre. La principale différence est qu’une boucle repeat-until exécute toujours son bloc de code au moins une fois, quelle que soit la condition.

La syntaxe ressemble à ceci :

repeat
    -- code à répéter
until condition

Note que la condition est vérifiée à la fin, après que le code a déjà été exécuté une fois. La boucle continue de se répéter jusqu’à ce que la condition devienne true - ce qui est l’inverse d’une boucle while qui continue tant que la condition est true.

Voici un exemple pratique qui simule le lancer d’un dé jusqu’à obtenir un 6 :

local roll = 0

repeat
    roll = math.random(1, 6) -- Tire un nombre entre 1 et 6
    print("Rolled:", roll)
until roll == 6

print("Finally got a 6!")

Cette boucle garantit que tu lanceras le dé au moins une fois, et elle continue de le lancer jusqu’à ce que la condition roll == 6 devienne vraie. Ce comportement « exécuter d’abord, vérifier ensuite » rend les boucles repeat-until parfaites pour les situations où tu as besoin que quelque chose se produise au moins une fois avant de décider s’il faut continuer.

challenge icon

Défi

Facile

Vous créez une simulation simple de validation de mot de passe.

  1. Crée une variable appelée password et définis-la sur une chaîne vide ("").
  2. Crée une autre variable appelée correctPassword et définis-la sur "secure123".
  3. Crée une table appelée attempts contenant les tentatives de mot de passe suivantes, dans l’ordre :
    • "password"
    • "123456"
    • "admin"
    • "secure123"
  4. Crée une variable appelée index et définis-la sur 1. Tu l’utiliseras pour suivre la tentative en cours.
  5. Utilise une boucle repeat-until pour :
    • Affecter la tentative en cours à password à l’aide de attempts[index]. Cela lit l’élément situé à la position index dans la table.
    • Afficher le password en cours.
    • Augmenter index de 1 (par exemple, index = index + 1) pour passer à la tentative suivante.
  6. La boucle doit s’arrêter uniquement lorsque password est égal à correctPassword.

Chaque fois que la boucle s’exécute, elle lit une tentative dans la table, l’affiche, puis passe à la suivante. La boucle continue jusqu’à ce que le mot de passe correct soit trouvé.

Essayez vous-même

-- Initialiser les variables
local password = ""
local correctPassword = "secure123"

-- Liste des tentatives de mot de passe
local attempts = {"password", "123456", "admin", "secure123"}
local index = 1

-- TODO:
-- Utiliser une boucle repeat-until pour :
-- 1. Affecter la tentative actuelle à password
-- 2. Afficher le mot de passe essayé
-- 3. Passer à la tentative suivante
-- Arrêter lorsque password correspond à correctPassword
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Notions fondamentales

Entraînez-vous par vous-même : Compilateur Lua en ligne