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.