Les Itérateurs en français

Introduction aux Itérateurs

Un itérateur est un mécanisme qui permet d'exécuter de manière répétée un bloc de code un certain nombre de fois. Ce nombre peut être fixe ou indéfini. Dans le cas d'une exécution indéfinie, l'itérateur continuera de faire fonctionner le code jusqu'à ce qu'un événement externe se produise, comme la fermeture du programme par l'utilisateur.

Boucles while

Une boucle while exécute un bloc de code tant qu'une condition donnée reste vraie.

Exemples et Syntaxe de la Boucle while

remaining_loops = 5
while remaining_loops > 0 do
    print("Il reste " .. remaining_loops .. " boucles.")
    remaining_loops -= 1
end
print("Assez de boucles !")

Dans l’exemple ci-dessus, le bloc de code entre while et end s'exécute plusieurs fois jusqu'à ce que la condition remaining_loops > 0 ne soit plus vérifiée. Voici la sortie :

Il reste 5 boucles.
Il reste 4 boucles.
Il reste 3 boucles.
Il reste 2 boucles.
Il reste 1 boucle.
Assez de boucles !

En utilisant une condition qui ne sera jamais fausse, une boucle peut tourner indéfiniment :

while true do
    -- Ajoutez le code qui doit s'exécuter indéfiniment ici
    task.wait(0.1)  -- Un délai pour éviter un crash.
end

Les boucles indéfinies sont utiles pour les programmes qui doivent fonctionner jusqu'à ce qu'un utilisateur choisisse de les arrêter.

Boucles repeat

Une boucle repeat est similaire à une boucle while, mais elle évalue la condition après la première exécution de son bloc de code.

Exemple et Syntaxe de la Boucle repeat

repeat
    print("Ceci s'exécutera au moins une fois.")
until false

Cela donnera le résultat suivant :

Ceci s'exécutera au moins une fois.

Boucles for

Une boucle for parcourt une série d'éléments et exécute un bloc de code pour chacun d'eux. Cette série peut être une séquence de nombres, d'éléments dans une table ou de caractères dans une chaîne.

Boucles for Numériques

Une boucle for numérique itère à travers une série de nombres. Elle comprend une valeur de départ, une valeur finale et une valeur d'incrément optionnelle.

for i = start_value, end_value, increment_value do
    -- Ajouter le code à répéter ici
end

La start_value initialise la valeur de i. La increment_value augmente i après chaque passage de boucle. Si l’incrément est positif, la boucle se terminera lorsque i sera supérieur ou égal à end_value. Si l'incrément est négatif, la boucle se terminera lorsque i sera inférieur ou égal à end_value.

Exemples de Boucles for Numériques

Omettre le paramètre d'incrément par défaut donnera une valeur d'incrément de 1 :

for i = 1, 3 do
    print(i)
end

Sortie :

1
2
3

Un exemple avec une valeur d'incrément négatif :

for i = 10, 1, -2 do
    print(i)
end

Sortie :

10
8
6
4

Boucles for Génériques

Une boucle for générique itère à travers les indices d'une table ou les caractères d'une chaîne.

Utilisation de pairs() et ipairs()

La fonction pairs() permet d'itérer sur tous les éléments d'une table :

mixed_table = {}
mixed_table[1] = 1
mixed_table[2] = 0.5
mixed_table[5] = "biff"
mixed_table["a"] = 7

for i,v in pairs(mixed_table) do
    print("La valeur à l'indice " .. i .. " est " .. v)
end

Sortie :

La valeur à l'indice 1 est 1
La valeur à l'indice 2 est 0.5
La valeur à l'indice 5 est biff
La valeur à l'indice a est 7

Note : L'ordre des éléments dans la table n'est pas garanti avec pairs(). La fonction ipairs() itère également, mais avec quelques différences clés : - ipairs() ignore les éléments avec des indices non entiers. - Elle commence à l'indice 1 et ignore les éléments à des indices inférieurs. - La boucle s'arrête s'il y a des gaps dans les indices. - Elle garantit l'ordre des éléments.

Exemple avec ipairs()

for i,v in ipairs(mixed_table) do
    print("La valeur à l'indice " .. i .. " est " .. v)
end

Sortie :

La valeur à l'indice 1 est 1
La valeur à l'indice 2 est 0.5

Utilisation de string.gmatch()

La fonction string.gmatch() permet d'itérer sur les caractères d'une chaîne :

for char in string.gmatch("sarsaparilla", ".") do
    print(char)
end

Sortie :

s
ar
sa
par
il
la

Dans cet exemple, "." est utilisé pour représenter tous les caractères.

Utilisation de break

Le mot-clé break peut être appliqué dans n'importe quel type de boucle pour forcer instantanément la fin de celle-ci.

for i = 1, 10 do
    if(i == 6) then
        break
    end
    print(i)
end

Sortie :

1
2
3
4
5