Aller au contenu

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 ?

  1. 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.

  2. Réponse personnelle (par exemple : une ampoule connectée rend le même service qu’un interrupteur ou une minuterie).

  3. 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.

  4. 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.

  5. 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).

  6. 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 :

  1. Citer un capteur et un actionneur de ce système.

  2. 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.)

  1. Capteur : détecteur de présence (ou récepteur de la télécommande/du badge). Actionneur : le moteur du portail.

  2. 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)
  1. Quel est le capteur ? Quel est l’actionneur ?

  2. Décrire en une phrase ce que fait cet objet.

  3. 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é
  1. Capteur : le thermomètre (lire_temperature). Actionneur : le ventilateur.

  2. 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.

  3. À \(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.

  1. Écrire cette boucle de commande (une mesure par minute).

  2. 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é
  1. 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
    
  2. À \(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.

  1. Écrire la boucle de commande (dix tests par seconde).

  2. 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é
  1. Le compteur nb est 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
    
  2. 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ès afficher(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.

  1. 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.

  2. 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é
  1. 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).

  2. 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

  1. Qu’est-ce qui distingue un objet connecté d’un simple objet embarqué ?

  2. 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é
  1. Un objet connecté est relié au réseau et échange des données ; un objet seulement embarqué ne communique pas.

  2. 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.

  1. Quelle négligence des propriétaires a rendu l’attaque possible ?

  2. En quoi un objet connecté mal sécurisé met-il en danger plus que son seul propriétaire ?

  3. 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.)

  1. Les propriétaires n’avaient jamais changé le mot de passe par défaut (souvent admin/admin).

  2. 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.

  3. 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.

  1. Calculer les émissions par année d’utilisation si le téléphone est gardé 2,5 ans.

  2. Même question s’il est gardé 5 ans. Conclure.

  3. Pourquoi éteindre son téléphone la nuit a-t-il un effet bien plus faible que de le garder plus longtemps ?

  4. 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é
  1. \(80 \div 2{,}5 = 32\) : environ 32 kg de CO\(_2\)e par an.

  2. \(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.

  3. É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 %.

  4. 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
  1. 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.

  2. 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 ?

  3. Quelle vérification simple, faite avant de faire confiance à cette réponse, aurait suffi à détecter l’erreur ?

Corrigé
  1. 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.

  2. 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() sous if lum < 20: et ouvrir_volet() sous else:.

  3. 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).

  1. Écrire une fonction commande(t) qui renvoie la chaîne "allumer" si la température t est strictement inférieure à \(19\,^\circ\)C, et "eteindre" sinon (c’est la décision du thermostat du cours). Tester commande(17) et commande(19).

  2. 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 = ...
    
  3. À 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.