Squeaki MST


Projet supporté par le
RÉCIT MST
PageAccueil :: ParametresUtilisateur :: Vous êtes 54.84.236.168

Menu



Scratch







*

Le concept d'envoi et de réception de messages



La notion de message est tout au coeur de la programmation objet.
Un objet est, en quelque sorte, complètement isolé des autres objets. Un objet ne peut communiquer avec un autre que par l'envoi de message. Et un objet ne peut recevoir un message que s'il est disposé à le recevoir.
Tout cela est bien abstrait (même pour nous, adultes) et c'est pourquoi il est important d'illustrer concrètement la chose aux enfants.

Imaginons le dialogue suivant entre deux lutins :
Lutin 1 dit : «bonjour, mon ami !»
Lutin 2 répond : «Salut à toi. Viens-tu jouer avec moi ?»
Lutin 1 : « Bien sûr. Allons au parc jouer au ballon. »
Lutin 2 : « D'accord ! »
Changement de scène où on retrouve nos deux amis au parc avec un ballon.



À savoir absolument


Nota : Ne vous en faites pas si les points ci-dessous ne font pas sens pour vous. Continuez la lecture et tout finira par s'éclairer.


  • Les objets ont la capacité d'envoyer à tous les autres objets un message qui consiste à un NOM de message. (Voilà la partie un peu complexe à comprendre.)
  • Dans Scratch, les objets ont la capacité de recevoir des messages qui ont un nom. S'ils le désirent, en recevant ce message, ils pourront exécuter une ou plusieurs instructions.
  • Les objets peuvent envoyer plusieurs messages.
  • Les objets peuvent recevoir plusieurs messages.
  • Différents objets peuvent recevoir un même message et y réagir tous différemment. (Dans l'exemple ci-haut, en recevant le message parc, la scène décide de modifier son fond d'écran et le ballon décide d'apparaître tout en exécutant un léger mouvement de va et vient.

Pour comprendre comment tout cela fonctionne, une analyse des scripts associés à chaque objet sera bienvenue.

script1
handout
Les scripts du lutin 1

script2
handout
Les scripts du lutin 2

script3
handout
Les scripts du ballon

script4
handout
Les scripts de la scène


Première observation : Trois scripts font intervenir le drapeau vert. Le lutin 1 est le premier à prendre la parole. Le ballon ne doit pas apparaître au début du dialogue et l'arrière plan de la scène doit être blanc.

Poursuivons. Lorsque le lutin 1 termine sa phrase d'introduction, il envoie un message nommé envoi1. C'est sa manière de dire à tous les objets potentiels (lutins et scène) qu'ils peuvent prendre le relai s'ils le désirent.
Or le nom de ce message est connu du lutin 2 qui, le recevant, répond aux salutations. Après quoi il envoie lui-même un message nommé envoi2.
Lutin 1 connaît le message nommé envoi2. Il poursuit ainsi le dialogue et envoie le message nommé envoi3.
Lutin 2 sait quoi faire en recevant le message nommé envoi3. Il lance une dernière réplique et envoie le message nommé parc.

Le ballon et la scène reconnaissent le message nommé parc, et exécutent les scripts associés à sa réception.

Simple, n'est-ce pas?

En fait, pour les élèves du primaire, ce n'est pas si simple que cela en a l'air. La distinction entre le nom du message et le message lui-même est subtile. Une élève du secondaire m'est arrivée avec l'image du signal : l'objet envoie un signal aux autres objets. L'idée n'est pas bête, mais éloigne du mot message propre à la programmation objet.

Toujours est-il que je suis arrivé avec une méthode qui pourrait sans doute permettre aux jeunes de comprendre un peu mieux ce qu'il en est.

Je demande aux élèves de se mettre debout devant leur chaise et je leur dis qu'ils réprésentent tous un lutin différent des autres.
Il s'agit de préparer deux séries de carton (j'ai utilisé du bristol) de deux couleurs différentes. Sur les cartons jaunes (par exemple), j'ai mis un seul mot (envoi1, message1, chien, plage, x, y, etc) qui représente le nom du message envoyé. Sur les cartons bleus (par exemple), dans le coin gauche, un mot (qui correspond à l'un des nom du message du carton jaune) et, au centre, un ordre (ce qui représente un script du genre : Dis «bonjour»).
Chaque élève reçoit un carton jaune et un carton bleu. Je commence par un premier élève qui annonce le nom de son message provenant du carton jaune.
Toute la classe vérifie s'il n'est pas le lutin qui reçoit ce message. Si oui, il exécute l'ordre et lance à son tour le nom du message de son propre carton jaune. Et ainsi de suite de manière à ce que tous les élèves de la classe aient reçu et envoyé au moins un message.

Par la suite, je montre comment tout cela se traduit dans Scratch en programmant devant eux le scénario au début de cet article : la tuile "Envoyé à tous" correspondant au carton jaune, la condition "Quand je reçois " et le script associé représentent le carton bleu.

Tout commentaire sera le bienvenu !
Sauf avis contraire dans cette page, la permission de copier, distribuer et/ou modifier ce document est accordée suivant les termes de la Licence de documents libres (FDL).