La boucle repeat-until
Fait partie de la section Fundamentals du Journey Lua de Coddy — leçon 72 sur 90.
Lua propose un autre type de boucle appelée la boucle repeat-until, qui possède une caractéristique unique la distinguant de la boucle while que vous venez d'apprendre. La différence clé 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 conditionRemarquez 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'opposé 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)
print("Rolled:", roll)
until roll == 6
print("Finally got a 6!")Cette boucle garantit que vous lancerez les dés au moins une fois, et elle continue de les lancer jusqu'à ce que la condition roll == 6 devienne vraie. Ce comportement « exécuter d'abord, vérifier plus tard » rend les boucles repeat-until parfaites pour les situations où vous avez besoin que quelque chose se produise au moins une fois avant de décider de continuer ou non.
Défi
FacileVous créez une simulation simple de validation de mot de passe.
- Créez une variable appelée
passwordet initialisez-la avec une chaîne vide (""). - Créez une autre variable appelée
correctPasswordet fixez-la à"secure123". - Créez une table appelée
attemptsqui contient les tentatives de mot de passe suivantes dans l'ordre :"password""123456""admin""secure123"
- Créez une variable appelée
indexet fixez-la à1. Vous l'utiliserez pour suivre la tentative sur laquelle vous vous trouvez actuellement. - Utilisez une boucle
repeat-untilpour :- Assigner la tentative actuelle à
passworden utilisantattempts[index]— cela lit l'élément à la positionindexdans la table - Afficher le
passwordactuel - Incrémenter
indexde 1 (par exempleindex = index + 1) pour passer à la tentative suivante
- Assigner la tentative actuelle à
- La boucle doit s'arrêter uniquement quand
passwordest é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 bon mot de passe soit trouvé.
Aide-mémoire
La boucle repeat-until exécute le code au moins une fois avant de vérifier la condition. Elle continue de se répéter jusqu'à ce que la condition devienne true.
Syntaxe :
repeat
-- code à répéter
until conditionExemple - lancer un dé jusqu'à obtenir un 6 :
local roll = 0
repeat
roll = math.random(1, 6)
print("Rolled:", roll)
until roll == 6
print("Finally got a 6!")Différences clés par rapport aux boucles while :
- S'exécute toujours au moins une fois
- La condition est vérifiée à la fin
- Continue jusqu'à ce que la condition soit
true(l'inverse dewhile)
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
-- À FAIRE :
-- Utiliser une boucle repeat-until pour :
-- 1. Assigner la tentative actuelle à `password`
-- 2. Afficher le mot de passe tenté
-- 3. Passer à la tentative suivante
-- S'arrêter quand le mot de passe correspond à correctPasswordCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fundamentals
4Opérateurs 2 : Relationnels et Logique
Opérateurs d'égalitéOpérateurs relationnelsL'opérateur 'and'L'opérateur 'or'L'opérateur 'not'Évaluation court-circuitValeurs Truthy et FalsyRécapitulatif - Logique simple7Logique conditionnelle de base
L'instruction if-thenL'instruction if-then-elseL'instruction elseifRécapitulatif - Le coffre au trésor10Tables Partie 1 : Style Liste
Qu'est-ce qu'une Table ?Créer une TableAccéder aux éléments par indexModifier des éléments par indexL'opérateur de longueur '#'table.insert()table.remove()Récapitulatif - Gérer les membres du groupe13Projet : Boutique de potions simple
Configuration du projetAjouter une potion2Variables et types de données
Qu'est-ce qu'une variable ?Les nombresLes chaînes de caractèresLes booléensLa valeur 'nil'La fonction type()Conventions de nommageRécapitulatif - Profil de personnage5Affichage de base
Afficher des littérauxAfficher des variablesAfficher plusieurs valeursCombiner des chaînes et des variablesLa fonction tostring()EntréeLe CastRécapitulatif - Rapport d'étatRécapitulatif - Jusqu'à 1208Bases de la manipulation de chaînes
string.len()string.upper et string.lowerstring.sub()string.rep()string.find()Récapitulatif - Formater le nom d'utilisateur3Opérateurs 1 Arithmétique & Conc.
Opérateurs arithmétiquesOpérateur moduloOpérateur d'exponentiationConcaténation de chaînesPriorité des opérateursRécapitulatif - Calculs simples6Projet : Affichage des stats du personnage
Message de bienvenueDéclarer les statistiques du personnage9Bases des fonctions
Déclarer une fonctionAppeler une fonctionFonctions avec paramètresFonctions avec plusieurs paramètresL'instruction 'return'Récapitulatif - Calculateur d'aire12Bases des boucles
La boucle whileLa boucle repeat-untilLa boucle for numériqueBoucle for avec un pasL'instruction 'break'Récapitulatif - Compte à rebours