Première NSI Mme Pierrot
La représentation des nombres entiers
Thème : Représentation et traitement des données Compétences à acquérir :
• Savoir convertir un entier exprimé en base 10 dans d’autres bases (binaire, hexadécimale...etc. ) à la main.
• Savoir faire l’inverse aussi... à la main.
• Se familiariser avec python et être capable d’écrire des petits programmes utilisant la boucle « while » , les fonctions « input »,
« print », listes : savoir parcourir une liste avec l’instruction « for » Notions abordées :
• Ecriture d’un entier positif dans une base 2 ; 10 ou 16
• Représentation binaire d’un entier
• Espace de stockage
• Langage python : affectations, séquences, boucles et listes
Eléments d’information et exemples.
Sitographie :
• Diaporama « Représentation des nombres en machine » :http://mariepierrot.free.fr/lycee/1ereNSI/representationdesnombresenmachine.pdf
• Pourquoi 60 min dans une heure ? h ttps://www.youtube.com/watch?time_continue=199&v=JBK_52AV2ZQ&feature=emb_logo
• Les systèmes de numérations dans l’histoire : ht t p://msidobre.free.fr/exposes/numeration/
• En savoir plus sur les listes en python : https://python.doctor/page-apprendre-listes-list-tableaux-tableaux-liste-array-python-cours-debutant
• Fiche résumé sur la syntaxe élémentaire : http://mariepierrot.free.fr/lycee/1ereNSI/F_resumepythonelementaire.pdf
Conversion « à la main » de décimal en binaire :
7710 = 1 0 0 1 1 0 1 2
Algorithme pour extraire les chiffres d’un entier naturel en base 10
➢ Choisir un entier naturel n.
➢ Initialiser r à n.
➢ créer une liste vide liste_chiffres
➢ Tant que r n'est pas nul, faire :
➢ Calculer le reste de la division entière par 10 et stocker le résultat dans liste_chiffre
➢ Remplacer r par le résultat de la division entière par 10
➢ Renvoyer liste_chiffre
Les listes Créer une liste :
liste = [] # vide..
ou
liste = [2,6,0] # ou pas.
Ajouter un élément : liste.append(-5) Enlever un élément : liste.remove(6)
Inverser l’ordre des elements : liste.reverse()
Travail à réaliser
1) On pédale doucement c’est plat : Écrire dans l’éditeur le programme en python traduisant l’algorithme pour extraire les chiffres d’un entier naturel en base 10.
2) Que faudrait-il changer à ce programme pour qu’il convertisse un nombre décimal en binaire ? 3) Proposer un nouveau programme :
qui demande à l’utilisateur de donner
→ :
• un nombre entier en base 10,
• un nombre entier indiquant dans quelle base on souhaite convertir le nombre précédant → qui renvoie :
• La liste des chiffres représentant la conversion effectuée sous la forme d’une chaîne de caractères.
Vérifier le fonctionnement de votre programme avec les fonctions python
format() ; int() ; bin() ; oct() ; hex()… usage à rechercher dans la documentation python3
4) Attention ça monte : Proposer un algorithme qui permette d’obtenir le nombre décimal correspondant à une liste de ‘0’ et de ‘1’ décrivant un nombre écrit en binaire. Une fois l’algorithme validé, écrire le programme
correspondant.
5) Sans les mains : Écrire un programme qui permette de convertir n’importe quel nombre entier écrit dans une base dans une autre base. ex. 173 en base 8 doit donner en base 3 : 11120