## Boucles tant que `(while)`

En plus des instructions conditionnelles, une autre construction pratique est de pouvoir répéter une action tant qu'une condition particulière n'est pas arrivée. On utilise pour cela une boucle `while`, dont la syntaxe est la suivante :

    [!java|scala|c]while (condition) {
        action();
    }[/!][!python]while condition:
        action()[/!]

Le bloc est alors exécuté encore et encore, tant que la condition est vraie. Plus précisément, la buggle teste la valeur de la condition. Si elle est fausse, le bloc est ignoré et l'exécution continue avec la suite. Si la condition est vraie, le bloc est exécuté. Ensuite, la buggle réévalue la condition. Si elle est devenue fausse (par exemple parce que les déplacements du bloc nous ont mis face au mur), le bloc est maintenant ignoré et on continue avec la suite. Mais si la condition est toujours vraie, on exécute une nouvelle fois le bloc avant de réévaluer une fois de plus la condition. Cela continue ainsi tant que la condition reste vraie.

Évidement, si l'action en question ne modifie pas la valeur de la condition, la buggle va exécuter l'action à l'infini. C'est dans ce genre de cas que le bouton stop de l'interface devient utile. Pour tester cela, vous pouvez essayer de taper le code suivant dans l'éditeur :

    [!java|scala]while (true) {
        gauche();
    }[/!][!c]while (1) {
        gauche();
    }[/!][!python]while True:
        gauche()[/!]

La buggle va tourner vers la gauche tant que `[!c]1[/!][!java|scala]true[/!][!python]True[/!]` est vrai (sans fin donc) jusqu'à ce que vous l'arrêtiez manuellement avec le bouton stop.

### Objectif de cet exercice

Il vous faut maintenant écrire le code nécessaire pour que vos buggles avancent jusqu'à rencontrer un mur. L'idée est donc de faire :

    tant que l'on est pas face à un mur, faire :
      avancer()

Référez-vous à la documentation (dans le menu "Aide/À propos de ce monde") pour la liste complète des méthodes comprises par les buggles.