Après les astuces du compteur et de la somme vues précédemment, nous allons maintenant aborder un troisième tour de main, celui du « signal »
Objectifs
- Prendre connaissance de l'astuce du « signal » et intégrer la manière de l'utiliser;
- Voir comment, avec ce signal, il y a moyen de retenir un événement particulier parmi une suite d'événements.
Ta tâche, ton défi
Réalise ton code pour que le robot signale si certains bacs sont incomplets.
Dans une usine d'embouteillage, les bacs descendent vers le quai de chargement. Le robot est destiné à vérifier si tous les bacs du lot sont complets ou non. En fin de tâche, le robot doit afficher si l'ensemble des bacs étaient complets ou si ce n'était pas le cas, c'est-à-dire qu'au moins un bac de la file d'attente était incomplet.
Le robot peut demander la descente d'un seul bac à la fois afin de l'observer. Il dispose aussi d'une « ardoise » un peu spéciale appelée « signal »; celle-ci ne peut retenir que deux informations : true (vrai) ou false (faux).
Grâce à cette ardoise, le robot doit retenir si un bac du lot était incomplet. Un moyen serait de partir du fait qu'au départ on considère que tous les bacs sont complets, mais si, en cours de route, un bac incomplet se présente, le signal change et reste définitivement changé jusqu'en fin de programme.
Pour réaliser sa tâche, le robot dispose de 3 fonctions d'actions :
- metsSignalA (concept) le robot peut basculer le signal sur true ou sur false en fonction des nécessités. L'argument est le concept true ou false qui n'est ni une valeur, ni une chaîne de caractères (et ne figurera donc pas entre guillemets ni apostrophes);
- passeLeBacSuivant () le robot peut demander que le prochain bac du lot, qui se trouve dans la file d'attente, descende. Le robot pourra ainsi constater si ce bac est complet ou non;
- afficheBacsTousComplets ('?') le robot, grâce au contenu de l'ardoise « signal », affichera en fin de traitement si l'ensemble des bacs du lot étaient complets ou si au moins un d'entre eux n'était pas complet.
Et il dispose aussi de 3 fonctions de tests :
- EncoreBacEnAttente () qui vérifie s'il reste au moins 1 bac en attente de vérification;
- bacVuComplet () qui signale au robot si le bac qui vient de passer devant lui est complet ou pas;
- signal () qui transmet, répercute l'état de l'ardoise « signal ».
À toi de jouer...
Réfléchis bien à la manière de gérer les différentes actions que tu vas réaliser avec cette « ardoise » un peu spéciale. Cet exercice nécessitera, bien entendu, une boucle de répétition. Vois quelles actions tu dois effectuer :
- - avant la boucle de répétition;
- - dans la boucle de répétition;
- - après la boucle de répétition...
Bonne réalisation.