TD2

Preview:

DESCRIPTION

Algo-Prog e n Ada. TD2. 2 MIC. Romaric GUILLERM. guillerm@laas.fr. 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

TD22 MIC

guillerm@laas.fr

Romaric GUILLERM

Algo-Progen Ada

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

Recommended