Les boucles while

Maintenant que vous êtes familiers avec les conditions dans Ruby, il est temps de voir un autre type de boucle: la boucle while («tant que»).

Cette boucle est un peu plus intéressante que celle que vous venez de voir. Elle se base sur une condition:


while condition
 ...
end

Ou condition n’est rien d’autre qu’une expression conditionnelle, comme celles que nous venons d’appréhender précédemment.

Compteur

Voici un exemple tout simple, illustrant l’utilisation d’une boucle while:

Analysons le programme:

  1. Initialisation de compteur à 0.
  2. Comme compteur est bien inférieur à 10, nous rentrons dans la boucle.
  3. Dans la boucle, nous affichons un message, et nous incrémentons compteur de 1. Maintenant, compteur vaut 1.
  4. Comme compteur est toujours inférieur à 10, nous sautons à nouveau dans la boucle.
  5. ...

Le scénario se répétera jusqu’à ce que compteur soit égal à 10. Voici la sortie du programme :

En d’autres mots, une boucle while répétera la boucle tant que la condition sera évaluée comme étant vraie.

Puissance de 2

Certaines choses sont faciles à réaliser avec une boucle while, mais moins évidentes avec n.times.

Supposez que nous voulons calculer la plus grande puissance de 2 plus petite que 10000. C’est très facile à programmer avec une boucle while :

Voici ce que ça donne :

Imaginez combien ça aurait été difficile d’arriver au même résultat, en utilisant n.times.

Quelques exercices

  1. Re-implémentez le dernier programme, pour qu’il demande à l’utilisateur une valeur maximale (à la place de 10000). Le programme devra se comporter de cette façon :

2. Démarrez le même programme, en y entrant 1e10 comme entrée. Que se passe-t’il ?

Si vous avez utilisé la méthode String#to_i, il y a des chances pour que 1e10 soit converti par le nombre 1. Essayons de comprendre pourquoi dans IRB :

Comme vous pouvez le remarquer, 1e10 est en Float (nombre flottant). Donc, vous devez utiliser la méthode String#to_f.

Conditions << | Apprenez Ruby | >> Écrire de bons programmes 2