L'instruction do
permet à Guido de répéter une action plusieurs
fois, mais elle a une limitation importante : vous devez savoir à l'avance
combien de fois cette action devra être exécutée. Si vous vous trouvez à une
intersection et que vous devez ramasser plusieurs sonnettes sans savoir à
l'avance combien il y en a, vous ne pouvez pas utiliser une instruction
do
. La commande while
est là pour palier cet
inconvénient.
La forme générale d'une instruction while est :
while condition-est-vraie: actions
où condition-est-vraie est une conditionnelle dont le résultat
est true ou false et où actions est soit une
simple commande (comme move
), soit une séquence de commandes
regroupées dans un bloc. Tant que la condition testée reste vraie, les
actions seront exécutées. De la sorte, while
est
similaire à do
à la différence que do
spécifie
un nombre d'exécutions alors que while
spécifie une condition.
Tant que la condition reste true, les instructions sont exécutées.
Par exemple, pour ramasser une pile de sonnettes, vous pourriez écrire :
while next-to-a-beeper: pickbeeper
Ceci indique que tant qu'il reste des sonnettes à l'intersection où se trouve Guido, il faut en ramasser une et refaire le test. Le résultat sera qu'il ne restera plus aucune sonnette sur l'intersection courante. Elle seront toutes dans le sac à sonnettes de Guido.
Écrire une boucle while
peut s'avérer compliqué ; il y a beaucoup
de détails à régler. Le principe général est le suivant :
while condition opposée: ...instructions...
Faites particulièrement attention aux boucles infinies, c'est-à-dire les boucles dont on ne sort jamais.
C'est lundi matin. Avant d'aller à l'école, Guido doit sortir les poubelles. Il ne sait pas combien de sacs (représentés bien entendu par des sonnettes) il doit sortir, mais il sait qu'ils sont dans le coin de la pièce, comme dans cette vue du monde :
Son travail consiste à récupérer tous les sacs et les mettre dans le conteneur en
un seul voyage. Utilisez une ou plusieurs boucles while
pour apprendre
à Guido à sortir les poubelles. Après avoir déposé les poubelles, faites reculer Guido d'un pas pour constater que le conteneur est bien remplis.
Copyright © 2003 Roger Frank.