Pour garder les coûts de fabrication les plus faibles possibles, l'usine a équipé Guido de roues ne lui permettant de se déplacer que tout droit ou de tourner vers la gauche. Je lis dans le manuel d'instruction que Guido a la possibilité d'apprendre à faire d'autres choses. Par exemple, si Guido tourne vers la gauche trois fois, il se retrouvera face à sa droite. Mais c'est votre tâche de programmeur que de dire à Guido comment faire cela.
Nous faisons cela en définissant une nouvelle instruction turnright
sous forme d'une série d'autres instructions, plus précisément trois
instructions turnleft. La définition ressemble à ceci :
define turnright:
turnleft
turnleft
turnleft
Ceci est un exemple d'instruction composée, ce qui signifie qu'elle est
faite de deux parties. La première partie comporte le code define
suivi du nom de l'instruction que vous êtes en train de définir, suivi d'un double
point (:). La seconde partie consiste en une ou plusieurs instructions
indentées du même nombre d'espaces. Voyons si vous saurez prédire ce que va faire le
programme suivant.
define turnright:
turnleft
turnleft
turnleft
move
turnright
move
turnright
move
turnright
move
turnright
turnoff
Les trois instructions turnleft composent ce que l'on appelle un bloc de code, plusieurs instructions agissant ensemble pour n'en former qu'une. Tous les programmes GvR se terminent par une instruction turnoff.
Vous devriez être capable de "tracer à la main" les opérations de ce programme de manière à découvrir que Guido parcourera un petit carré avant de retourner à sa position initiale.
Une fois que vous avez défini une nouvelle instruction, vous pouvez l'utiliser comme
n'importe quelle instruction prédéfinie dans GvR. Définissez une instruction
backup qui fait reculer Guido d'un bloc, tout en conservant sa direction.
Puis utilisez backup dans un programme complet qui, Guido démarrant
au coin de la deuxième rue et de la troisième avenue, le fera move trois
blocs vers le nord, backup un bloc, turnright, puis move deux blocs vers l'est.
Copyright © 2003 Roger Frank.