MOGWAI propose un ensemble riche de structures de boucles, chacune adaptée à un besoin précis. Que l’on veuille répéter une action un nombre fixe de fois, itérer sur une liste, tourner pendant une durée donnée ou boucler indéfiniment, il y a toujours la bonne boucle pour le bon usage.
La boucle repeat
repeat exécute un bloc de code un nombre fixe de fois. Le compteur d’itérations n’est pas géré automatiquement — c’est au développeur de le maintenir si besoin.
# Afficher les nombres de 1 à 10
0 -> 'I'
10 repeat
{
'I' ++
I ?
}
repeat accepte break pour en sortir prématurément :
0 -> 'I'
10 repeat
{
'I' ++
I ?
if (I 5 ==) then { break }
}
La boucle for
for est la boucle à compteur automatique. Elle prend une valeur de départ, une valeur de fin, et un nom de variable qui contiendra la valeur courante à chaque itération.
# Afficher les nombres de 1 à 10
1 10 for 'I' do
{
I ?
}
Le pas par défaut est de 1, mais on peut le modifier avec step — y compris avec une valeur négative pour compter à rebours :
# Compter de 10 à 1
10 1 for 'I' step -1 do
{
I ?
}
Comme toutes les boucles MOGWAI, for accepte break :
# Sortir de la boucle quand I atteint 5
1 10 for 'I' do
{
I ?
if (I 5 ==) then { break }
}
La boucle while
while exécute un bloc de code tant qu’une condition est vraie. La condition est évaluée avant chaque itération — si elle est fausse dès le départ, le corps de la boucle ne s’exécute jamais.
# Afficher les nombres de 1 à 99
0 -> 'I'
while (I 100 <) do
{
'I' ++
I ?
}
La boucle do…while
do...while fonctionne comme while, mais la condition est évaluée après chaque itération. Le corps de la boucle s’exécute donc au moins une fois, même si la condition est fausse d’entrée.
# Afficher les nombres de 1 à 99
0 -> 'I'
do
{
'I' ++
I ?
} while (I 100 <)
La boucle foreach…do
foreach...do itère sur chaque élément d’une liste, d’un tableau de bytes ou d’une string (à partir de la version 8.4). À chaque itération, l’élément courant est placé dans la variable nommée.
# Afficher chaque élément d'une liste
("pomme" "poire" "cerise") foreach 'fruit' do
{
fruit ?
}
# Afficher chaque byte d'un tableau de bytes
D:01020304 foreach 'b' do
{
b ?
}
# Afficher chaque caractère d'une string (v8.4+)
"MOGWAI" foreach 'c' do
{
c ?
}
La boucle foreach…transform
foreach...transform permet de transformer chaque élément d’une liste et de récupérer la liste résultante. Elle ne fonctionne que sur les listes.
# Préfixer chaque élément d'une liste avec "-"
("L1" "L2" "L3") foreach 'item' transform { "-" item + }
# Retourne ("-L1" "-L2" "-L3")
# Multiplier chaque nombre d'une liste par 2
(1 2 3 4 5) foreach 'item' transform { item 2 * }
# Retourne (2 4 6 8 10)
La boucle during
during exécute un bloc de code pendant une durée définie en millisecondes. C’est la seule boucle pilotée par le temps plutôt que par un compteur ou une condition.
# Incrémenter un compteur pendant 10 secondes
0 -> 'I'
during 10000 do
{
'I' ++
I ?
}
La boucle forever
forever exécute un bloc de code indéfiniment. Elle est typiquement utilisée pour maintenir un programme en vie (en attendant des timers ou des événements) ou pour implémenter une boucle principale dont on contrôle la sortie avec break.
# Boucle infinie : afficher un compteur jusqu'à 456
0 -> 'I'
forever do
{
'I' ++
I ?
if (I 456 ==) then { break }
}
Sortir d’une boucle : break
break permet de sortir immédiatement de n’importe quelle boucle MOGWAI : while, do...while, for, foreach, during, repeat et forever. L’exécution reprend à l’instruction qui suit la boucle.
1 100 for 'I' do
{
I ?
if (I 10 >) then { break }
}
# L'exécution continue ici
"Boucle terminée." ?
Quelle boucle choisir ?
| Boucle | Cas d’usage idéal |
|---|---|
repeat | Répéter N fois, sans compteur automatique |
for | Itérer avec un compteur géré automatiquement |
while | Boucler tant qu’une condition est vraie (test en entrée) |
do...while | Boucler tant qu’une condition est vraie (test en sortie, au moins une exécution) |
foreach...do | Itérer sur une liste, un tableau de bytes ou une string |
foreach...transform | Transformer chaque élément d’une liste |
during | Exécuter du code pendant une durée définie |
forever | Boucle infinie, sortie contrôlée par break |
Conclusion
Les boucles sont l’un des fondements de tout langage de programmation, et MOGWAI en propose une palette complète. Du simple repeat au foreach...transform fonctionnel, en passant par le during original piloté par le temps, chaque structure a sa place et son usage naturel. Maîtriser ces boucles, c’est déjà disposer d’une grande partie des outils nécessaires pour écrire des programmes MOGWAI expressifs et efficaces.
MOGWAI — open source depuis février 2026 · GitHub · coding4phone.com