Du circuit au code : ce que les portes logiques apprennent avant de programmer
On croit souvent que programmer commence par apprendre un langage. En réalité, une bonne partie du travail consiste à écrire des conditions : « si ceci et pas cela, alors… ». Ces conditions sont des portes logiques. Les manipuler d’abord sous forme de circuits donne une longueur d’avance.

Une condition, c’est une porte
Prenons deux lignes de Python, le langage qu’on apprend au lycée en NSI :
if pluie and not parapluie:
rester_dedans()
Ces deux lignes contiennent deux portes logiques. Le not est une porte NON : il inverse « j’ai un
parapluie ». Le and est une porte ET : il ne laisse passer que si les deux conditions sont vraies. Dans notre
jeu, on dessinerait exactement ce circuit : l’entrée « parapluie » passe par une porte NON, rejoint l’entrée « pluie » dans
une porte ET, et la lampe s’allume quand il faut rester dedans. Le programme et le circuit ont la même table de vérité.
Vrai, faux, 1 et 0
Dans un circuit, on parle de 1 et de 0 ; dans un programme, de vrai et de faux : True et False en
Python, true et false en JavaScript. C’est la même chose. Les opérateurs changent de nom selon le
langage, pas de sens : ET s’écrit and en Python et && en JavaScript, OU s’écrit
or ou ||, NON s’écrit not ou !. Un élève qui a joué avec les portes
reconnaît tout de suite ce qu’il lit.
La table de vérité, premier réflexe de test
Quand une condition se complique, les erreurs arrivent vite. Un programmeur prudent fait alors ce que fait le jeu : il liste toutes les combinaisons possibles et vérifie ce que donne sa condition pour chacune. Avec deux conditions, il y a quatre cas ; avec trois, huit ; avec quatre, seize. Ce réflexe est au cœur des tests de logiciels : vérifier chaque cas, pas seulement celui qui vient à l’esprit. Celui qui a rempli des tables de vérité l’a déjà, sans le savoir.
Les lois de De Morgan, pour simplifier
Une condition peut s’écrire de plusieurs façons. « Ni fatigué ni malade » se dit aussi « pas fatigué et pas malade », ou encore « pas (fatigué ou malade) ». C’est une loi de De Morgan, et elle sert tous les jours en programmation pour rendre une condition plus lisible. Dans le jeu, elle se voit : deux circuits différents qui allument la lampe sur exactement les mêmes lignes font la même chose. Notre page sur la table de vérité en donne un exemple.
Le XOR, petit outil des programmeurs
La porte XOR, le « ou exclusif », sort 1 quand ses deux entrées sont différentes. En programmation, on la retrouve
souvent : pour savoir si deux valeurs diffèrent, pour basculer un réglage (un clic l’allume, le suivant l’éteint), et dans
le chiffrement, où l’on mélange un message avec une clé par un XOR, puis où le même XOR avec la même clé rend le message
d’origine. En Python, elle s’écrit ^. Les détails sont sur la page de la
porte XOR.
Et le calcul, dans tout ça ?
Un ordinateur additionne avec des portes. Pour additionner deux bits, deux portes suffisent : un XOR donne le chiffre des unités, un ET donne la retenue. 1 + 1 donne 0, et je retiens 1 : le XOR de 1 et 1 vaut bien 0, et le ET vaut bien 1. Le dernier des 10 circuits gratuits fait justement poser la porte de la somme. En enchaînant de tels montages, on additionne des nombres entiers, puis on multiplie, puis on fait tout le reste.
Déboguer, c’est chercher la porte cassée
Un programme qui se trompe, c’est souvent une condition mal écrite quelque part. Dans le voyage de Bit, le chapitre « La panne » demande de trouver la porte qu’un réparateur pressé a remplacée par une mauvaise : c’est exactement le travail d’un programmeur qui cherche un bug. Le chapitre d’avant, « Le labo du professeur Volt », retourne le problème : les portes sont posées, et il faut trouver la position des interrupteurs qui allume la lampe. C’est ce que fait un programmeur quand il cherche le cas précis qui déclenche une erreur.
Pas besoin d’attendre le lycée : un collégien qui sait lire une table de vérité abordera les conditions de son premier programme sans peur.