Le codage de l’information : le binaire Objectifs : - Découvrir la notion de codage de l’information avec le binaire - Savoir ce qu’est un algorithme - Débuter en Python Introduction. Au cœur d’un ordinateur, certains composants convertissent le courant électrique en 0 et 1 créant ainsi une suite de bits (appelé langage machine). Il y a énormément d’étapes au niveau de la machine avant de réussir à transformer ces bits en nombre, en mots, en image. D’abord, qu’est-ce que le codage de l’information ? Voici une vidéo répondant à cette question et vous permettant de découvrir la notion de « base ». https://www.youtube.com/watch?v=kCrwLydx7S8 Binaire ↔ Décimal (un peu de maths !) Le but ici est de comprendre comment un nombre entier écrit en binaire (i.e. avec deux chiffres) peut être converti en un entier écrit avec dix chiffres (écriture décimale). Pour cela rendez-vous ici. Exercice d’application 1. Ecrire 1012 et 10012 en décimale. (La notation 1012 signifie que le nombre est écrit en base 2) 2. Indiquer le nombre de bits associé à chacun des nombres binaires ci-dessus 3. Ecrire 1110 et 1710 en binaire. 4. Indiquer le nombre de bits associé à chacun des nombres binaires précédents Résumez cette partie dans votre article « Carnet de bord » sur le site du lycée Activité 1 - Algorithme de conversion binaire vers décimale. Qu’est-ce qu’un algorithme ? Un algorithme est une suite finie d'instructions permettant de résoudre un problème ou d'obtenir un résultat. Il s’agit de la « maquette » d’un code informatique. Astuce : pour obtenir le chiffre des unités d'un nombre entier il suffit de déterminer son reste dans la division euclidienne par 10. Voici un algorithme en pseudocode, qui demande à l’utilisateur un nombre en écriture binaire et qui affiche sa conversion en écriture décimale. n : entier // Nombre binaire entré par l'utilisateur d : entier // valeur du nombre en base 10 i : entier // compteur des puissances successives à partir de 0 Début du Traitement Afficher(« rentrer votre nombre binaire ») Page 1 sur 4 Lire n Afficher(« Le nombre de départ est »,n) d prend pour valeur 0 i prend pour valeur 0 // Initialisation des variables Tant que n est différent de 0 faire Si ResteDivEucDe(n)par10 >1 // Chaque chiffre de n doit-être inférieur ou égal à 1 Alors Afficher(« Votre nombre n’est pas en écriture binaire ») Afficher(« rentrer votre nombre binaire ») Lire n Afficher(« Le nombre de départ est »,n) d prend pour valeur 0 // Initialisation des variables i prend pour valeur 0 Sinon d prend pour valeur d + ResteDivEucDe(n)par10 2 puissance i n prend pour valeur partie entière de n/10 i prend pour valeur i+1 Fin Si Fin Tant Que Fin du traitement 1. Afin de comprendre l’algorithme, remplir le tableau ci-dessous pour 1012 et 10012 d avant la boucle n avant la boucle i avant la boucle d après la boucle n après la boucle i après la boucle d avant la boucle n avant la boucle i avant la boucle d après la boucle n après la boucle i après la boucle Passage 1 0 Passage 2 Passage 3 Passage 4 Passage 5 Passage 2 Passage 3 Passage 4 Passage 5 0 Passage 1 0 0 2. Effectuer des modifications afin que le l’algorithme affiche le nombre binaire de départ et le nombre de bit de celui-ci. Page 2 sur 4 Activité 2 - Programmation : premier pas avec Python. Qu’est-ce que programmer ? Extrait de l’article Wikipédia : Dans le domaine de l'informatique, la programmation est l'ensemble des activités qui permettent l'écriture des programmes informatiques. Cela représente donc la rédaction du (ou des) code source d'un logiciel. Pour écrire un programme, on utilise un langage de programmation. Un logiciel est un ensemble de programmes (qui peuvent être écrits dans des langages de programmation différents) dédié à la réalisation de certaines tâches par un (ou plusieurs) utilisateurs du logiciel. --> Nous utiliserons dans les prochaines activités le langage Python (Version 3) Déclaration des variables en Python : En python il n'est pas nécessaire de préciser le type de variable (entier, caractère, … ) en début de code mais il faut connaître le concept de type de variables ! Pour cela : lire les deux premières parties de cette page : https://openclassrooms.com/courses/apprenez-a-programmer-en-python/le-mondemerveilleux-des-variables Télécharger puis ouvrir le fichier « ConversionBinaireDecimale.py » avec notepad++. Compléter avec le code ci-dessous, attention à bien respecter l’indentation** qui est obligatoire en Python : ** l’indentation est l’ajout de tabulations ou d'espaces dans un fichier, pour une meilleure lecture et compréhension du code. Prenez le temps de bien lire ce fichier afin de voir que la structure est la même que celle du pseudocode précédent. Les principales différences sont : L’ajout de bibliothèques dont « math » ; La syntaxe de programmation python : les mots clés sont en anglais. Dans votre article « Carnet de bord » indiquez : 1. Certaines de ces différences. 2. Comment calcule-t-on une puissance en python ? 3. Comment obtient-on la partie entière de n ? Page 3 sur 4 Exécution du programme - Clic droit sur le programme : « Edit with IDLE » - Dans le menu RUN, on trouve deux fonctionnalités indispensables Check Module qui vérifie la syntaxe du code Run Module qui exécute le code 1. Décrire le code couleur 2. Cliquer sur Run Module 3. Tester les nombres binaires étudiés précédemment : 101, 1001 puis les 2 que vous avez calculé à la question 3 de l’introduction. 4. Améliorer le programme afin : a. Qu’il affiche le nombre de bit b. Qu’il affiche un message d’erreur lorsque le nombre initial n’est pas écrit en binaire, c’est-àdire si le reste de la division euclidienne de n par 10 est supérieur à 1 comme indiqué dans l’algorithme Utiliser la structure if else (voir ce lien) Activité 3 : Pour aller plus loin - Conversion décimale vers binaire. Créer un algorithme en pseudocode, où un nombre entier en écriture décimale est en entrée et qui renvoi la conversion binaire de ce nombre. Programmer cet algorithme « ConversionDecimaleBinaire.py ». sous Python en partant du fichier n (le nombre binaire est déclaré en chaine de caractères) on utilise la concaténation de chaines Source : cette activité s’appuie sur un TP ISN de D. Simon Page 4 sur 4