Le but est de créer un objet qui se comporte comme une fraction pour les operations usuelles

Publié par

PROGRAMMATION LES CLASSES Le but est de créer un objet qui se comporte comme une fraction pour les operations usuelles : +,?, ?, /, . . . On commence par définir une classe pour décrire l'objet, ses proprié- tés (attribues) et ses comportements (methodes) : class Rat(object): def __init__(self,p,q): '''p,q entiers''' self.n = p,q def __repr__(self): return %d/%d%self.n def __add__(self,other): p,q = self.n m,n = other.n return Rat(p*n+q*m,n*q) Note que : – __init__(self,p,q) est le constructeur d'une fraction a partire d'une paire p, q – __repr__(self) permet de représenter l'objet avec print. – __add__(self) permet de faire la somme x + y EXAMPLE : On peut créer une fraction avec : x = Rat(1,2) print x Exo 1. La fonction dir de python permet d'étudier les objets EXAMPLE : y = 5 print dir(y) En dehors de '__add__', '__init__', '__repr

  • méthode

  • fraction pour les operations usuelles

  • frac- tion

  • developpment en décimale

  • entier

  • conversion necessaire


Publié le : lundi 18 juin 2012
Lecture(s) : 28
Source : www-fourier.ujf-grenoble.fr
Nombre de pages : 3
Voir plus Voir moins
PROGRAMMATION LES CLASSES
Le but est de crÉer un objet qui se comporte comme une fraction pour les operations usuelles : +,,, /, . . . On commence par dÉfinir une classe pour dÉcrire l’objet, ses propriÉ-tÉs (attribues) et ses comportements (methodes) : class Rat(object): def __init__(self,p,q): ’’’p,q entiers’’’ self.n = p,q
def __repr__(self): return "%d/%d"%self.n
def __add__(self,other): p,q =self.n m,n = other.n return Rat(p*n+q*m,n*q) Note que : __init__(self,p,q) est le constructeur d’une fraction a partire d’une pairep, q __repr__(self) permet de reprÉsenter l’objet avec print. __add__(self) permet de faire la sommex+y EXAMPLE :On peut crÉer une fraction avec : x = Rat(1,2) print x Exo 1.La fonctiondirde python permet d’Étudier les objets EXAMPLE : y =5 print dir(y) En dehors de ’__add__’, ’__init__’,’__repr__’ 1
2 PROGRAMMATION l’entier 5 a beacoup de Ajouter une methode a notre classe pour faire : (1)le produit de deux fractionsxy ’__mul__’ (2)l’inverse pour+ = (x) ’__neg__’ (3)la differencexy ’__sub__’ (4)la divisionx/y ’__sub__’ (5)faire le testex==y __eq__ Tester avec x = Rat(2,3) y = Rat(4,9) print x + y, x-y, x*x + y, x/y +y/x, x==y
Exo 2.– Un facteur commun est un entier qui diviseaetb. – Unefraction s’ecrita/baveca, b6= 0entiers, sans facteur commun d6= 1,1. Sia, bsont des entiers tels queddivisea, balorsddivisea%b, b aussi. D’ou les 2 regles de calcul d’un pgcd : 1/ if b>0: pgcd(a, b) = pgcd(b, a%b) 2/ if b == 0: pgcd(a, b) = a (1)Ecrire une fonction def pgcd(a,b): qui dÉtermine le pgcd de 2 entiers par rÉcursion. (2)Utiliser votre fonction pour ajouter une mÉthode a la classe : def simplify(self): qui permet d’afficher correctement la fraction quand on fait print.
PROGRAMMATION
3
Tester avec x = y = Rat(2,3) print x + y Exo 3.Notre classe est loin d’etre parfaite : x = Rat(2,3) print x + 1 donne une erreur car on n’a pas dÉfini la conversion entier en frac-tion ! Ecrire une mÉthode def conv(self,n): qui fait la conversion necessaire. Rappellons qu’un entier est la frac-tion n n= 1 . Rajouter une autre mÉthode def pe(self): dont le rÉsultat est la partie entiÈre de la fraction.
Exo 4.voici l’alorithme qui calcul le premier bout du developpment en dÉcimale d’un numbrex chiffres = [] for i in range(10): d, x = int(x), 10*(x -int(x)) chiffres.append(d)
(1)Tester avec1/7,1/7.0, maths.pi,56.1/3 (2)DÉcrire (en mots) le contenu de la listechiffres. (3)Expliquer pourquoi six0rationelle la suite
xn+1= 10(xnE(xn)) prendra qu’un nombre fini de valeurs.
Qu’arrive-t-il en pratique? (4)Rajouter une mÉthode À la classe pour calculer ses valeurs. (5)Moifier la mÉthode pour calculer le developpment en dÉcimale.
Soyez le premier à déposer un commentaire !

17/1000 caractères maximum.