Exercices#
Informatique embarquée et objets connectés
Mode d’emploi
-
Niveau : ★ échauffement, ★★ classique (niveau bac), ★★★ défi ; les coups de pouce et les corrigés se déplient sous chaque exercice.
-
sur papier à faire sur papier ; sur machine à faire sur machine. Les fonctions des capteurs et actionneurs (
lire_humidite(),detecte(),attendre()…) n’existent que sur une vraie carte : les programmes de cette feuille s’écrivent donc sur papier, sauf au dernier exercice, qui simule l’objet sur ordinateur. -
Réflexe « objet embarqué » : capteur (mesure) \(\to\) programme (décision) \(\to\) actionneur (action) \(\to\) on recommence.
-
Usage de l’IA, indiqué sur chaque exercice : aucune ; en appui (déboguer, reformuler, vérifier ; la réponse finale est écrite et comprise par vous) ; l’exercice s’appuie sur une réponse d’IA. Voir la charte d’usage de l’IA.
Systèmes embarqués#
★ Exercice 1 — Embarqué ou pas ? #
• essentiel
sur papier Pour chaque objet, dire s’il contient un système embarqué, et si oui, la tâche qu’il accomplit : un lave-linge ; un marteau ; un régulateur de vitesse de voiture ; une chaise ; une montre connectée ; un feu tricolore.
Coup de pouce
Relisez la définition d’un système embarqué : y a-t-il, à l’intérieur de l’objet, un petit ordinateur qui exécute un programme pour une tâche précise ?
Corrigé
Réponses aux questions fermées ; pour les questions ouvertes, des pistes attendues (d’autres réponses sont possibles).
Activité 1 — Capteurs ou actionneurs ?
Capteurs : l’appareil photo, le micro, le capteur de luminosité, et la surface tactile de l’écran (elle détecte le doigt). Actionneurs : le haut-parleur, le vibreur, la lampe torche, et l’affichage de l’écran. L’écran tactile est donc les deux à la fois.
Activité 2 — Compléter une boucle de commande
(a) La condition est lum < 30 (la luminosité devient faible). (b) La ligne allumer_led() commande l’actionneur : la LED s’allume. Programme complété :
while True:
lum = lire_luminosite()
if lum < 30: # (a) il fait sombre
allumer_led() # (b)
else:
eteindre_led()
attendre(1)
Activité 3 — Enquête sur un objet connecté
Réponse personnelle. Exemple attendu pour une montre connectée : capteurs (cardiofréquencemètre, GPS, accéléromètre, écran tactile) et actionneurs (écran, vibreur) ; elle envoie le rythme cardiaque, les pas et les positions au téléphone, puis aux serveurs du fabricant. Risque de sécurité : un compte ou un objet piraté (mot de passe par défaut, mises à jour non faites) ; risque de vie privée : des données de santé et de déplacement collectées et parfois partagées. Geste : changer le mot de passe par défaut, faire les mises à jour, limiter les partages dans les réglages.
Activité 4 — Un objet connecté, pour quoi faire ?
-
D’après le document, \(99\,\%\) des \(80\) kg CO2e d’un smartphone sont émis à la fabrication : l’éteindre n’agit que sur le \(1\,\%\) restant. Le garder longtemps répartit l’empreinte de fabrication : environ \(32\) kg par an sur \(2{,}5\) ans, mais \(80 \div 5 = 16\) kg par an sur \(5\) ans, et cela évite d’en fabriquer un nouveau.
-
Réponse personnelle (par exemple : une ampoule connectée rend le même service qu’un interrupteur ou une minuterie).
-
Par exemple : les mises à jour qui s’arrêtent (l’objet n’est plus sûr, des applications ne fonctionnent plus) ; une réparation impossible ou trop chère (pièces collées, pièces introuvables) ; une batterie usée qu’on ne peut pas remplacer ; un service en ligne que le fabricant arrête.
-
Par exemple : éteindre vraiment les objets la nuit (multiprise à interrupteur) ; garder son téléphone plus longtemps ; réduire la qualité vidéo et couper la lecture automatique.
-
Oui : lave-linge (piloter le cycle de lavage) ; régulateur de vitesse (maintenir la vitesse) ; montre connectée (afficher l’heure, mesurer l’activité) ; feu tricolore (gérer l’alternance des feux).
-
Non : le marteau et la chaise (aucun ordinateur).
★ Exercice 2 — Pas tout à fait un ordinateur #
sur papier Citer deux différences entre un système embarqué (dans un objet) et un ordinateur de bureau.
Coup de pouce
Relisez l’encadré « Différence avec un ordinateur ordinaire » : combien de tâches, quels moyens de dialoguer avec l’utilisateur, en combien de temps doit-il réagir ?
Corrigé
Un système embarqué ne réalise qu’une tâche (au lieu d’être polyvalent), n’a en général ni écran ni clavier classiques, est minuscule et sobre, et doit souvent réagir en temps réel.
Capteurs et actionneurs#
★ Exercice 3 — Qui mesure, qui agit ? #
• essentiel
sur papier Classer en deux colonnes (capteur / actionneur) : thermomètre, radiateur, détecteur de mouvement, haut-parleur, microphone, moteur de volet, capteur de luminosité, LED.
Coup de pouce
Pour chaque élément, demandez-vous s’il mesure quelque chose (entrée) ou s’il agit sur le monde (sortie).
Corrigé
-
Capteurs : thermomètre, détecteur de mouvement, microphone, capteur de luminosité.
-
Actionneurs : radiateur, haut-parleur, moteur de volet, LED.
▷ Erreur fréquente. Ranger le capteur de luminosité avec la LED parce que les deux « parlent de lumière » : le capteur mesure la lumière (entrée), la LED en produit (sortie). On classe un élément selon ce qu’il fait, pas selon le sujet.
★★ Exercice 4 — Dans un objet du quotidien #
sur papier Pour un portail automatique de maison :
-
Citer un capteur et un actionneur de ce système.
-
Que se passe-t-il, dans l’ordre, entre le moment où une voiture arrive et celui où le portail s’ouvre ? (mesure \(\to\) décision \(\to\) action)
Coup de pouce
Que doit « sentir » le portail pour savoir qu’une voiture arrive ? Qu’est-ce qui le fait bouger ? Placez ensuite le programme entre les deux.
Corrigé
(Portail automatique.)
-
Capteur : détecteur de présence (ou récepteur de la télécommande/du badge). Actionneur : le moteur du portail.
-
Le capteur détecte la voiture (ou reçoit le signal) \(\to\) le programme décide d’ouvrir \(\to\) il commande le moteur (actionneur) \(\to\) le portail s’ouvre.
La boucle de commande#
★★ Exercice 5 — Que fait ce programme ? #
• essentiel
sur papier On lit le programme d’un objet embarqué :
while True:
t = lire_temperature()
if t > 25:
allumer_ventilateur()
else:
eteindre_ventilateur()
attendre(30)
-
Quel est le capteur ? Quel est l’actionneur ?
-
Décrire en une phrase ce que fait cet objet.
-
Que se passe-t-il si la température mesurée est de \(22\,^\circ\)C ? de \(28\,^\circ\)C ?
Coup de pouce
Repérez la fonction qui lit une valeur (le capteur) et celles qui agissent (l’actionneur). Pour \(22\,^\circ\)C, la condition t > 25 est-elle vraie ou fausse ?
Corrigé
-
Capteur : le thermomètre (
lire_temperature). Actionneur : le ventilateur. -
L’objet rafraîchit la pièce : il allume le ventilateur dès que la température dépasse \(25\,^\circ\)C, et l’éteint sinon.
-
À \(22\,^\circ\)C : \(22>25\) est faux \(\to\) ventilateur éteint. À \(28\,^\circ\)C : \(28>25\) est vrai \(\to\) ventilateur allumé.
★★ Exercice 6 — Dérouler une boucle #
• essentiel
sur papier Une veilleuse exécute le programme suivant :
while True:
lum = lire_luminosite()
if lum < 40:
allumer_lampe()
else:
eteindre_lampe()
attendre(60)
Le capteur renvoie successivement \(70\), \(30\), \(10\) puis \(50\). Recopier et compléter le tableau :
| Tour | lum |
lum < 40 ? |
État de la lampe |
|---|---|---|---|
| 1 | 70 | ||
| 2 | 30 | ||
| 3 | 10 | ||
| 4 | 50 |
Combien de temps s’est-il écoulé entre la première et la dernière mesure ?
Coup de pouce
À chaque tour, on lit une nouvelle valeur, on teste la condition (vraie ou fausse), puis on exécute une seule des deux branches. Le programme attend \(60\) s à la fin de chaque tour.
Corrigé
| Tour | lum |
lum < 40 ? |
État de la lampe |
|---|---|---|---|
| 1 | 70 | faux | éteinte |
| 2 | 30 | vrai | allumée |
| 3 | 10 | vrai | allumée (elle le reste) |
| 4 | 50 | faux | éteinte |
Entre la première et la dernière mesure, il y a trois attentes de \(60\) s : 3 minutes.
▷ Erreur fréquente. Répondre \(4\) minutes parce qu’il y a \(4\) mesures : entre \(4\) mesures, il n’y a que \(3\) attentes (comme il n’y a que \(3\) intervalles entre \(4\) poteaux).
★★ Exercice 7 — Compléter un arrosage automatique #
• essentiel
sur papier Un système arrose une plante dès que la terre est trop sèche : l’humidité h passe sous 40. Recopier et compléter :
while True:
h = lire_humidite()
if ... : # (a) condition
... # (b) ouvrir la pompe
else:
fermer_pompe()
attendre(3600) # on re-teste chaque heure
Coup de pouce
La condition (a) traduit « l’humidité passe sous \(40\) » avec <. L’action (b) fait le contraire de celle écrite sous le else.
Corrigé
while True:
h = lire_humidite()
if h < 40: # (a) la terre est trop seche
ouvrir_pompe() # (b)
else:
fermer_pompe()
attendre(3600)
▷ Erreur fréquente. Écrire if h > 40: : la pompe s’ouvrirait quand la terre est déjà humide et se fermerait quand elle est sèche. Pour vérifier une condition, il suffit de la tester sur deux valeurs, par exemple \(h = 20\) (terre sèche) et \(h = 70\).
★★★ Exercice 8 — Défi — une alarme #
≈ 10 min
sur papier Écrire une boucle de commande pour une alarme : tant qu’elle fonctionne, si le détecteur de mouvement renvoie True (detecte()), elle déclenche la sirène (sonner()) et allume une LED (allumer_led()) ; sinon elle éteint tout. On testera dix fois par seconde.
Coup de pouce
Même structure que l’arrosage : while True, une lecture du capteur dans un if, un else, puis une attente. Pour « éteindre tout », on dispose de eteindre_sirene() et eteindre_led(). Dix fois par seconde : combien de secondes attendre entre deux tests ?
Coup de pouce 2 (début de solution)
while True:
if detecte():
sonner()
allumer_led()
(il reste le else et l’attente.)
Corrigé
while True:
if detecte(): # mouvement detecte
sonner()
allumer_led()
else:
eteindre_sirene()
eteindre_led()
attendre(0.1) # 10 fois par seconde
★★★ Exercice 9 — Le thermostat à deux seuils #
≈ 15 min
sur papier Le thermostat du cours allume le chauffage sous \(19\,^\circ\)C et l’éteint sinon : autour de \(19\,^\circ\)C, le radiateur s’allume et s’éteint sans arrêt, ce qui l’use. On veut un thermostat plus malin : il allume le chauffage si la température passe sous \(19\,^\circ\)C, l’éteint si elle dépasse \(21\,^\circ\)C, et ne change rien entre les deux.
-
Écrire cette boucle de commande (une mesure par minute).
-
Le chauffage est éteint et la pièce est à \(20\,^\circ\)C. Que fait le programme ? Et si le chauffage était allumé ?
Coup de pouce
Il y a trois cas : sous \(19\), au-dessus de \(21\), et entre les deux. Pour « ne rien changer », il suffit de ne commander aucun actionneur : pas besoin de else.
Coup de pouce 2 (début de solution)
while True:
t = lire_temperature()
if t < 19:
allumer_chauffage()
elif …
Corrigé
-
Trois cas ; entre \(19\) et \(21\,^\circ\)C, on ne commande rien (pas de
else) :while True: t = lire_temperature() if t < 19: allumer_chauffage() # trop froid elif t > 21: eteindre_chauffage() # trop chaud attendre(60) # entre 19 et 21 : on ne change rien -
À \(20\,^\circ\)C, aucune des deux conditions n’est vraie : le programme ne change rien. Le chauffage éteint reste éteint ; s’il était allumé, il reste allumé (jusqu’à dépasser \(21\,^\circ\)C). Le radiateur ne bascule donc plus sans arrêt autour d’un seul seuil.
★★★ Exercice 10 — Le compteur de passages #
≈ 20 min
sur papier À l’entrée d’une petite salle, un détecteur detecte() renvoie True quand quelqu’un passe. On veut compter les entrées, afficher le total sur un écran (afficher(n)) et déclencher un signal sonore (sonner()) dès que plus de \(20\) personnes sont entrées.
-
Écrire la boucle de commande (dix tests par seconde).
-
Une personne reste une demi-seconde devant le détecteur. Quel problème cela pose-t-il ? Proposer une solution simple.
Coup de pouce
Il faut une variable qui garde le nombre d’entrées d’un tour de boucle à l’autre : où la créer, avant ou dans la boucle ?
Coup de pouce 2 (début de solution)
nb = 0
while True:
if detecte():
nb = nb + 1
(il reste l’affichage, le test des \(20\) personnes et l’attente.)
Corrigé
-
Le compteur
nbest créé avant la boucle (sinon il repartirait de \(0\) à chaque tour) :nb = 0 while True: if detecte(): nb = nb + 1 afficher(nb) if nb > 20: sonner() attendre(0.1) # 10 tests par seconde -
En une demi-seconde, la boucle teste \(5\) fois le détecteur : la même personne serait comptée \(5\) fois. Solution simple : après une détection, attendre une seconde avant de reprendre les tests (ajouter
attendre(1)juste aprèsafficher(nb)).
Pour aller plus loin : on peut aussi ne compter que lorsque le détecteur passe de False à True. Il faut alors se souvenir, d’un tour à l’autre, de la mesure précédente, rangée dans une variable avant :
nb = 0
avant = False
while True:
maintenant = detecte()
if maintenant and not avant: # le detecteur vient de passer a True
nb = nb + 1
afficher(nb)
if nb > 20:
sonner()
avant = maintenant # on retient la mesure pour le tour suivant
attendre(0.1)
L’interface homme-machine (IHM)#
★ Exercice 11 — Entrées et sorties #
sur papier Pour un four à micro-ondes, citer deux éléments d’entrée (l’humain vers la machine) et deux éléments de sortie (la machine vers l’humain).
Coup de pouce
Imaginez-vous devant le four : sur quoi appuyez-vous pour le régler ? Comment vous montre-t-il le temps restant, et comment vous prévient-il que c’est prêt ?
Corrigé
(Four à micro-ondes.) Entrées : les boutons / la molette (durée, puissance), le bouton « départ ». Sorties : l’écran (temps restant), le bip de fin, la lumière intérieure.
★★ Exercice 12 — Bonne ou mauvaise IHM ? #
sur papier On appuie sur le bouton d’un objet, mais rien ne semble se passer (ni voyant, ni son, ni affichage). Pourquoi est-ce une mauvaise IHM ? Que faudrait-il ajouter ?
Coup de pouce
Relisez la règle « Une bonne IHM » du cours : que doit-il se passer juste après un appui sur un bouton ?
Corrigé
Sans aucun retour, l’utilisateur ne sait pas si son appui a été pris en compte : il doute, ré-appuie, se trompe. Il faudrait ajouter un retour : un voyant/une LED, un bip, ou un message à l’écran confirmant l’action.
★★ Exercice 13 — Concevoir une IHM #
sur papier On conçoit un pot de fleurs connecté qui mesure l’humidité de la terre et peut arroser tout seul.
-
Proposer une entrée (pour que l’utilisateur commande le pot) et deux sorties (pour qu’il soit informé). Justifier chaque choix en une phrase.
-
L’utilisateur lance un arrosage à la main. Quel retour le pot doit-il lui donner ?
Coup de pouce
Entrées : par quoi l’humain agit-il sur un objet (bouton, écran tactile, application, voix…) ? Sorties : comment l’objet informe-t-il (voyant, son, écran, notification) ? Pensez à ce que l’utilisateur a besoin de savoir : la terre est-elle sèche ? l’arrosage a-t-il commencé ?
Corrigé
-
Par exemple. Entrée : un bouton « arroser maintenant » (ou une application sur le téléphone), pour déclencher l’arrosage à la main. Sorties : un voyant qui passe au rouge quand la terre est sèche (on voit d’un coup d’œil l’état de la plante) ; une notification sur le téléphone quand le réservoir d’eau est vide (on est prévenu même absent).
-
Un retour immédiat : un voyant qui clignote ou un bip au début de l’arrosage, puis un signal à la fin. Sans retour, l’utilisateur ne sait pas si son appui a été pris en compte.
Objets connectés, sécurité et vie privée#
★ Exercice 14 — Objet connecté #
• essentiel
sur papier
-
Qu’est-ce qui distingue un objet connecté d’un simple objet embarqué ?
-
Citer deux objets connectés et, pour chacun, une donnée qu’il transmet.
Coup de pouce
Relisez la définition d’un objet connecté : qu’a-t-il de plus qu’un simple système embarqué ?
Corrigé
-
Un objet connecté est relié au réseau et échange des données ; un objet seulement embarqué ne communique pas.
-
Exemples : montre connectée \(\to\) rythme cardiaque / nombre de pas ; caméra \(\to\) images ; thermostat \(\to\) température (au choix).
★★ Exercice 15 — Le danger des mots de passe par défaut #
sur papier En 2016, le logiciel Mirai a détourné des centaines de milliers de caméras connectées pour saturer de grands sites.
-
Quelle négligence des propriétaires a rendu l’attaque possible ?
-
En quoi un objet connecté mal sécurisé met-il en danger plus que son seul propriétaire ?
-
Citer deux gestes simples pour sécuriser un objet connecté.
Coup de pouce
Que font la plupart des gens du mot de passe écrit dans la notice ? Et des centaines de milliers d’objets piratés, que peuvent-ils faire ensemble ?
Corrigé
(Mirai.)
-
Les propriétaires n’avaient jamais changé le mot de passe par défaut (souvent
admin/admin). -
L’objet piraté devient un « robot » qui participe à une attaque (déni de service) contre d’autres sites : il nuit à tout Internet, pas seulement à son propriétaire.
-
Changer le mot de passe par défaut ; installer les mises à jour (et couper l’objet quand il ne sert pas).
★ Exercice 16 — Vie privée #
sur papier Une enceinte connectée « écoute » pour réagir à la voix de ses utilisateurs. Expliquer, en deux phrases, en quoi cela pose une question de vie privée, et quel texte protège les données personnelles en France (et dans l’UE) ; et à Monaco ?
Coup de pouce
Relisez la règle « Deux enjeux à retenir » et l’encadré « Et à Monaco ? » du cours.
Corrigé
Une enceinte qui « écoute » en permanence peut enregistrer des conversations privées et les envoyer vers un serveur : ce sont des données personnelles, dont l’usage est encadré en France (et dans l’UE) par le RGPD (autorité : CNIL). Monaco n’étant pas dans l’UE, c’est la loi n° 1.565 du 3 décembre 2024 qui s’y applique (autorité : APDP).
Impact environnemental#
★★ Exercice 17 — L’empreinte d’un smartphone #
sur papier D’après l’outil Impact CO2 de l’ADEME (données ADEME–Arcep 2025, consulté en 2026 ; voir le document du cours), un smartphone émet environ 80 kg de CO\(_2\)e sur toute sa vie, dont 99 % lors de sa fabrication ; le calcul suppose qu’il est gardé 2,5 ans. On néglige ici l’usage et la fin de vie.
-
Calculer les émissions par année d’utilisation si le téléphone est gardé 2,5 ans.
-
Même question s’il est gardé 5 ans. Conclure.
-
Pourquoi éteindre son téléphone la nuit a-t-il un effet bien plus faible que de le garder plus longtemps ?
-
Citer deux raisons qui poussent à changer de téléphone ou d’objet connecté trop tôt, et un moyen d’y remédier.
Coup de pouce
Divisez les \(80\) kg par le nombre d’années. Où sont émis \(99\,\%\) des gaz : pendant l’usage ou à la fabrication ?
Corrigé
-
\(80 \div 2{,}5 = 32\) : environ 32 kg de CO\(_2\)e par an.
-
\(80 \div 5 = 16\) : environ 16 kg de CO\(_2\)e par an. Garder le téléphone deux fois plus longtemps divise environ par deux son empreinte annuelle, car la fabrication (99 %) est « amortie » sur plus d’années.
-
Éteindre le téléphone ne réduit que la part « usage », qui ne pèse qu’environ 1 % ici ; garder le téléphone plus longtemps agit sur la fabrication, qui pèse environ 99 %.
-
Raisons : batterie usée, écran cassé difficile à réparer, mises à jour de sécurité qui s’arrêtent, mode, stockage plein… Remèdes : faire réparer (changer la batterie ou l’écran), choisir un modèle réparable et suivi longtemps, acheter reconditionné.
Critiquer une réponse d’IA#
★★ Exercice 18 — Le volet automatique d’un assistant #
sur papier Un élève a demandé à un assistant d’IA : « Écris la boucle de commande d’un volet roulant qui se ferme quand la nuit tombe et s’ouvre quand il fait jour. Le capteur lire_luminosite() renvoie un nombre de 0 (nuit noire) à 100 (plein soleil). » Voici la réponse obtenue :
while True:
lum = lire_luminosite() # ENTREE : le capteur -> un nombre
if lum < 20: # il fait nuit
ouvrir_volet()
else:
fermer_volet()
attendre(60) # on re-teste chaque minute
-
La réponse est-elle correcte ? Dérouler la boucle pour une mesure de nuit (
lum\(= 5\)) puis de jour (lum\(= 80\)), et dire ce que fait le volet dans chaque cas. -
Localiser et corriger l’erreur.
Coup de pouce
Après avoir déroulé la boucle, comparez avec la demande de l’élève : de nuit, que doit faire le volet ?
-
Quelle vérification simple, faite avant de faire confiance à cette réponse, aurait suffi à détecter l’erreur ?
Corrigé
-
Non. La structure est la bonne (acquisition \(\to\) décision \(\to\) action \(\to\) attente, comme le thermostat du cours), mais le déroulé donne :
lum\(= 5\) \(\to\) condition vraie \(\to\)ouvrir_volet();lum\(= 80\) \(\to\) condition fausse \(\to\)fermer_volet(). Le volet s’ouvre la nuit et se ferme le jour : l’inverse de la demande. -
L’erreur : les deux actions sont inversées dans le
if/else(le commentaire « il fait nuit » est juste, l’action qui le suit ne l’est pas). Correction :fermer_volet()sousif lum < 20:etouvrir_volet()souselse:. -
Dérouler la boucle « à la main » avec une valeur de chaque côté du seuil (une mesure de nuit, une de jour) avant d’accepter le programme : c’est exactement la vérification de l’exercice 5.
Python au service du thème#
★★ Exercice 19 — Python au service du thème — simuler un thermostat #
sur machine En Python (Spyder ou Basthon). Sans carte électronique, on peut quand même faire tourner un objet embarqué sur ordinateur en le simulant : une variable remplace le capteur, un affichage remplace l’actionneur, et une boucle for remplace while True (on ne simule que quelques minutes).
-
Écrire une fonction
commande(t)qui renvoie la chaîne"allumer"si la températuretest strictement inférieure à \(19\,^\circ\)C, et"eteindre"sinon (c’est la décision du thermostat du cours). Testercommande(17)etcommande(19). -
On simule la pièce : chaque minute, le radiateur allumé la réchauffe de \(2\,^\circ\)C ; éteint, elle se refroidit de \(1\,^\circ\)C. Compléter, puis exécuter ce programme, qui part de \(15\,^\circ\)C et simule \(8\) minutes :
t = 15 for minute in range(8): ordre = commande(t) print(f"minute {minute} : {t} degres -> {ordre}") if ordre == "allumer": t = ... else: t = ... -
À partir de la minute 2, entre quelles températures la pièce oscille-t-elle ? Que fait le radiateur pendant ce temps ? Pourquoi est-ce gênant, et quel exercice de cette feuille propose une solution ?
Coup de pouce
Question 1 : un if pour le cas « trop froid », un else pour l’autre ; chaque branche renvoie une chaîne avec return. Question 2 : « se réchauffer de \(2\,^\circ\)C », c’est augmenter la variable t de \(2\), comme dans a = a + 1.
Corrigé
1. La fonction reprend la décision du thermostat du cours, mais renvoie l’ordre au lieu de commander le radiateur :
def commande(t):
if t < 19:
return "allumer"
else:
return "eteindre"
print(commande(17)) # allumer
print(commande(19)) # eteindre
2. Allumé, le radiateur ajoute \(2\) à la température ; éteint, la pièce perd \(1\) :
t = 15
for minute in range(8):
ordre = commande(t)
print(f"minute {minute} : {t} degres -> {ordre}")
if ordre == "allumer":
t = t + 2
else:
t = t - 1
Le programme affiche :
minute 0 : 15 degres -> allumer
minute 1 : 17 degres -> allumer
minute 2 : 19 degres -> eteindre
minute 3 : 18 degres -> allumer
minute 4 : 20 degres -> eteindre
minute 5 : 19 degres -> eteindre
minute 6 : 18 degres -> allumer
minute 7 : 20 degres -> eteindre
3. À partir de la minute 2, la pièce oscille entre \(\mathbf{18}\) et \(\mathbf{20\,^\circ}\)C. Le radiateur est rallumé (minutes 3 et 6) puis éteint (minutes 4 et 7) presque à chaque minute : ces marche-arrêt incessants l’usent et gaspillent de l’énergie. C’est le défaut que corrige l’exercice 9, « Le thermostat à deux seuils » : on n’allume que sous \(19\,^\circ\)C et on n’éteint qu’au-dessus de \(21\,^\circ\)C.
▷ Erreur fréquente. Écrire t = 15 dans la boucle : la température repart de \(15\) à chaque tour, le programme affiche huit fois 15 degres -> allumer et la simulation n’avance jamais. Comme pour le compteur de passages (exercice 10), une variable qui doit garder sa valeur d’un tour à l’autre se crée avant la boucle.