17. Étonnant - 1re partie

Dans cette leçon en plusieurs parties, nous allons écrire un programme complet pour résoudre des problèmes de plus en plus complexes.


Solution étonnante : premiers pas

Commençons par un problème simple : faire que Reeborg fasse le tour de son monde une fois, en supposant qu'il n'y a pas d'obstacle sur son chemin. Nous l'avons déjà fait avant, quand nous avons découvert le test front_is_clear(). Voici le plan d'une solution qui suppose que Reeborg transporte au moins une sonnette au début :

1. Poser une sonnette pour marquer le point de départ.
2. Avancer jusqu'à arriver face à un mur.
3. Tourner à gauche quand le mur est en face.
4. Répéter les étapes 2. et 3. jusqu'à ce qu'on trouve la sonnette que nous avions posée.
5. S'éteindre quand la sonnette est trouvée.

L'étape clé est la 4e, qui a une instruction de répétition avec un test. Cette instruction peut s'écrire :

while not on_beeper():

suivant ce qui devrait être les étapes 2 et 3. Traduisons maintenant toute la solution en code correct :

put_beeper()
while not on_beeper():
if front_is_clear():
move()
else:
turn_left()

turn_off()

Prenez le temps de réfléchir à ce que le programme ci-dessus ordonne à Reeborg de faire, si la position de départ est celle de l'image ci-dessous :

around the world: start

Nous n'avons pas obtenu le résultat désiré, qui est indiqué ci-dessous. Avez-vous compris pourquoi ? Si non, retournez et réfléchissez-y.

around the world: start

previousTant que - home - Étonnant - 2e partienext