Guido, sors la poubelle !

Tutoriel

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

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 :

  1. Identifier la condition qui doit être vraie quand Guido a terminé la boucle.
  2. Construisez votre boucle avec le test opposé à celui avec lequel vous voudriez terminer :
        while condition opposée:
            ...instructions...
      
  3. Assurez vous que tout le code initial est prêt avant de commencer la boucle, de manière à démarrer dans des conditions connues. Si des conditions sont spécifiées, elles sont appelées des pré-conditions.
  4. Assurez vous que chaque passage dans le corps de la boucle complète un peu plus le travail que doit effectuer la boucle.
  5. Assurez vous que le test de boucle devient faux de façon qu'on puisse sortir de la boucle.
  6. Écrivez les code permettant de faire le ménage nécessaire après la fin de l'exécution de la boucle. Après la sortie de boucle, si des post-conditions sont spécifiées, elles devront être satisfaites si les pré-conditions étaient vérifiées avant l'entrée dans la boucle.

Faites particulièrement attention aux boucles infinies, c'est-à-dire les boucles dont on ne sort jamais.

À votre tour

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 :

Image étape 12

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.

Appelez un professeur pour valider votre code

Précédent | Index | Suivant

Copyright © 2003 Roger Frank.