Aller au contenu

Sciences de l'ingénieur (spécialité) · TerminaleBac

Programmation événementielle : cours de Terminale SI

Publié le 7 novembre 2026 · Mis à jour le 7 novembre 2026 · Signaler une erreur

L'essentiel

  • La programmation événementielle organise un programme autour des événements qu'il reçoit (clic, saisie au clavier, changement d'état) et de ses réactions à chacun d'eux 5.
  • Elle s'oppose à la programmation séquentielle, où les instructions s'enchaînent dans un ordre fixé d'avance 5.
  • Une architecture classique : une boucle principale en deux parties, l'une détecte les événements, l'autre les gère 5.
  • Un événement en cours de traitement va à son terme : un autre ne s'intercale que là où le code l'a explicitement prévu 5.
  • Méthode de travail : lister les événements, écrire un gestionnaire par événement, mémoriser l'état dans des variables, garder chaque gestionnaire court.

Introduction : un programme qui attend

Quand tu utilises une application sur ton téléphone, rien ne se passe tant que tu ne touches pas l'écran. Dès que tu appuies sur un bouton, l'application réagit : elle affiche une page, joue un son, envoie un message. Le programme ne suit pas un scénario écrit de la première à la dernière ligne : il attend que quelque chose arrive, puis il réagit.

C'est exactement l'idée de la programmation événementielle. Son principe est de recevoir des événements, de natures très variées : en particulier ce que fait un opérateur sur une interface graphique, comme bouger ou cliquer avec la souris, ou taper au clavier 5.

En sciences de l'ingénieur, cette façon de penser est partout. Un système automatisé reçoit des informations de capteurs, de boutons, de messages venant d'autres systèmes, et doit y répondre au bon moment. Dans le chapitre précédent, tu as vu comment un signal est échantillonné puis filtré : on obtient des valeurs numériques successives. La question suivante est naturelle : que fait le programme quand une de ces valeurs franchit un seuil, ou quand l'utilisateur agit ? La réponse se construit avec des événements.

Dans ce cours, tu vas apprendre à :

  • définir ce qu'est un événement et un gestionnaire d'événement ;
  • distinguer la programmation événementielle de la programmation séquentielle ;
  • décrire la boucle principale qui détecte puis traite les événements ;
  • écrire en pseudo-code un petit programme réactif et prévoir son comportement ;
  • repérer les erreurs fréquentes : gestionnaire trop long, état mal mémorisé, événement oublié.

L'épreuve de spécialité de Terminale porte sur le programme de sciences de l'ingénieur et sur son complément de sciences physiques, et les notions de Première peuvent y être mobilisées 2. Savoir raisonner sur un programme qui réagit à des entrées fait partie de cette culture numérique.

Qu'est-ce qu'un événement ?

Cette définition a deux conséquences utiles.

Première conséquence : un événement vient de l'extérieur ou de l'intérieur du programme. Un clic vient de l'utilisateur. Une variable qui change de valeur vient du programme lui-même 5. Dans un système technique, on ajoute naturellement les informations d'un capteur : c'est la même idée, un fait nouveau auquel il faut réagir.

Seconde conséquence : un événement n'est pas une durée, c'est un instant. Le clic est l'instant où le bouton est enfoncé. Le programme n'est pas "en train de cliquer" : il reçoit l'information qu'un clic a eu lieu.

Programmation séquentielle et programmation événementielle

Pour comprendre l'intérêt de la programmation événementielle, comparons-la à ce que tu connais déjà. En programmation séquentielle, les instructions s'exécutent l'une après l'autre dans l'ordre où elles sont écrites : le programme décide de tout, l'utilisateur attend son tour. La programmation événementielle s'oppose à ce modèle, ainsi qu'à la programmation par processus légers (threads) 5.

Séquentiel et événementiel côte à côte
CritèreSéquentielleÉvénementielle
Ce qui décide de la suiteL'ordre d'écriture des instructionsL'événement reçu
Description du programmeUne suite d'instructionsUn ensemble de réactions
Exemple typiqueUn calcul exécuté du début à la finUne interface avec boutons et saisies
Séquentiel et événementiel côte à côte · Comparaison de deux façons d'organiser un programme.

La boucle principale : détecter puis gérer

Comment un programme peut-il réagir à des événements qu'il ne peut pas prévoir à l'avance ? Il s'appuie sur une architecture simple : une boucle principale qui comporte deux parties. L'une guette les événements, l'autre se charge de les traiter 5. On rencontre surtout cette organisation dans les interfaces graphiques 5.

Un tour de la boucle principaleQuatre étapes qui se répètent : attendre, détecter, gérer, revenir à l'attente.1AttendreLe programme ne fait rien tant qu'aucun fait ne se produit.2DétecterLa première section repère un événement (clic, saisie, changement).3GérerLa seconde section exécute le gestionnaire associé, jusqu'à sa fin.4ReprendreLa boucle revient à l'attente de l'événement suivant.
  1. AttendreLe programme ne fait rien tant qu'aucun fait ne se produit.
  2. DétecterLa première section repère un événement (clic, saisie, changement).
  3. GérerLa seconde section exécute le gestionnaire associé, jusqu'à sa fin.
  4. ReprendreLa boucle revient à l'attente de l'événement suivant.
Un tour de la boucle principale · La boucle tourne tant que l'application est ouverte.

Imagine un standard téléphonique. L'opératrice attend. Un appel arrive (détection). Elle le dirige vers le bon service (gestion). Puis elle revient à l'attente. Elle ne traite pas deux appels exactement au même instant : elle termine l'un avant de passer au suivant. La boucle principale fonctionne de la même manière.

Cette propriété a une conséquence pratique directe : tant qu'un gestionnaire n'est pas terminé, les événements suivants attendent. Si un gestionnaire met trois secondes à s'exécuter, l'interface semble figée pendant trois secondes, car la section qui détecte ne reprend la main qu'après la fin du traitement. C'est pourquoi on vise des gestionnaires courts.

À l'inverse, cette règle simplifie beaucoup le raisonnement : puisqu'un gestionnaire n'est pas coupé en plein milieu, tu peux le lire comme une petite séquence ordinaire, sans craindre qu'un autre gestionnaire modifie tes variables entre deux de ses lignes.

Écrire des gestionnaires et mémoriser l'état

Un gestionnaire s'exécute puis se termine : il ne "se souvient" de rien par lui-même. Pour que le programme garde une mémoire d'un événement à l'autre, on utilise des variables d'état, déclarées en dehors des gestionnaires. Ce sont elles que les événements modifient, ce qui est cohérent avec l'idée qu'un programme événementiel se décrit par ses réactions aux changements qui surviennent 5.

Du capteur à l'événement : lien avec le signal

Tu as étudié l'échantillonnage et le filtrage. Un capteur de température, une fois échantillonné, fournit une suite de valeurs : T0,T1,T2,…T_0, T_1, T_2, \dots Le programme n'a pas besoin de réagir à chaque valeur. Il réagit quand quelque chose de significatif se produit. On peut donc fabriquer des événements à partir de mesures.

Remarque comment le filtrage entre en jeu : si le signal est bruité, il peut franchir le seuil plusieurs fois de suite par simple fluctuation, et produire une rafale d'événements parasites. Filtrer le signal avant de détecter le seuil, ou ajouter une marge entre le seuil de déclenchement et celui de retour à la normale, réduit ces événements inutiles. C'est une démarche d'ingénieur : on choisit la détection qui produit les événements utiles, ni trop, ni trop peu.

Erreurs fréquentes et bonnes pratiques

Pour aller plus loin : place dans le domaine informatique

Cette approche est née avec les interfaces graphiques, et c'est surtout la programmation orientée objet qui l'a rendue courante 5. Une interface graphique est faite de nombreux éléments (boutons, menus, champs de saisie) qui réagissent chacun à des actions de l'opérateur ; associer à chaque élément ses réactions est une organisation très naturelle.

Les programmes événementiels s'intègrent dans la démarche plus générale du programme de sciences de l'ingénieur, qui s'appuie sur une démarche scientifique appliquée à des thématiques comme les territoires et les produits intelligents 2. Un produit intelligent est justement un produit qui perçoit son environnement et réagit : c'est un terrain naturel pour des programmes pilotés par des événements.

Programmation événementielle en un coup d'œilCarte mentale avec cinq branches : événement, boucle, gestionnaire, état, erreurs.ClicSaisie clavierChangement d'étatÉvénementDétecteGèreBoucleCourtUn par événementGestionnaireVariables externesMémoireÉtatGestionnaire longÉvénement oubliéErreursÉvénementiel

Événementiel

  • Événement
    • Clic
    • Saisie clavier
    • Changement d'état
  • Boucle
    • Détecte
    • Gère
  • Gestionnaire
    • Court
    • Un par événement
  • État
    • Variables externes
    • Mémoire
  • Erreurs
    • Gestionnaire long
    • Événement oublié
Programmation événementielle en un coup d'œil · Les notions du chapitre et leurs liens.

Exercices corrigés

Exercice 1 Suivre l'état d'un compteur

★☆☆Environ 8 min

Un programme gère un score. Il possède une variable d'état score initialisée à 10 et deux gestionnaires :

fonction sur_clic_plus() :
    score = score + 3

fonction sur_minuteur() :
    score = score - 2

La boucle principale reçoit, dans un ordre quelconque, 6 événements clic_plus et 4 événements minuteur. Quelle est la valeur finale de score ?

Indice 1

Chaque événement modifie la même variable d'état, le calcul se fait événement par événement.

Indice 2

Comme on ne fait que des additions et des soustractions, l'ordre d'arrivée ne change pas le résultat final.

Voir la correction pas à pas
  1. On part de score = 10.

  2. Les 6 événements clic_plus ajoutent chacun 3 : total ajouté 6×3=186 \times 3 = 18.

  3. Les 4 événements minuteur retirent chacun 2 : total retiré 4×2=84 \times 2 = 8.

  4. Valeur finale : 10+18−8=2010 + 18 - 8 = 20.

La valeur finale est 20. Ici l'ordre des événements n'a pas d'influence, car les opérations commutent. Ce ne serait pas vrai avec un gestionnaire contenant une condition, par exemple "ne pas descendre sous 0".

Exercice 2 Charge de traitement d'une interface

★★☆Environ 10 min

Une interface reçoit en moyenne 4 événements par seconde pendant 2,5 minutes. Chaque événement est traité par un gestionnaire qui dure 0,05 s. Les événements sont traités un par un, sans interruption d'un traitement par un autre.

Calcule la durée cumulée de traitement sur ces 2,5 minutes, en secondes. Puis indique si la boucle principale est saturée.

Indice 1

Convertis d'abord 2,5 minutes en secondes.

Indice 2

Nombre d'événements multiplié par la durée d'un traitement.

Voir la correction pas à pas
  1. Durée de l'observation : 2,5×60=1502{,}5 \times 60 = 150 s.

  2. Nombre d'événements reçus : 4×150=6004 \times 150 = 600.

  3. Durée cumulée de traitement : 600×0,05=30600 \times 0{,}05 = 30 s.

  4. Comparaison : 30 s de traitement sur 150 s d'observation, soit 30/150=20 %30/150 = 20\ \% du temps. La boucle n'est pas saturée.

Le traitement dure 30 s au total. La boucle est occupée 20 % du temps : elle a de la marge. Si chaque gestionnaire durait 0,25 s, le temps de traitement serait égal à la durée d'observation : la boucle serait saturée, et les événements s'accumuleraient en attente.

Exercice 3 Concevoir un distributeur de tickets

★★★Environ 15 min

Un parking possède une barrière d'entrée. Elle s'ouvre quand un conducteur appuie sur le bouton "ticket", sauf si le parking est complet (100 places). Un capteur détecte le passage du véhicule sous la barrière : la barrière se referme alors. Un autre capteur, à la sortie, signale un véhicule qui part.

  1. Liste les événements.
  2. Propose les variables d'état.
  3. Écris en pseudo-code les gestionnaires.
  4. Explique ce qui se passe si le conducteur appuie deux fois de suite sur le bouton avant de passer.
Indice 1

Il faut au moins une variable pour le nombre de places occupées et une pour savoir si la barrière est ouverte.

Indice 2

Pour la question 4, regarde ce que fait ton gestionnaire quand la barrière est déjà ouverte.

Voir la correction pas à pas
  1. Événements : appui_ticket, véhicule_passé (capteur d'entrée), véhicule_sorti (capteur de sortie).

  2. Variables d'état : occupées (entier, initialisé à 0), barrière_ouverte (booléen, initialisé à faux).

  3. Gestionnaire d'appui : fonction sur_appui_ticket() : si occupées < 100 et non barrière_ouverte : barrière_ouverte = vrai ; ouvrir() ; sinon si occupées >= 100 : afficher("Complet").

  4. Gestionnaire de passage : fonction sur_véhicule_passé() : si barrière_ouverte : fermer() ; barrière_ouverte = faux ; occupées = occupées + 1.

  5. Gestionnaire de sortie : fonction sur_véhicule_sorti() : si occupées > 0 : occupées = occupées - 1.

  6. Double appui : le premier appui ouvre la barrière et met barrière_ouverte à vrai. Le second appui trouve barrière_ouverte vrai, la condition est fausse, rien ne se passe : aucun ticket supplémentaire n'est généré et le compteur n'est pas touché.

La variable barrière_ouverte protège le programme contre un ordre d'événements imprévu. Sans elle, un double appui pourrait ouvrir deux fois la barrière pour un seul véhicule. Penser aux séquences d'événements inattendues fait partie de la conception.

Quiz

7 questions · correction immédiate · ton score reste sur ton appareil.

  1. Sur quoi la programmation événementielle est-elle fondée ?

  2. Dans une boucle événementielle classique, quelles sont les deux sections ?

  3. Un gestionnaire d'événement en cours d'exécution peut être interrompu n'importe quand par un autre événement.

  4. Lesquels de ces faits peuvent constituer un événement ?

    Plusieurs réponses possibles.

  5. Un gestionnaire contient une longue attente de trois secondes. Quelle conséquence ?

  6. Un score vaut 5. Le gestionnaire sur_clic ajoute 4 au score, sur_pause retranche 1. On reçoit 3 clics et 2 pauses. Quel est le score final ?

  7. Où faut-il déclarer une variable qui doit garder sa valeur d'un événement à l'autre ?

Les questions qu'on se pose

Quelle est la différence entre programmation événementielle et programmation séquentielle ?

En programmation séquentielle, les instructions s'exécutent dans un ordre fixé par le programmeur. En programmation événementielle, l'ordre dépend des événements qui se produisent : le programme se définit surtout par ses réactions à ces événements 5. La première s'apparente à une recette suivie pas à pas, la seconde à un standard téléphonique qui répond aux appels dans l'ordre où ils arrivent.

À quoi sert la programmation événementielle dans un système technique ?

Elle permet à un système de réagir à des faits qu'on ne maîtrise pas à l'avance : action de l'utilisateur, changement de valeur d'un capteur, fin d'un minuteur. On l'emploie surtout pour les interfaces graphiques 5, mais la même organisation convient à un système automatisé : on liste les événements, on écrit une réaction pour chacun et on mémorise l'état.

Faut-il obligatoirement un langage particulier pour écrire un programme événementiel ?

Non. Tout langage convient, même si les langages de haut niveau facilitent la tâche 5. Certains environnements de développement intégrés produisent d'eux-mêmes le code des tâches récurrentes de gestion des événements 5. Ce qui compte pour toi est de maîtriser le raisonnement : événement, gestionnaire, état.

Est-ce que cette notion peut servir à l'épreuve de spécialité ?

L'épreuve de spécialité porte sur le programme de Terminale de sciences de l'ingénieur ainsi que sur son complément de sciences physiques, et les notions de Première peuvent y servir 2. La partie de sciences physiques comprend deux exercices indépendants et fait une place aux capacités numériques prévues par le programme 2. Les sources consultées ne détaillent pas de question type sur la programmation événementielle : retiens surtout la méthode de raisonnement (lister les événements, suivre l'état), utile dès qu'un énoncé décrit un système qui réagit à des entrées.

Comment éviter qu'un programme paraisse figé ?

Comme un événement en cours de traitement va à son terme avant que le suivant soit examiné 5, un gestionnaire long bloque la boucle. Garde donc chaque gestionnaire court : il met à jour l'état, déclenche une action rapide, puis se termine. Ne place jamais d'attente active à l'intérieur.

Sources

Programme visé : Bulletin officiel spécial n°8 du 25 juillet 2019 — Sciences de l'ingénieur, classe terminale · education.gouv.fr

  1. Bulletin officiel spécial n°8 du 25 juillet 2019 — Sciences de l'ingénieur, classe terminale, education.gouv.fr. Consulté le 7 novembre 2026.
  2. Éduscol STI — Épreuve de l'enseignement de spécialité Sciences de l'ingénieur (classe de Terminale), eduscol.education.fr. Consulté le 7 novembre 2026.
  3. Éduscol STI — Programme Sciences de l'ingénieur (réforme 2019), eduscol.education.fr. Consulté le 7 novembre 2026.
  4. Bulletin officiel n°24 du 11 juin 2015 — Enseignement de spécialité SI (classe terminale S), education.gouv.fr. Consulté le 7 novembre 2026.
  5. Programmation événementielle, Wikipédia. Consulté le 7 novembre 2026.

Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.

Signaler une erreur sur cette page

Je suis en…

Primaire

  • CP Bientôt
  • CE1 Bientôt
  • CE2 Bientôt
  • CM1 Bientôt
  • CM2 Bientôt

Collège

Lycée

Supérieur

  • BTS Bientôt
  • BUT Bientôt
  • Licence Bientôt
  • Prépas Bientôt

Sur cette page