Cette activité est basé sur le fait que tous les nombres de calculatrice peuvent être obtenus à l’aide du patron ci-contre :
Si l’on souhaite par exemple tracer un rectangle rempli de 100 sur 200, une première idée peut être de dessiner le
rectangle de 100 sur 200 puis de tracer un rectangle de 99 sur 199 puis un rectangle de 98 sur 198 ... jusqu’à ce que
le rectangle soit entièrement rempli.
Commençons par définir un rectangle de longueur et largeur dépendant de deux variables.
Pour remplir notre grand rectangle, on va donc exécuter :
rec 100 200 rec 99 199 rec 98 198 ..... rec 1 101
Définissons alors une procédure rectangle dédié à tracer ce rectangle rempli.
On teste rectangle 100 200 et on s’aperçoit qu’il y a un problème : la procédure ne s’arrête pas lorsque le rectangle est rempli, elle continue de tracer des rectangles ! On va donc ajouter un test permettant de détecter si la longueur ou la largeur est égale à 0. A ce moment, on demande au programme de s’interrompre avec la commande stop.
Note : à la place d’utiliser la primitive ou, on peut utiliser le symbole « | » : on obtiendrait :
si :lo=0 | :la=0 [stop]
Nous avons besoin du rectangle rempli précédent :
Nous supposons ici que la tortue part du coin inférieur gauche. Nous allons définir une procédure appelée chiffre
admettant 7 argument :a, :b, :c, :d, :e, :f, :g. Quand :a vaut 1, on dessine le rectangle 1. Si :a vaut 0, on ne le dessine
pas. Voilà le principe.
On obtient la procédure suivante :
Nous allons ici simuler un compte à rebours en faisant apparaitre succesivement les chiffres de 9 à 0 par ordre décroissant.
Petit problème : il y a un effet de clignotement désagréable pendant la création de chaque chiffre. Pour fluidifier cela
on va utiliser les primitives animation, stopanimation et rafraichis.
On obtient ainsi le programme modifié :