:: Enseignements :: Master :: M1 :: 2010-2011 :: Python ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Classes |
Ce TP consiste manipuler les classes en Python.
Exercice 1 - Bibliothèque
On souhaite modéliser une bibliothèque avec des classes en Python.
Une bibilothèque contient un ensemble de livres et un certain nombre d'utilisateurs.
Un livre a les informations suivantes:
- un numéro ISBN
- un auteur
- un titre
- etc.
Un utilisateur (numéro d'abonné, nom et prénom) peut
- obtenir les catalogues de tous les livres, des livres disponibles et des livres non disponibles.
- emprunter un livre à la bibliothèque: dans ce cas, vérifier que le livre est disponible;
cette opération peut s'effectuer en indiquant soit le titre du livre soit son numéro ISBN
- rendre un livre
Exercice 2 - Evaluation de formules arithmétiques
Nous souhaitons évaluer des formules arithmétiques.
Une formule arithmétique est une combinaison de constantes réelles (classe
Constante) et d'opérateurs unaires et binaires.
Les opérateurs unaires sont les suivants:
- Opp(x) : -x
- Log(x) : logx
- Cos(x) : cosx
- Inv(x) : 1/x
Les opérateurs binaires sont les suivants:
- Plus(x,y) : x+y
- Moins(x,y) : x-y
- Mult(x,y) : x*y
- Div(x,y) : x/y
Chacun de ces constituants de la formule est associé à une classe du même nom.
Une formule peut être instanciée de la manière suivante:
formule = Opp(Log(Plus(Constante(2.5),Mult(Constante(5), Constante(7.33)))))
Cette formule signifie
-(log(2.5 + (5 * 7.33))).
Chaque formule est alors un arbre dans lequel les noeuds non terminaux sont des opérateurs et les noeuds terminaux sont des constantes.
Ces noeuds (ou classes) contiennent une méthode
eval(), sans argument, qui renvoie la valeur de la formule du noeud associé.
Exercice 3 - Evaluation de formules arithmétiques avec variables
Les formules peuvent maintenant contenir des variables (classe
Variable), comme suit:
formule = Opp(Log(Plus(Constante(2.5),Mult(Constante(5), Variable('x')))))
Cette formule signifie
-(log(2.5 + (5*x))).
Les noeuds contiennent maintenant une méthode
eval() avec un argument optionnel (par défaut, None) qui est un dictionnaire associant à chaque nom de variable une valeur.
Cette méthode évalue l'expression en remplaçant les noms de variables par leur valeur.
Exercice 4 - Evaluation avancée de formules arithmétiques avec variables
Cet exercice est à faire à la maison.
On veut maintenant pouvoir évaluer les formules du genre:
x = 3 + z
y = 2x + log(3)
z = 1
Comment faire? Implémenter.
© Université de Marne-la-Vallée