Mis à jour le mercredi 12 juillet 2017
  • 10 heures
  • Facile

Ce cours est visible gratuitement en ligne.

Ce cours est en vidéo.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

Codez une information en binaire

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Nous venons de voir qu’une image peut être un objet assez complexe. Dès que l’image est grande, ou compliquée, sa description devient vite assez longue (et ce n’est pas après avoir rempli la liste de 400 lignes pour encoder votre avatar que vous me direz le contraire !). Et c’est sans compter que l’ordinateur ne stocke pas que des images bien sûr ! Il stocke aussi des sons, du texte (comme par exemple la page que vous êtes en train de lire), des programmes (comme celui qui vous permet de lire cette page), des nombres, … Bref tout.

Et pour cela, il va utiliser un langage très très basique : l'écriture‌ binaire. Eh oui, l’ordinateur va stocker des choses aussi compliquées et variées qu’un clip musical, une formule de mathématiques et le programme d’un jeu vidéo… avec uniquement des 0 et des 1.

La naissance d’une information

Vous vous demandez comment, juste avec des zéros et des uns on peut faire quoi que ce soit d’utile ? Avec un peu de recul, cela ne sera bientôt plus aussi mystérieux qu’il n’y parait, comme nous allons le découvrir tout de suite.

Qui a inventé la logique avec des 0 et des 1 ?

Dans la suite de ce module nous allons voir comment nous servir du binaire pour compter, pour représenter des choses compliquées, et même pour gagner de la place en stockant des données.  Mais d’abord d'où vient cette idée de tout coder avec des 0 et des 1 ? A l’origine, c’est un certain George Boole qui a eu l’idée d’utiliser deux valeurs pour rendre plus formel le raisonnement logique. Mais je vous laisse découvrir en vidéo son histoire… ou presque.

Comprendre en jouant à pixel-paravent

Le binaire c’est bien joli, mais comment je fais pour en parler à des enfants sans passer pour un·e illuminé·e ?

Ça tombe super bien car j’ai la réponse à cette question : en jouant à "pixel-paravent".

Qu’est-ce que c’est ? Une activité sans ordinateur, qui ressemble beaucoup à ce que vous venez de faire avec Scratch, et qui montre comment utiliser le binaire pour coder, décoder et transmettre une image.

Les règles de pixel-paravent

Le principe est simple : deux enfants sont placés de telle sorte qu’ils ne se voient pas l’un l’autre mais qu’ils puissent s’entendre (de part et d’autre d’un paravent, dos à dos…). Ils conviennent de la taille d’une grille, par exemple 5x5 cases. L’un d’eux réalise un dessin sur sa grille, en coloriant certaines parmi les 25 cases. Il va ensuite essayer de transmettre ce dessin à son partenaire. Comment cela ? Simplement en appelant 0 une case vide, 1 une case coloriée, et en transmettant oralement, case par case, la valeur de chacune d’elles.

Par exemple voici ce que donne le code 1111100100001000010000100 une fois décodé :

L’image codée par la suite 1111100100001000010000100
L’image codée par la suite 1111100100001000010000100

Et l’image peut être aussi compliquée que l’on veut : tant qu’on la dessine sur une grille 5 x 5 son codage binaire sera toujours codé sur 25 bits en mémoire.

Attention aux bugs !

Et si on se trompe en lisant/transmettant les 0 et les 1 ? C’est justement là que ça devient rigolo. Si on se trompe en changeant un 0 en 1 ou inversement, cela va juste changer la couleur d’une case. On a encore des chances de reconnaître le dessin. Mais si (et c’est ce qui arrive le plus souvent) on ajoute un bit en trop ou au contraire on en manque un, ça va tout décaler, et l’image peut ne plus ressembler à rien…

Cela permet justement de parler de bugs, et de faire passer des idées importantes :

  • Il y a souvent des bugs quand on écrit un programme, et c’est normal (la différence entre un bon et un mauvais programmeur c’est que le bon va corriger le programme après l’avoir testé, jusqu’à éradiquer tous les bugs).

  • Un tout petit bug de rien peut changer du tout au tout le résultat d’un programme (ça c’est la mauvaise nouvelle)…

  • Mais en corrigeant un petit bug on peut passer d’un gros n’importe quoi à un programme correct (ça c’est la bonne nouvelle qui va avec).

D’ailleurs ces questions, vous les avez probablement déjà rencontrées en faisant l’activité du robot dans le premier module de Class’Code : l’oubli d’une seule instruction du robot, par exemple tourner à droite, pouvait le faire finir complètement ailleurs par rapport à ce qu’on souhaitait (ou l’envoyer dans le décor ;) ).

Aller plus loin

Si jamais vous avez plus de temps et si vous êtes fan de cette activité, il est possible de la décliner de différentes manières, suivant l’âge de votre public :

  • Vous pouvez tout d’abord changer la taille de la grille, pour avoir plus de pixels, et donc faire des dessins plus précis.

  • Vous pouvez ensuite vouloir faire autre chose que du noir et blanc, mais là il faut donc plusieurs bits pour coder une couleur. Si par exemple je veux du jaune, blanc, bleu et rouge, j’ai besoin de deux chiffres pour chaque pixel (par exemple 00 pour blanc, 01 pour jaune, 10 pour rouge et 11 pour bleu). Mais alors je peux m’amuser à représenter plein de drapeaux comme ceux de de la France, la Roumanie, la Russie, le Pérou ou la Thaïlande... En théorie je peux aussi faire celui du Canada ou des Etats-Unis mais il va me falloir vachement plus de pixels (et des talents de dessinatrice).

  • Vous pouvez voir ce que ça donne si la personne qui décode l’image note les pixels dans un autre ordre (de haut en bas, colonne par colonne, en se baladant dans la grille comme un serpent, etc.). Pour certains ordres cela donne juste une transformation de l’image de départ (en miroir, la tête en bas) et pour d’autres c’est n’importe quoi !

  • Vous pouvez aussi réfléchir à d’autres manières, plus efficaces de coder une image, selon certaines contraintes. C’est ce que vous ferez ensemble lors du premier temps de rencontre et dans la prochaine partie, quand on parlera de compression…

Et le son alors ?

On vient de comprendre grâce à scratch et pixel-paravent comment coder une image en binaire... Mais la musique alors, on la transforme comment ?

En détail c'est un peu compliqué, mais dans l'ensemble ça ressemble au codage d’une image. Pour une image on assemble les nombres qui correspondent aux pixels, pour un son on assemble les nombres qui correspondent aux vibrations sonores qui arrivent à nos oreilles.

C'est pas facile à se représenter : on pourrait visualiser ce que ça donne ?

Très facilement si vous utilisez le logiciel libre Audacity par exemple qui est facile à installer, vous pouvez enregistrer votre voix (allez, pas de timidité !) et comme ici, on voit alors en zoomant la courbe des valeurs.

Courbe des valeurs
Courbe des valeurs

 Cet exemple correspond à 3 secondes du son qu'on entend dans un train, et on a fait un zoom sur une fraction de seconde de cet enregistrement.

Euh c’est un trait continu ça, comment on en fait des nombres ?

Comme pour une image : on commence par le couper en petits bouts (en touuut petits intervalles de temps), et pour chaque intervalle on prend une valeur (par exemple la valeur moyenne sur cet intervalle), c’est l’échantillonnage, puis on représente chaque valeur par un code binaire, c’est la quantification.

Numérisation du son par échantillonnage puis quantification
Numérisation du son par échantillonnage puis quantification

En résumé

  • Le binaire est un système de codage qui utilise uniquement deux signes, 0 et 1.

  • Un 0 ou un 1 est appelé un “bit” (contraction de binary digit en anglais, qui signifie chiffre binaire). 8 bits constituent un octet, et ensuite on peut regrouper les octets en paquets de plus en plus gros pour former des kilo-octets, des mega-octets, des giga-octets, etc.

  • En binaire on peut vraiment coder pas mal de choses ! Surtout quand on a beaucoup de giga-octets pour les stocker.

  • C’est George Boole qui a eu l’idée d’utiliser deux valeurs seulement (appelées depuis 0 et 1) et des opérations pour formaliser la logique dans les années 1850... Une idée qui est à la base de la structure des ordinateurs d'aujourd'hui !

  • Au plus profond des ordinateurs, TOUT est stocké et traité en langage binaire. Oui, tout.

  • Et oui ! Les sons, comme les images et les vidéos, peuvent être codés en binaire. Cela s’appelle la numérisation.

  • Pixel-paravent est une activité sans ordinateur, pour coder et transmettre une image en binaire, réalisable avec des enfants.

Exemple de certificat de réussite
Exemple de certificat de réussite