Programmer avec des événements
Cinquième · Technologie · Informatique et programmation
Informatique et programmation
Les événements : faire réagir un programme
Dans un logiciel de programmation par blocs comme Scratch, un programme n'est pas obligé de tout dérouler du début à la fin. Il peut attendre qu'il se passe quelque chose pour se lancer : un clic, une touche du clavier, un message... Ce « quelque chose » qui déclenche une action, c'est un événement. C'est ce qui rend un jeu vidéo vivant : le personnage saute quand tu appuies sur une touche.
Qu'est-ce qu'un événement ?
Les blocs qui réagissent à un événement ont une forme particulière : ce sont des blocs « chapeau », arrondis sur le dessus. Un bloc chapeau se place toujours tout en haut d'un script : rien ne peut se brancher au-dessus de lui, car c'est lui qui donne le signal de départ. Dans Scratch, ces blocs sont rangés dans la catégorie Événements (de couleur marron).
| Bloc chapeau (Scratch) | Événement déclencheur |
|---|---|
| quand drapeau vert cliqué | On clique sur le drapeau vert (démarrage du programme) |
| quand touche [espace] pressée | On appuie sur la touche indiquée du clavier |
| quand ce sprite cliqué | On clique sur le lutin avec la souris |
| quand je reçois [message1] | Un autre script diffuse le message indiqué |
Informatique et programmation
Communiquer et synchroniser avec les messages
Un programme contient souvent plusieurs lutins qui doivent agir chacun à leur tour ou ensemble. Pour qu'ils se coordonnent, ils s'envoient des messages : un lutin diffuse un message, et tous les scripts qui commencent par « quand je reçois ce message » démarrent aussitôt. Le message est lui-même un événement, mais un événement créé par le programme, pas par l'utilisateur.
Diffuser et recevoir un message
Plusieurs scripts en même temps
Dans Scratch, plusieurs scripts peuvent s'exécuter en parallèle, c'est-à-dire en même temps. Si deux blocs chapeau réagissent au même événement (par exemple deux fois « quand drapeau vert cliqué »), leurs deux scripts démarrent ensemble. C'est très pratique : pendant qu'un script fait avancer le décor, un autre fait clignoter le personnage.
Exercices corrigés
Comment appelle-t-on la forme des blocs qui réagissent à un événement et se placent en haut d'un script ?
- A.Des blocs "boucle"
- B.Des blocs "condition"
- C.Des blocs "chapeau"Bonne réponse
- D.Des blocs "variable"
Réponse : C — Des blocs "chapeau"
Les blocs chapeau, arrondis sur le dessus, se placent toujours tout en haut d'un script car ils donnent le signal de départ : rien ne peut se brancher au-dessus d'eux. Les blocs boucle servent à répéter, les blocs condition à tester (si... alors), et les blocs variable à stocker une valeur.
Dans Scratch, dans quelle catégorie (couleur) trouve-t-on le bloc « quand touche espace pressée » ?
- A.ÉvénementsBonne réponse
- B.Mouvement
- C.Apparence
- D.Opérateurs
Réponse : A — Événements
Tous les blocs chapeau de déclenchement sont dans la catégorie Événements (couleur marron). La catégorie Mouvement contient « avancer », « tourner »... ; Apparence contient « dire », « changer de costume »... ; Opérateurs contient les calculs et comparaisons.
Tu veux qu'un lutin saute chaque fois qu'on appuie sur la flèche du haut. Quel bloc chapeau utilises-tu ?
- A.quand drapeau vert cliqué
- B.quand je reçois [saut]
- C.quand touche [flèche haut] presséeBonne réponse
- D.quand ce sprite cliqué
Réponse : C — quand touche [flèche haut] pressée
L'événement recherché est l'appui sur une touche du clavier : c'est exactement le bloc « quand touche [flèche haut] pressée ». Le drapeau vert lance le programme entier, « quand je reçois » attend un message interne, et « quand ce sprite cliqué » réagit à la souris, pas au clavier.
Un script dit : « quand drapeau vert cliqué → répéter 3 fois [avancer de 10 pas] ». De combien de pas le lutin avance-t-il en tout après un clic ?
- A.10 pas
- B.13 pas
- C.3 pas
- D.30 pasBonne réponse
Réponse : D — 30 pas
La boucle « répéter 3 fois » exécute trois fois le bloc « avancer de 10 pas ». On calcule : 3 × 10 = 30 pas. Refaisons le compte : 10 + 10 + 10 = 30 pas. Répondre 10, c'est oublier la répétition ; 13 c'est additionner 3 et 10 ; 3 c'est confondre le nombre de tours avec la distance.
Tu veux qu'un lutin change de couleur à chaque clic sur lui. Où places-tu le bloc « ajouter 25 à l'effet couleur » ?
- A.Sous le bloc « quand ce sprite cliqué »Bonne réponse
- B.Sous le bloc « quand drapeau vert cliqué »
- C.Tout seul, sans bloc chapeau au-dessus
- D.Au-dessus d'un bloc chapeau
Réponse : A — Sous le bloc « quand ce sprite cliqué »
L'événement voulu est le clic sur le lutin : il faut donc placer l'action « ajouter à l'effet couleur » juste sous le bloc chapeau « quand ce sprite cliqué ». Sous le drapeau vert, la couleur ne changerait qu'une fois au démarrage. Un bloc d'action ne peut jamais se placer au-dessus d'un chapeau, ni agir sans chapeau au-dessus.
Un lutin a le script : « quand touche droite pressée → si (x > 200) alors [dire STOP] sinon [avancer de 10 pas] ». Le lutin est à x = 150. Que fait-il si on appuie sur la flèche droite ?
- A.Il dit « STOP »
- B.Il ne fait rien
- C.Il revient à x = 0
- D.Il avance de 10 pasBonne réponse
Réponse : D — Il avance de 10 pas
L'appui sur la touche déclenche le script. On teste la condition x > 200 : ici x = 150, et 150 n'est pas supérieur à 200, la condition est fausse. On exécute donc la partie « sinon » : le lutin avance de 10 pas. Il ne dira « STOP » que lorsque son x dépassera 200.
En programmation, qu'est-ce qu'un événement ?
- A.Un signal qui déclenche l'exécution d'un ensemble d'instructionsBonne réponse
- B.Une erreur qui arrête le programme
- C.Un dessin affiché à l'écran
- D.Le nom donné à un lutin
Réponse : A — Un signal qui déclenche l'exécution d'un ensemble d'instructions
Un événement est un signal (clic, touche, message...) qui déclenche un script. Tant qu'il ne se produit pas, le programme attend. Une erreur qui arrête le programme s'appelle un bug, pas un événement. Le dessin d'un lutin s'appelle un costume, et le nom d'un lutin n'a rien d'un déclencheur.
Dans Scratch, quel bloc lance un programme quand on clique sur le drapeau vert ?
- A.quand drapeau vert cliquéBonne réponse
- B.avancer de 10 pas
- C.dire "Bonjour"
- D.attendre 1 seconde
Réponse : A — quand drapeau vert cliqué
Le bloc chapeau « quand drapeau vert cliqué » se place tout en haut d'un script : c'est lui qui réagit au clic sur le drapeau vert et lance les instructions du dessous. « avancer », « dire » et « attendre » sont des instructions d'action : elles ne réagissent à aucun événement toutes seules.
Quel événement déclenche le bloc « quand ce sprite cliqué » ?
- A.Le démarrage automatique du programme
- B.L'appui sur la barre espace
- C.Le clic de la souris sur le lutinBonne réponse
- D.La fin d'un son
Réponse : C — Le clic de la souris sur le lutin
« quand ce sprite cliqué » réagit uniquement au clic de la souris sur le lutin lui-même. Le démarrage automatique correspond au drapeau vert, l'appui sur espace au bloc « quand touche espace pressée ». Aucun bloc chapeau standard ne réagit à la fin d'un son.
Dans Scratch, comment appelle-t-on un personnage ou un objet que l'on peut programmer ?
- A.Un lutin (sprite)Bonne réponse
- B.Un script
- C.Un événement
- D.Une variable
Réponse : A — Un lutin (sprite)
Un lutin (en anglais sprite) est un personnage ou objet de la scène auquel on attache des scripts. Un script est une suite de blocs assemblés ; un événement est un signal déclencheur ; une variable sert à stocker une valeur. Ne confonds pas le personnage (lutin) et son programme (script).
Que se passe-t-il si un script contient seulement le bloc « quand touche espace pressée », sans aucun bloc en dessous ?
- A.Le lutin avance à chaque appui sur espace
- B.Le programme affiche une erreur
- C.Rien ne se passe : aucune action n'est branchée sous le chapeauBonne réponse
- D.Le lutin disparaît
Réponse : C — Rien ne se passe : aucune action n'est branchée sous le chapeau
Un bloc chapeau détecte l'événement mais n'agit pas tout seul : ce sont les blocs placés en dessous qui produisent les actions. Sans rien en dessous, appuyer sur espace ne déclenche aucune action visible. Ce n'est pas une erreur, c'est juste un script « vide ».
À quoi sert le bloc « diffuser [message1] » dans un programme à plusieurs lutins ?
- A.À supprimer le lutin
- B.À afficher le mot « message1 » à l'écran
- C.À mettre le programme en pause définitive
- D.À envoyer un signal qui déclenche les scripts « quand je reçois message1 »Bonne réponse
Réponse : D — À envoyer un signal qui déclenche les scripts « quand je reçois message1 »
« diffuser » envoie un signal à tous les lutins : chaque script commençant par « quand je reçois [message1] » démarre alors. C'est le mécanisme qui permet de synchroniser les lutins. Le message n'est pas affiché à l'écran (il faudrait un bloc « dire ») et ne supprime rien.
S'entraîner sur ce chapitre
Ce chapitre compte 36 exercices corrigés dans l'application, avec le suivi de ta progression.
Commencer les exercices