~~NOTOC~~ ======PYTHON : Conversions binaire et décimal [TD]====== Durant vos années au collège, vous avez appris à écrire des **algorithmes** et à les traduire en **programmes** SCRATCH. Lors de la découverte du code binaire vous avez réalisez des exercices de programmation permettant de passer du **binaire** au **décimal** ou l'inverse. **Compétences :** * CT 1.3 – CT 2.5 – CT 2.7 - DIC 1.5 : Imaginer des solutions pour produire des éléments de programmes informatiques en réponse au besoin. * CT 3.1 - OTSCIS 2.1 : Exprimer sa pensée à l’aide d’outils de description adaptés. * CT 4.2 – CT 5.5 - IP 2.3 : Écrire un programme. **J’ai acquis la compétence si : ** * Je sais lire un algorithme et ou un organigramme. * Je sais utiliser les bases du PYTHON. Dans cette activité, nous allons reprendre un algorithme écrit précédemment et le traduire en langage PYTHON. =====Travail à faire===== En utilisant l'algorithme déjà écrit, je le traduit en programme PYTHON. Je vérifie ensuite son fonctionnement (avec des exemples qui fonctionnent et des cas d'erreurs aussi) avant d'appeler le professeur. Ci dessous sa traduction graphique (organigramme) et textuelle (algorithme). {{ :cours:organigramme_d2b.png?400 |}} 01 Demander un nombre entre 0 et 255 inclus 02 Mettre dans la variable NOMBRE la réponse 03 Si NOMBRE < 0 ou > 255 04 Signaler l'erreur 05 Arrêter le programme 06 Mettre la variable SEUIL à 128 07 Mettre la variable RÉPONSE à vide 08 Répéter jusqu'à SEUIL < 1 09 Si NOMBRE < SEUIL alors 10 Écrire un 0 à droite de RÉPONSE 11 Sinon 12 Écrire un 1 à droite de RÉPONSE 13 Faire NOMBRE = NOMBRE - SEUIL 14 Faire SEUIL = SEUIL / 2 15 Lire RÉPONSE * **variables** : Lignes 6, 7, 14 ... je note une valeur, le résultat d'un calcul, une information à me rappeler plus tard * **répétitions** : Les lignes 9 à 14 sont répétées 8 fois avant d'exécuter la ligne 15. * **conditions** : Si NOMBRE < SEUIL j'exécute la ligne 10 puis la 14 ; Si NOMBRE >= SEUIL j'exécute les lignes 12 et 13 avant d'aller à 14 J'utilise le site [[https://www.mycompiler.io/fr/new/python|MyCompiler]] comme IDE en ligne. =====Aide et solution===== ====Coups de pousse==== ===Pour saisir le nombre à traduire ou afficher les résultats=== {{:cours:cp.png?20 |}}++++Coups de pousse | * input("texte demande") # retourne la valeur saisie au clavier. * print("texte", contenu_variable) # affiche un résultat. * Pour générer un passage à la ligne ajouter la séquence '\n' à la fin de la chaîne de caractère. ++++ ===Pour définir le type d'une valeur (entier, décimal, chaîne de caractères ou logique=== {{:cours:cp.png?20 |}}++++Coups de pousse | * int(valeur), float(valeur), string(valeur), bool(valeur). ++++ ===Structures à utiliser=== {{:cours:cp.png?20 |}}++++Coups de pousse | * Instruction conditionnelle "Si-Sinon" => **if** condition : traitement vrai **else** : traitement faux; * Boucle conditionnelle "Tant-que" => **While** condition : traitement tant-que condition vrai * Les traitements sont écrits en dessous et indentés de la structure concernée. ++++ ====Solution==== **A ne regarder qu'une fois le travail terminé pour comparer. Vous pouvez avoir quelques différences tout en ayant aussi un programme qui fonctionne parfaitement.** {{:cours:cp.png?20 |}}++++Coups de pousse | #Initialisation nb = int(input("Nombre de 0 à 255 inclus ?\n")) seuil = 128 rep = "" #Chaîne vide #Contrôle de la validité de nb if (nb < 0) or (nb > 255) : print("Nombre", nb, "hors des limites !") else : print("Nombre", str(nb), "retenu.") #Début de conversion while seuil >= 1 : if seuil > nb : rep = rep + '0' else : rep = rep + '1' nb = nb - seuil seuil = seuil / 2 #Fin de conversion print("Résultat conversion binaire :", rep) * Un contrôle de la validité du nombre saisi a été rajouté. * Il est possible de télécharger la solution en cliquant sur son nom "Convert_10to2.py". ++++ =====Pour aller plus loin===== * Je fais la même chose pour passer du binaire au décimal .