Représentations des nombres

publicité
Représentations des nombres
Résumé
Dans ce TP nous allons nous intéresser au changement de base pour les entiers. Le but est de
transcrire des entiers de la base 10 vers une base quelconque. Nous nous attarderons sur la base 16.
Puis nous ferons le lien entre nombre de chiffres et logarithme.
Écrire l’algorithme suivant sous Python.
Entrer un entier n
s ← ” ”/* chaine vide
tant que n>0 faire
r ← reste de la division de n par 2
n ← quotient de la division de n par 2
s ← écrire r à gauche de s.
fin
afficher s
*/
Tester l’algorithme sur les entiers de 1 à 16.
Afficher le résultat pour les entiers de 1 à 100.
Que fait cet algorithme ?
Modifier le programme pour pouvoir choisir une base quelconque.
Donner l’écriture en base 12 de 1043 et de 12397. Dans le cas de la base 16 par exemple, la convention
est de noter les valeurs supérieures à 10 par les lettres A, B, C, D, E et F.
Modifier le programme pour respecter la convention de la base 16.
Pour pouvoir réutiliser un algorithme, on a l’habitude de l’écrire sous forme de fonction.
Écrire une fonction ChangeBase qui prend en argument deux entiers n et b et retourne l’écriture de n
en base b. On se limitera ici et dans la suite à des bases inférieures à 16 en respectant la convention.
Consulter la page http://www.python.org/dev/peps/pep-0257/ pour insérer une documentation
dans votre fonction. Exécutez votre code puis écrire dans le terminal : ChangeBase.__doc__ (double
underscore à chaque fois).
Lorsque vous écrivez une fonction, pensez toujours à insérer une documentation pour vous souvenir de
son utilisation et pour pouvoir la réutiliser facilement.
Écrire une nouvelle fonction NombreChiffres inspirée de ChangeBase qui retourne le nombre de chiffres
dans l’écriture de n en base b.
Nous allons dans la suite mettre en évidence le lien entre le nombre de chiffres de l’expression d’un entier
n dans une base b et le rapport ln(n)
ln(b) .
Créer une liste x contenant les entiers de 1 à 1000. .
Créer une liste nbchiffres contenant le nombre de chiffres en base 2 des entiers de 1 à 1000.
Créer une liste ln2 contenant le rapport
ln(n)
ln(2)
pour tous les entiers n de 1 à 1000.
Faire une recherche google sur python import et s’inspirer des résultats pour importer le module
pyplot de la libraire matplotlib.
Faire une recherche google sur python pyplot et s’inspirer des résultats pour afficher sur un même
graphique nbchiffres en fonction de x et ln2 en fonction de x.
Vérifier que le comportement se généralise à n’importe quelle base.
Modifier le programme de changement de base pour pouvoir communiquer avec les Shadoks.
1
. pour obtenir la
fonction ln, il faut
importer la librairie math et utiliser
math.log.
Téléchargement