Des puissances de 2 au code Andromède

mercredi 22 août 2012
par  Nathalie CARRIÉ

Mon but lors de l’enseignement de l’ISN est de simplifier au maximum l’introduction d’une notion, sachant que des cours complets très bien faits foisonnent déjà sur le Net, mon but étant d’accéder très rapidement à la partie pratique.

Pour commencer cette nouvelle spécialité en Terminale S, je propose de démarrer tout de suite en Python avec les élèves et d’illustrer au maximum chaque partie du cours avec du code Python. Les élèves ayant tous fait de l’algorithmique en seconde et en première, je ne compte pas faire de cours Python à proprement parler dans un premier temps. Je compte leur présenter les instructions au fur et à mesure des besoins, en utilisant un simple appel à Python dans un terminal. Nous travaillons sous Ubuntu 12.04, qui est une distribution GNU-Linux, mais cela peut aussi se faire en bootant sur la clé ISN.

Plus tard dans l’année, nous utiliserons Geany, environnement de développement intégré libre (EDI ou IDE en anglais pour « integrated development environment ») pour coder en Python surtout dans la phase de développement des projets. Un EDI est un programme regroupant un ensemble d’outils pour le développement de logiciels, dont un traitement texte et un compilateur.

Cette première séance devrait se dérouler sur 2 séances de 2 heures et abordera les notions suivantes :
- Préliminaire : Les puissances de 2
- Système binaire
- Codage d’un nombre
- Codage d’un texte

Préliminaire : Les puissances de 2

Écrire les 11 premières puissances de 2.
Il serait judicieux de savoir reconnaître les 11 premières puissance de 2.
1024 = ?

exercice Python :

  • Écrire un programme qui affiche les puissances de 2 de 20 à 220.
  • Écrire un programme qui, connaissant une puissance de 2, renvoie l’exposant (pour m = 2n, l’entrée c’est m, la sortie c’est n).

correction partielle en Python :

>>> for i in range(0,21):
...     print 2**i
...
1
2
4
8
16
32
64
128
256
512
1024
2048
4096
8192
16384
32768
65536
131072
262144
524288

Système binaire

Dans notre système pour compter, dit décimal, on a :
1243 = 1000 + 200 + 40 + 3
soit :
1243 = 103 + 2*102 + 4*101 + 3*100.

Nous sommes en base 10. On utilise alors les 10 symboles 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 pour noter les nombres.

Dans le système binaire, en base 2, nous aurons 2 symboles 0 et 1 pour noter les nombres.

Le code Andromède en binaire

Ainsi, tout nombre en binaire pourra s’écrire :
a = a0*20 + ... + an*2n,
où les ai appartiennent à l’ensemble {0,1}.

Par exemple :
1001 = 1*23 + 0*22 + 0*21 + 1*20
d’où b1001 = 9.

vérification Python :

>>> bin(9)
>>> '0b1001'
décimal binaire
0 0
1 1
2 10
3 11
4 100
5 101

exercice Python :

  • écrire un programme qui affiche en binaire les entiers naturels de 1 à 20.

Décimal vers binaire

On effectue les divisions entières successives par 2 du nombre à transformer :
127 = 63*2 + 1
63 = 31*2 + 1
31 = 15*2 + 1
15 = 7*2 + 1
7 = 3*2 + 1
3 = 1*2 + 1
1 = 0*2 + 1

127 = (((((1*2 + 1)*2 + 1)*2 + 1)*2 + 1)*2 + 1)*2 + 1

127 = 1*26 + 1*25 + 1*24 + 1*23 + 1*22 + 1*21 + 1*20

Ainsi 127 s’écrit 1111111 en binaire.

vérification Python :

>>> bin(127)
>>> '0b1111111'

exercice Python :

  • écrire un programme qui convertit en binaire un entier naturel.

Un mot sur l’hexadécimal

Le système hexadécimal correspond à la base 16. On le rencontre entre autres dans le codage des couleurs.
On utilise les 16 symboles suivant pour représenter les nombres :
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

A vaut 10, B vaut 11, etc.

Ainsi FF = 15*161 + 15*160 = 255.

Pour coder 127 en hexadécimal, il faut effectuer les divisions successives par 16 et procéder comme pour le binaire.
On peut s’aider de Python pour le calcul :

>>> 127/16
>>> 7
>>> 127%16
>>> 15

Donc 127 = 7*16 + 15
127 = 7*161 + 15*160

127 s’écrit donc 7F (parce que 15 c’est le symbole F).

Pour convertir de base 2 en base 16, il suffit de faire deux paquets de 4 bits.

Ainsi, 100011112 = 8F16 puisque 10002 = 816 et 11112 = F16.

décimal binaire hexadécimal
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
15 1111 F

exercice Python :

  • écrire un programme qui convertit en hexadécimal un entier naturel, et vice-versa.
  • écrire un programme qui convertit en hexadécimal un nombre en binaire, et vice-versa.

Codage d’un nombre

Le bit est la quantité élémentaire d’information : BInary digiT : 0 ou 1 (en savoir plus).

Un octet (byte) est un paquet de 8 bits.

Le plus grand nombre entier naturel que l’on peut coder sur 8 bits est donc :
11111111

code Python :

>>> bin(255)
>>> '0b11111111'

Quel est le plus grand entier que l’on peut coder sur 16 bits ?

En remarquant que :

>>> bin(65535)
'0b1111111111111111'
>>>

il faudra donc 16 bits pour coder le nombre 65535.

Codage d’un texte

On utilise le code ASCII qui donne en hexadécimal le code ASCII des caractères du clavier.

Table fournie : ASCII_Code_Chart.svg

PNG - 64.6 ko

Exemple : A = 41 en hexadécimal = 65 en décimal.
Pour coder le caractère A, on va donc coder en binaire le nombre 65 : 1000001.
Il suffit de 7 bits pour coder les caractères de l’alphabet.

Voir un premier extrait de film qui présente un message codé :
Extrait du film Le code Andromède


Décoder en français la suite binaire suivante pour connaître le message envoyé du futur dans le film Le code Andromède (The Andromeda Strain, 2008 American science-fiction film),
basé sur une nouvelle de Michael Crichton (1969) (http://en.wikipedia.org/wiki/The_An...).

0110111 0110011 0111001 0110101 0110010 0111000
1000010 1000001 1000011 1001001 1001100 1001100
1010101 1010011 1001001 1001110 1000110 1000101
1010010 1001110 1010101 1010011

Voir le message décodé :
Extrait du film Le code Andromède

Pour finir, voici un jeu Binary-game sur lequel les élèves pourront manipuler des octets façon Tetris. [1]

Un autre jeu en flash sur le binaire se trouve sur cette page.


[1Merci à François HOARAU et Christophe ALAVOINE du Lycée Jean Joly de la Rivière Saint-Louis. La Réunion.


Commentaires

Logo de The_Rems
dimanche 9 septembre 2012 à 14h52 - par  The_Rems

Merci pour la publication de cet article, vraiment proche de ce que je souhaitais faire en ISN avec mes élèves de TS.
J’ai mis en pratique votre séance ( un peu modifiée, voir ci-dessous) avec un groupe de 11 élèves sur 2 heures.
Je suis arrivé jusqu’au visionnage du premier film et le décodage est à faire pour la semaine suivante.
Je n’ai pas utilisé python pour l’instant. Ils ont proposé les programmes mais dans un langage très proche de l’algorithmie proposée en cours de math (j’enseigne « normalement » la physique).
J’ai remis à plus tard les question :
"exercice python :

écrire un programme qui convertit en hexadécimal un entier naturel, et vice-versa.
écrire un programme qui convertit en hexadécimal un nombre en binaire, et vice-versa."

J’ai par contre rallongé le premier programme à écrire (les puissances de 2) en leur demandant une version récursive du calcul (l’exemple m’a paru simple mais parlant).

Annonces

Prochains rendez-vous de l’IREM

Séminaire EDIM-IREM

- Mercredi 22 novembre 2017, 14h-18h, campus du Tampon, amphi 120 D
- Mercredi 7 février 2018, PTU, Saint-Denis, salle S23.6
- Mercredi 7 mars 2018, 14h-18h, campus du Tampon
- Mercredi 4 avril 2018, PTU, Saint-Denis, salle S23.6
- Mercredi 2 mai, 14h-18h, campus du Tampon
- Mardi 5 juin 2018, PTU, Saint-Denis, salle S23.6
- Mercredi 6 juin, 14h-18h, campus du Tampon

Fête de la science

Campus du Moufia, 16 et 17 novembre 2017.
Thème : « La recherche à l’heure du numérique »

Semaine des mathématiques

Du 26 au 31 mars 2018.
Thème : « Mathématiques et mouvement »


Brèves

Décès de Raymond Smullyan

mercredi 15 mars

Le logicien Raymon Smullyan est décédé en février 2017, à l’âge respectable de 97 ans : Il avait eu Alonzo Church comme professeur ! Pour en savoir plus, voir cet article

Travailler à plusieurs

lundi 19 décembre 2016

Les enseignements d’exploration au lycée imposent aux enseignants de travailler ensemble. Chantal Tuffery-Rochdi a analysé dans sa thèse les pratiques des enseignants de MPS (méthodes et pratiques scientifiques). Elle répond aux questions des Cahiers pédagogiques.

Un document sur Eduscol

mardi 19 mai 2015

Un document clarifiant bien la façon dont les mêmes concepts vivent en mathématiques et dans les sciences « exactes » les utilisant, publié par Eduscol en octobre 2014. Citons-les :
« Le document proposé ci-dessous s’adresse aux professeurs de mathématiques, physique-chimie et sciences de l’ingénieur intervenant dans le segment [Bac-3 ; Bac+3]. Il vise à les informer des différences de présentation et d’interprétation qui sont faites de certains concepts mathématiques dans les autres disciplines. Ces éclaircissements peuvent contribuer à harmoniser et à clarifier l’utilisation de ces notions auprès des élèves. »

Histoire de la comptabilité

vendredi 28 décembre 2012

Sur ce site (en anglais) dédié à la comptabilité, on trouve des informations intéressantes sur l’histoire et les pratiques de ce domaine, qui peuvent être utiles aux professeurs enseignant des mathématiques financières (et aussi aux autres...).

La CGE et la réforme des lycées

lundi 16 janvier 2012

La Conférence des Grandes Écoles publie 19 préconisations pour la réforme du lycée.

Sur le Web : Les 19 préconisations

Pratique des mathématiques en série STD2A

lundi 16 janvier 2012

Le site de l’IGEN offre des recommandations et des ressources pour enseigner les mathématiques en série STD2A. Les thèmes abordés (couleurs et nuances de gris, arcs et architecture, jeux vidéos, photo et tableur, perspectives parallèles...) sont de nature à donner aussi des idées d’activités aux enseignants des autres séries !

En cheminant avec Kakeya

lundi 16 janvier 2012

Un livre (à télécharger) de Vincent Borelli et Jean-Luc Rullière qui présente le calcul intégral et la dérivation en s’appuyant sur la question de Kakeya. Pour les lycéens, les étudiants et tous les esprits curieux qui souhaitent voir les mathématiques sous un jour différent.

Sur le Web : Livre à télécharger

Bicentenaire Galois

lundi 12 septembre 2011

À l’occasion du bicentenaire de la naissance d’Évariste Galois (1811-2011), l’Institut Henri Poincaré et la Société mathématique de France organisent un ensemble de manifestations et proposent un site contenant diverses ressources documentaires susceptibles d’intéresser les enseignants.

Statistiques

Dernière mise à jour

dimanche 12 novembre 2017

Publication

773 Articles
Aucun album photo
133 Brèves
11 Sites Web
132 Auteurs

Visites

46 aujourd'hui
911 hier
2164281 depuis le début
4 visiteurs actuellement connectés