Retour au cours

les boucles : while, until et for

Objectifs

  • Utiliser la boucle while pour répéter un bloc de code tant qu’une condition est vraie.
  • Utiliser la boucle until pour améliorer la lisibilité en évitant les négations.
  • Comprendre le fonctionnement de la boucle for en Ruby.
  • Savoir pourquoi les itérateurs (vus dans la prochaine leçon) sont généralement préférés en Ruby.

Alors que les conditions permettent de choisir un chemin, les boucles permettent de répéter des actions.

La boucle while

C’est la forme de boucle la plus fondamentale, présente dans presque tous les langages. Le bloc de code s’exécute en continu tant que la condition est vraie.

compteur = 1

while compteur <= 5
  puts "Le compteur est à : #{compteur}"
  compteur += 1 # Raccourci pour : compteur = compteur + 1
end

puts "Fin de la boucle."

Sortie :

Le compteur est à : 1
Le compteur est à : 2
Le compteur est à : 3
Le compteur est à : 4
Le compteur est à : 5
Fin de la boucle.

Attention : Si la condition ne devient jamais fausse, vous créez une boucle infinie. Il est crucial de s’assurer que quelque chose à l’intérieur de la boucle fait évoluer la condition.

La boucle until

until est simplement le contraire de while. Le bloc s’exécute jusqu’à ce que la condition devienne vraie. C’est un sucre syntaxique qui permet d’éviter d’écrire while !condition, rendant le code plus lisible.

# Compte à rebours de 5 à 1
compteur = 5

until compteur == 0
  puts compteur
  compteur -= 1
end

puts "Décollage !"

La boucle for

La boucle for en Ruby est un peu différente des langages comme C ou JavaScript. Elle est conçue pour itérer sur une collection d’éléments (comme un tableau ou un “range”). En réalité, c’est une autre façon d’écrire l’itérateur .each (que nous verrons en détail).

# Un "range" (1..5) représente la séquence des nombres de 1 à 5.
for i in 1..5
  puts "Tour de boucle numéro #{i}"
end


fruits = ["pomme", "poire", "banane"]
for fruit in fruits
  puts "Fruit actuel : #{fruit}"
end

Pourquoi les itérateurs sont-ils souvent préférés ?

Dans la leçon suivante, nous aborderons les itérateurs (.each, .times, .map…). La communauté Ruby privilégie très largement les itérateurs aux boucles for ou while pour plusieurs raisons :

  • Ils sont considérés comme plus expressifs et plus proches de la pensée “objet”.
  • Ils gèrent mieux la portée des variables. Dans une boucle for, la variable (i ou fruit) “fuit” et reste accessible après la boucle. Avec un itérateur, elle est confinée au bloc.

Cependant, il est important de connaître while et until, car elles restent utiles pour certains algorithmes où la condition de sortie est complexe.

Bonnes pratiques

  • Utilisez until lorsque cela rend la condition plus naturelle à lire (until est_termine est plus clair que while !est_termine).
  • Assurez-vous toujours qu’une boucle while ou until a une condition de sortie claire pour éviter les boucles infinies.

Exercices

  1. Compteur pair :

    • Écrivez une boucle while qui affiche uniquement les nombres pairs de 2 à 10.
  2. Jeu de devinettes simple :

    • Définissez un NOMBRE_SECRET.
    • Utilisez une boucle while et la commande gets.chomp.to_i pour demander à l’utilisateur de deviner le nombre.
    • La boucle doit continuer tant que l’utilisateur n’a pas trouvé le bon nombre. Affichez “Trop grand” ou “Trop petit” pour l’aider.
  3. Boucle for sur un tableau :

    • Créez un tableau de trois couleurs.
    • Utilisez une boucle for pour afficher chaque couleur.