Accueil

Modules

Objectifs du TD : apprendre à créer des modules

Un module Python peut être vu comme une boîte à outils pour travailler sur des données, comme par exemple le module math qui vous donne accès aux fonctions trigonométriques, ou le module turtle qui vous donne accès à toutes les fonctionnalités de la tortue.

PROBLEMES

Utilisation du module math

En important le module math vous avez accès à toutes les fonctions mathématiques usuelles comme la racine carrée et les fonctions trigonométriques. Le module math est décrit dans le manuel de référence du langage à http://docs.python.org/py3k/library/math.html. En particulier, vous pouvez utiliser la constante pi et la fonction racine carrée sqrt.
Remarque : En Python3 les décimaux sont réprésentés par des nombres flottants qui peuvent être écrits suivant deux notations: Evidemment, un même nombre peut-être représenté par les deux notations. Par exemple, 0.0000004=4e-7 et 1.234567e10=12345670000.0.
  1. Ecrire un programme qui lit les coefficients d'une équation du second degré et qui affiche les solutions réelles quand il y en a. Quand il y a au moins une solution, ajouter un affichage pour vérifier que le résultat est correct. Par exemple :
    Résolution d'une équation du second degré : a x^2 + b x + c
    Coefficient a ? 1
    Coefficient b ? 1
    Coefficient c ? -2
    
    Deux solutions réelles :  -2.0 et 1.0
    
    Vérification de la première solution
    1.0 * -2.0 **2+ 1.0 * -2.0 + -2.0 = 0.0
    
    Tester votre programme pour des coefficients réels. Par exemple, avec a = 1.22, b = 3.34, c = 2.28 vous devez trouver les solutions -1.4388852766 et -1.29881964143.
    Essayer avec a = 0.1, b=10, c=0.1 puis avec a=1, b=3.34256e10 et c=3.34256e10. Les solutions trouvées sont-elles exactes ? (i.e. la vérification de la solution donne-t-elle une valeur proche de 0 ?)
    Tester votre programme pour de grandes valeurs des coefficients, par exemple a = 1.4256e150, b=1 et c=3.109e160. Que se passe-t-il ? Essayer de faire 1.4256e150*3.109e160 dans l'interprète.
  2. Explications
    Les flottants en Python3 respectent le format des doubles en C. Ils sont codés sur 8 octets (64 bits). 52 bits représentent la mantisse (i.e. les chiffres significatifs), 11 bits représentent l'exposant et 1 bit le signe. Le flottant le plus grand en Python3 est max=1.7976931348623157e+308, le flottant le plus petit est min=2.2250738585072014e-308.

    Contrairement aux entiers Python3 qui sont des grands entiers, et donc d'une taille infinie (ou plutôt limitée par la taille mémoire de la machine), les flottants ont un codage limité à 64 bits. Certaines opérations donnent donc des débordements de capacité. C'est ce qu'il se passe quand l'interprète affiche inf qui représente l'infini ou -inf qui représente l'infini pour un nombre négatif.

    D'autre part, tous les nombres décimaux ne peuvent pas être représentés par des flottants. Il y a donc des approximations, d'où les erreurs de calcul quand vous avez vérifié les solutions des équations du second degré.

  3. Ecrire un module maison qui importe le module turtle. Ce module permet de tracer une maison dont la largeur et la hauteur sont passées en paramètres, ainsi que le nombre d'étages et le nombre de fenêtres par étage.
    La maison a un toit quand le nombre d'étages est inférieur ou égal à 3. De plus, s'il y a un seul étage, il y a une seule fenêtre. Attention : tout doit être proportionnel. Par exemple, la porte a une largeur qui est le tiers de la largeur de la maison, et une hauteur qui est les 2/3 de la hauteur d'un étage. La largeur d'une fenêtre est le tiers de la largeur divisée par le nombre de fenêtres.
    Remarque
    Pour que le code soit lisible, il est impératif de le décomposer en utilisant des fonctions et des modules. Pensez aussi aux valeurs par défaut.

  4. Maison à un étage :
    maison exemple 1
    Maison haute à deux étages avec 2 fenêtres par étage:
    maison exemple 2
    Maison large à deux étages avec 2 fenêtres par étage:
    maison exemple 2
    Maison à cinq étages avec 4 fenêtres par étage:
    maison exemple 3

à retenir A RETENIR
Un module en Python est tout simplement un fichier qui contient des variables,
 constantes, fonctions et procédures. Il peut être vu comme une boîte à outils 
sur un thème donné (e.g. dessiner pour "turtle", traiter des chaines de caractères 
pour "myString").

Un module peut-être utilisé dans un programme en l'important (mot clé import).
Un fichier .pyc est alors créé et chargé dans l'interprète. Ce fichier est une version pseudo-compilée du module.


Collavizza Hélène