retour
Bambin

   Sous ce nom se cache un petit langage pour piloter un tortue. Cela dans le but avoué de faire découvrir les joies de la programmation à des jeunes enfants. Cet objectif, comme le langage, est prétentieux et dénote d'une certaine folie qu'il est bon de réfréner au plus vite.


Description

   Le langage est là pour piloter une tortue dans son environnement. Le monde où évolue la tortue est composé d'un échiquier. Sur cet échiquier, on pose divers objets, comme des fruits, ou des murs. La tortue se déplace de case en case, regarde autour d'elle, prend des objets, ou les posent.

   On peut commander la tortue pas à pas ou lui faire exécuter des séquences d'instructions. Le langage de la tortue n'est qu'un ensemble de fonctions Scheme.


   --> Vous pouvez télécharger Bambin ici. <--
Pour utiliser Bambin, il vous faut un interpréteur Scheme qui reconnaisse la syntaxe define-syntax. Cela peut être un interpréteur R5RS ou un interpréteur R4RS accompagné de la SLIB. Pour lancer le programme, tapez dans votre interpréteur:
(load "bambin-init.scm")


Le tortue

   La tortue comprend les instructions suivantes:

(avancer)
Avance d'une case dans la direction courante
(tourner-droite)
Tourne d'un quart de tour vers la droite
(tourner-gauche)
Tourne d'un quart de tour vers la gauche
(peut-avancer?)
Prédicat qui renvoi oui si la tortue peut avancer et non sinon.
(regarder)
Regarde ce qu'il y a sous lui.
(contenu-du-sac)
Regarde ce qu'il y a dans le sac de la tortue.
(prendre objet)
Prend l'objet qui est sous la tortue et le met dans le sac. Si l'objet n'existe pas, il y a une erreur. Par exemple, (prendre pomme) prend la pomme qui se trouve sous le robot.
(poser objet)
Pose l'objet qui est dans le sac dans le monde. On l'utilise comme prendre.
Pour mieux contrôler la tortue, il existe trois structures "avancées":
(repeter n action)
repete n fois l'action. Par exemple, (repeter 5 (avancer)) fait avancer la tortue de cinq cases.
(si condition cas1 cas2)
Si la condition est vrai alors on exécute le premier cas sinon on exécute le second cas.
(apprendre quoi comment)
Associe une liste d'action à une nouvelle commande. Par exemple, (apprendre avancer-de-cinq-cases (repeter 5 (avancer))) associe l'action "repeter 5 fois avancer" à la nouvelle instruction "avancer-de-cinq-cases". Maintenant, pour avancer de cinq cases, on peut taper (avancer-de-cinq-cases).
(ecrire truc)
Écrit à l'écran.

Grâce au module "mémoire", le tortue peut mémoriser ses déplacements. Dès qu'elle avance ou qu'elle tourne, elle enregistre ce qu'elle vient de faire. Ce qui est intéressant, c'est qu'elle peut revenir en arrière en invoquant la commande:
(revenir)


Le monde

   Le monde de la tortue est un échiquier de taille fini. Sur les cases du monde il peut y avoir différents objets.

   La taille du monde est définit par les variables limite-x et limite-y.
Le monde s'appelle monde. Il est crée par la fonction (creer-monde).

   On peut créer de nouveau type d'objets avec la commande (creer-objet objet). Par exemple, (creer-objet voiture) créera l'objet "voiture". La tortue pourra ainsi mettre une voiture dans son sac si elle veut.

   Pour manipuler les objets dans le monde, on a notre disposition plusieurs fonctions:

(regarder-dans-le-monde x y)
Regarde ce qu'il y a dans le monde à la case de coordonnée (x,y)
(poser-dans-le-monde x y objet)
Pose l'objet dans la case (x,y)
(retirer-du-monde x y objet)
Enlève l'objet du monde.

   Avec les trois fonctions décrites plus haut, on peut créer un monde initial sans aucune difficulté.
Par exemple,

(creer-objet pomme)
(creer-objet banane)
(define (preparer)
  (poser-dans-le-monde 3 4 pomme)
  (poser-dans-le-monde 4 7 banane))
(preparer)
pose une pomme dans la case (3,4) et une banane dans la case (4,7).
Pour voir les mouvements de la tortue, la fonction (voir-le-monde) est appelée quand la tortue avance ou tourne.


Un exemple d'interaction avec la tortue

   Pour bien situer les idées de ce que peut faire la tortue, j'ai reproduit un exemple d'interaction.


> . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . X . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . X . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
> (contenu-du-sac)
()
> (avancer)

. > . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . X . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . X . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
> (avancer)(avancer)

. . > . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . X . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . X . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
> 
. . . > . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . X . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . X . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
> (tourner-droite)

. . . v . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . X . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . X . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
> (repeter 4 (avancer))

. . . . . . . . . . 
. . . v . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . X . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . X . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 

. . . . . . . . . . 
. . . . . . . . . . 
. . . v . . . . . . 
. . . . . . . . . . 
. . . X . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . X . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 

. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . v . . . . . . 
. . . X . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . X . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 

. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . v . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . X . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
> (regarder)
(pomme)
> (prendre pomme)
> (regarder)
rien
> (contenu-du-sac)
(pomme)
> (apprendre aller-autre-objet
	     (repeter 3 (avancer))
	     (tourner-gauche)
	     (avancer))
> (aller-autre-objet)

. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . v . . . . . . 
. . . . . . . . . . 
. . . . X . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 

. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . v . . . . . . 
. . . . X . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 

. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . v X . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 

. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . > X . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 

. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . > . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
> (regarder)
(banane)
> (poser pomme)
> (regarder)
(pomme banane)
> (avancer)

. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
. . . . X > . . . . 
. . . . . . . . . . 
. . . . . . . . . . 
> 


Réalisé par Valvassori Moïse
M. Achille Mme Tortue