M1 MEEF SD maths option info
Programmation orientée objet (en Python)
1 Polynômes
Le but ici est de réaliser une classe Polynome pour implémenter des polynômes (à coefficients réels).
Les quelques extraits de code ci-dessous démontrent le comportement attendu d’une telle classe.
Quand une surcharge spéciale est nécessaire elle est indiquée en commentaire.
1. Constructeur et attributs
>>> # ini ti al is at io n par un d ic ti onn ai re de co ef fi ci en ts
... # ce po lyn ome r epr é s ente 2 - X ^2
... p = Polynome ({ 0 : 2, 2 : -1 })
>>> p. degre
2
>>> p. domi nan t
-1
>>> p2 = Polynome ({ 250 : 1, 0 : 1 }) # p2 = X ^250 + 1
2. Ajoutez une méthode __repr__. Vérifier que Python affiche alors bien les polynômes que vous
construisez.
>>> prin t (p) # __repr__
( -1)* X **2 + 2* X **0
3. Ajoutez une méthode evaluer permettant d’évaluer la valeur du polynôme en un point. Une fois
que votre méthode marche, appelez-la __call__ et vérifiez qu’après avoir défini un polynôme P,
vous pouvez calculer P(5).
>>> prin t ( p (1)) # __call__
1.0
4. Ajoutez une méthode coeff permettant d’obtenir le coefficient d’ordre nde votre polynôme, une
méthode deg permettant d’obtenir son degré. Renommez coeff en __getitem__ pour écrire P[i]
plutôt que P.coeff(i).
>>> prin t ( p [0]) # __getitem__
2.0
>>> prin t ( p [1])
0.0
5. Ajoutez une méthode __add__ pour effectuer la somme de deux polynômes.
>>> prin t ( p + p2 ) # __add__
1* X **250 + ( -1)* X **2 + 3* X **0
2 Arbres
En vous inspirant de l’implémentation des listes chaînées vues en cours à l’aide d’objets, construire
une classe Arbre permettant de manipuler des arbres binaires de recherche, dont les méthodes agiront
par effet de bord sur l’arbre considéré.
On définira les attributs et méthodes suivants :
—val,fg et fd désignent respectivement l’étiquette, le fils gauche et le fils droit d’un nœud
—rechercher(self, v) renvoie un booléen indiquant si vest présent ou non dans l’arbre
—inserer(self, v) ajoute un nouveau nœud dans l’arbre en préservant ses propriétés d’arbre
binaire
—supprimer(self, v) renvoie un arbre dans lequel le nœud de valeur v, s’il existe, a été supprimé
1