11
TD2 2 MIC [email protected] Romaric GUILLERM Algo-Prog en Ada

TD2

  • 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

Page 1: TD2

TD22 MIC

[email protected]

Romaric GUILLERM

Algo-Progen Ada

Page 2: TD2

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)

Page 3: TD2

TD2 Question 1 : Ecrire la spécification de ce paquetage. fichier

Rationnels.ads !

Page 4: TD2

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

Page 5: TD2

TD2 Question 2 : Ecrire un programme client intégrant un jeu de tests pour ce

paquetage.

Page 6: TD2

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

Page 7: TD2

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) )

Page 8: TD2

TD2 Question 3 : Ecrire le corps du paquetage. Fichier Rationnels.adb !

Page 9: TD2

TD2 Question 3 : Ecrire le corps du paquetage. Fichier Rationnels.adb !

Page 10: TD2

TD2 Question 3 : Ecrire le corps du paquetage. Fichier Rationnels.adb !

Page 11: TD2

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