Lycée Auguste Brizeux Travail donné le 24 septembre 2014 PCSI Informatique CONVERSION D'UN NOMBRE ENTIER EN ÉCRITURE BINAIRE Travail demandé . Écrire un programme en Python demandant à l'utilisateur un entier n ∈ N, et renvoyant l'écriture binaire de n, c'est-à-dire la liste des coecients a0 , ... , ap (tous étant égaux à 0 ou 1) permettant d'écrire n = a0 × 20 + a1 × 21 + · · · + ap−1 2p−1 + ap 2p . . Ce programme devra s'intituler NOM_conversion.py (où NOM doit être remplacé par le nom de l'auteur du programme !), et être déposé sur la plate-forme Moodle dédiée avant mardi 30 septembre à 22h. Quelques conseils... 1. Principe général Etant donné n ∈ N, pour obtenir l'écriture binaire de n, il s'agit de trouver des coecients a0 , ... , ap (tous étant égaux à 0 ou 1) permettant d'écrire n = a0 × 20 + a1 × 21 + · · · + ap−1 2p−1 + ap 2p . Pour cela, on doit décomposer cet entier n en puissances de 2. Par exemple Dans le cas où n = 44 : ~ on commence par chercher la plus grande puissance de 2 contenue dans 44 : il s'agit de 25 = 32 ; ~ on considère ensuite 44 − 25 = 12, et on réitère le procédé... Cette démarche permet d'écrire 44 sous forme de somme de puissances de 2 : 44 = 25 + 23 + 22 = 1 × 25 + 0 × 24 + 1 × 23 + 1 × 22 + 0 × 21 + 0 × 20 Il ne reste alors plus qu'à donner l'écriture de 44 en binaire : 101100. L'algorithme de conversion à concevoir devra donc contenir, notamment : un sous-algorithme permettant de calculer la plus grande puissance de 2 inférieure à un entier n donné un sous-algorithme construisant la liste des exposants de 2 gurant dans l'écriture de n en binaire ,→ par exemple, si n = 44, on veut construire la liste [5, 3, 2] (ce sous-algorithme pourra faire intervenir le précédent) un sous-algorithme permettant de convertir la liste des exposants de 2 considérée ci-dessus en liste de 0 et de 1 correspondant à l'écriture binaire de n ,→ par exemple, si n = 44, la liste [5, 3, 2] doit permettre d'obtenir, à la n, [1, 0, 1, 1, 0, 0] 2. Quelques manipulations de listes en Python Les manipulations de listes en Python feront l'objet d'un travail plus approfondi ultérieurement. Néanmoins, il est, ici, utile de savoir : déclarer une liste vide : liste=[ ] ; concaténer deux listes liste_1 et liste_2 : liste_1+liste_2 est la liste constituée des éléments de liste_1 suivis de ceux de liste_2 ; ,→ par exemple [1,-5,3]+[2,-2] est la liste [1,-5,3,2,-2] ; calculer la longueur d'une liste : len(L) donne le nombre d'objets gurant dans la liste L. 3. Algorithmique et programmation Avant de se confronter à Python, il ne faut pas négliger la phase de conception de l'algorithme : cette partie du travail ne nécessite aucun ordinateur ! ::::::::::::::: Pour rendre un programme facile à comprendre, corriger et modier, de nombreux commentaires doivent y gurer. La qualité première d'un programme est de fonctionner : on vériera donc que le programme obtenu parvient au moins à s'exécuter sans erreur. Pour s'assurer qu'un programme apporte la réponse souhaitée, il faudra le tester avec plusieurs données en entrée. ,→ Ici, 44, 100, 13 peuvent servir de cobayes .