Vous connaissez déjà l'instruction if
. Vous l'utilisez pour prendre
une décision, par exemple si une sonnette est présente, la ramasser. De
temps en temps vous aurerz une décision plus compliquée à prendre. Guido aime les
tartes aux pommes, mais sa maman n'en prépare pas tous les jours. Par contre,
elle fait des cookies tous les jours. Guido aimerait pouvoir exprimer une requête
de la forme : "Maman, si il y a de la tarte aux pommes, j'en veux, mais sil n'y en
a pas, alors je voudrais bien un cookie.". Vous pouvez utiliser la séquence
if...then...else...
pour exprimer ce genre de décision à deux étages.
Cela ressemble à l'instruction if
, mais nous ajoutons une partie
optionelle else
, permettant d'implémenter un comportement différent
si la condition du if
n'est pas réalisée.
La forme générale de la structure de contrôle conditionnelle avec une clause
else
est :
if condition: instructions else: d'autres instructions
où instructions peut être soit une simple instruction (comme move") ou un bloc d'instruction. Le code pour ramasser une sonnette ou simplement avancer pourrait être écrit sous la forme :
if next-to-a-beeper: pickbeeper move else: move
Souvenez-vous que la partie else
est facultative. Utilisez-la si
elle est utile.
Dans ce projet, Guido va faire le tour d'un monde borné. Il ne connaît pas les dimensions de son monde (mais vous les connaissez, puisque vous en êtes le créateur). Ce qu'il sait est qu'une sonnette signale chaque coin du monde, mis à part celui dont il part.
Guido démarre dans le coin inférieur gauche, regardant vers l'est. S'il n'est pas
sur une case contenant une sonnette, il avance d'un pas, sinon il ramasse la
sonnette, tourne à gauche et avance. Créez un monde dont on peut faire le tour en
exactement 32 pas. Vous pouvez en choisur les dimensions, mais ne le dites pas à
Guido ! Déposez des sonnettes dans trois de ses angles (sud-est, nord-est et
nord-ouest). Puis utilisez une boucle do
32 fois de suite et une
décision if
pour faire le tour du monde.
Votre position de départ devrait ressembler à ceci, bien que les dimensions puissent varier :
Copyright © 2003 Roger Frank.