Upload
steve
View
33
Download
0
Embed Size (px)
DESCRIPTION
Algo-Prog e n Ada. TD2. 2 MIC. Romaric GUILLERM. [email protected]. TD2 - Paquetages. On veut concevoir un paquetage qui regroupe le type Rationnel et les opérations algébriques associées ( opposé, addition, différence, produit, rapport, inverse , …). - PowerPoint PPT Presentation
Citation preview
TD2 - Paquetages On veut concevoir un paquetage qui regroupe le type Rationnel et les
opérations algébriques associées (opposé, addition, différence, produit, rapport, inverse, …).
On modélisera un Rationnel à l’aide d’une structure de données privée encapsulant : Un numérateur de type entier relatif Un dénominateur de type entier strictement positif
Afin de définir correctement l’égalité entre deux rationnels, on leur appliquera systématiquement une simplification dès leur construction et après certaines opérations algébriques Pour la simplification est : avec et , où On représente un rationnel nul par :
On inclura également les sous-programmes pour : La construction L’accès au numérateur L’accès au dénominateur L’image d’un rationnel sous forme de chaîne de caractères pour faciliter son affichage
(fonction To_String(R : in Un_Rationnel) return String)
TD2 Question 1 : Ecrire la spécification de ce paquetage. fichier
Rationnels.ads !
TD2 Question 1 : Ecrire la spécification de ce paquetage. fichier
Rationnels.ads !
Spécification des sous-programmes publiques
Spécification des sous-programmes privées
Définition du type Rationnel
Déclaration d’une exception pour un dénominateur nul
Déclaration du type privé Rationnel
TD2 Question 2 : Ecrire un programme client intégrant un jeu de tests pour ce
paquetage.
TD2 Question 3 : Ecrire le corps du paquetage. Fichier Rationnels.adb !
Outils.ads
Outils.adb
Sous-programmes :
Simplification Constructeur To_String Sélecteurs Inverse Addition Différence Opposé Produit Rapport
TD2 Question 3 : Ecrire le corps du paquetage. Fichier Rationnels.adb !
Fonction Résultat S=N/D noté (N,D), avec R1=a/b, R2 = c/d
Simplification(R1) Si a ≠ 0 alors S=(a/p, b/p), avec p=pgcd(|a|,b)sinon S=(0, 1)
Constructeur(n, d) Si d=0 alors « erreur »sinon si n=0 alors S=(0, 1)sinon si d<0 alors S=Simplification( (-n, -d) ) sinon S=Simplification( (n, d) )
Inverse(R1) Si a=0 alors « erreur »Sinon si a>0 alors S=(b, a) sinon S=(-b, -a)
Addition(R1, R2) "+"
S=Simplification( (a*d + c*b, b*d) )
Différence(R1, R2) "-"
S=Simplification( (a*d - c*b, b*d) )
Opposé(R1) "-"
S=(-a, b)
Produit(R1, R2) "*"
S=Simplification( (a*c, b*d) )
Rapport(R1, R2) "/"
S=Simplification( R1 * Inverse(R2) )
TD2 Question 3 : Ecrire le corps du paquetage. Fichier Rationnels.adb !
TD2 Question 3 : Ecrire le corps du paquetage. Fichier Rationnels.adb !
TD2 Question 3 : Ecrire le corps du paquetage. Fichier Rationnels.adb !
TD2 Question 4 : Tracer le graphe des dépendances entre le programme
client, les spécifications et les corps des différents paquetages utilisés.
Faire un schéma avec des liens A B signifiant que B « dépend de » A
Rationnel.ads
Rationnel.adb
Outils.ads
Outils.adb Client_Rationnel.adb
Ada.Text_io.ads