Ton robot sait déjà rouler, éviter, revenir se recharger — mais son code, lui, ressemble à un plat de spaghettis : des si empilés, des qui se contredisent, des bugs qui n'apparaissent qu'un jour sur trois. Cette leçon te donne le mot et la méthode qui rangent tout : à chaque instant, le robot est dans UN état nommé, et seules les ont le droit d'en changer.
📖 Comprendre
1. La forêt de si : le code qui déborde
Ça commence toujours innocemment : un si pour l', un si pour la . Puis il faut se SOUVENIR de ce qu'on était en train de faire — alors on ajoute un drapeau enEvitement, puis un enRetour, puis un troisième. Chaque nouveau comportement se glisse ENTRE les anciens, et au cinquième si imbriqué, plus personne ne peut dire quelles combinaisons de sont possibles, ni ce que fera le robot dans chacune.
Le bug signature de cette forme de code : deux à vrai en même temps. enEvitement ET enRecharge — le robot essaie de reculer et d'accoster à la fois. Dans le salon, ces deux situations s'excluent ; dans la , RIEN ne l'interdit. Trois drapeaux, c'est huit combinaisons, dont quatre seulement ont un sens : les quatre autres sont des pièges armés, qui attendent la bonne suite d'événements pour se refermer.
2. Un seul état à la fois, et il porte un nom
L'idée neuve tient en une phrase : décrire le robot comme le ferait un témoin. « Il patrouille. » « Il évite. » « Il rentre. » À tout instant, une seule de ces phrases est vraie — alors va dire la même chose. On dresse la liste des situations possibles et on donne un NOM à chacune : PATROUILLE, EVITEMENT, RETOUR. Ces noms en majuscules sont les états de la machine — l'état, c'est ce que le robot fait maintenant.
La promesse qui change tout : UN SEUL état actif à la fois. Les combinaisons impossibles disparaissent par construction — il n'y a plus trois à concilier, il y a une seule réponse à « dans quel état suis-je ? ». Dans un état, le robot fait le travail de CET état, et rien d'autre : en PATROUILLE il avance et regarde devant lui ; en EVITEMENT il recule et pivote ; en RETOUR il vise le socle. Prévisible, lisible, racontable.
3. Les transitions : les seules portes de sortie
Une est une flèche d'un état vers un autre, étiquetée par sa condition : « à moins de 25 cm », « sous 20 % », « 2 s écoulées ». La règle est stricte : tant qu'aucune condition de sortie n'est vraie, on RESTE dans l'état — rester est une décision, pas un oubli. Et seule une transition a le droit de changer l'état : aucune autre ligne du ne touche à cette réponse.
Tu as déjà construit une sans la nommer : l' à deux . Regarde la figure — deux états, ALLUME et ETEINT, et deux flèches qui portent chacune leur condition : passer au-dessus du seuil haut pour allumer, redescendre sous le seuil bas pour éteindre. C'est exactement pour cela que l'hystérésis tenait bon dans le : chaque état n'écoutait que SA porte de sortie, et ignorait tout le reste.
4. Le diagramme avant le code
Des bulles pour les états, des flèches étiquetées pour les : c'est le , et il se dessine AVANT d'écrire la moindre ligne. Sur le papier, on vérifie pour le prix d'un coup de crayon ce qui coûterait une après-midi sur le robot : chaque état a-t-il au moins une sortie ? Peut-on rester coincé quelque part ? Deux flèches peuvent-elles tirer en même temps, et laquelle gagne ? Le diagramme est le plan de l'architecte — n'en sera que la maçonnerie.
Et tu en connais déjà deux, sans les avoir appelés ainsi. Le feu tricolore : trois états — vert 3 000 ms, orange 800 ms, rouge 3 000 ms — reliés par des transitions d'horloge, et ta variable d'état notait déjà la couleur en cours. La conduite en zones : trois états — LOIN, PRUDENCE, DANGER — reliés par des transitions de distance aux frontières de 25 et 60 cm. C'étaient des qui s'ignoraient ; ce chapitre leur donne le nom, et la méthode pour en construire de bien plus grandes.
🧮 Exemple guidé : la matinée du robot-aspirateur, transition par transition
Le robot-aspirateur du salon a quatre états : EXPLORE, EVITE, RETOUR, RECHARGE. Déroule sa matinée sur la chronologie : départ à t = 0 s, pare-chocs touché à t = 42 s, dégagement en 2 s, batterie sous 20 % à t = 1 260 s, socle atteint 90 s plus tard.
1.t = 0 s : mise en route, état EXPLORE. Le robot avance en zigzag et aspire ; il surveille deux choses seulement : son pare-chocs et sa batterie.
2.t = 42 s : le pare-chocs s'écrase contre un pied de chaise — la condition « contact » devient vraie : EXPLORE, puis EVITE. Recul et pivot, et l'instant d'entrée est noté.
3.t = 44 s : 2 s de dégagement écoulées — une transition d'horloge cette fois : EVITE, puis EXPLORE. L'aspiration reprend comme si de rien n'était.
4.t = 1 260 s : la jauge passe sous 20 % — EXPLORE, puis RETOUR : cap sur le socle, aspiration coupée. La flèche « batterie » a gagné sur la routine.
5.t = 1 350 s : le socle est touché — RETOUR, puis RECHARGE : moteurs coupés, charge en cours. Quatre états, quatre transitions franchies — et à CHAQUE instant de la matinée, une seule réponse à « que fait-il ? ».
Toute la matinée se raconte comme une suite de séjours dans des états, séparés par des transitions datées. C'est exactement ce que le journal série imprimera dans les prochaines leçons : l'histoire du comportement, ligne par ligne.
🛠 Pratiquer sur l'établi
01Constater la forêt de if : spaghetti qui déborde▶
Ouvre le à de l'établi : trois — enEvitement, enRetour, enRecharge — et des si qui se marchent dessus. Compte les combinaisons possibles : huit ; entoure celles qui ont un sens : quatre. Puis trouve la suite d'événements qui laisse DEUX drapeaux à vrai en même temps — tu viens de mettre le doigt sur le bug que la rendra impossible par construction.
📖 Termes de cette étape
02Dessiner les états du robot : explore, évite, recharge▶
03Lister les : quel événement change d'état ?▶
04Lire le diagramme du feu tricolore et le raconter▶