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 <test>: actions
où <test> doit être vrai 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 le test est vrai, 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 :
récrivez le programme deuxieme_rue en utilisant une boucle while: à la place d'une boucle do: de manière à ce que le programme puisse fonctionner avec n'importe quelle longueur de rue et n'importe quel nombre de sonnettes.
Ouvrez les mondes 'deuxieme_rue2.wld' et 'deuxieme_rue3.wld' et testez le programme sur ces rues
Enregistrez le programme.
Copyright © 2003 Roger Frank.