▸Objectifs
- L'objectif est d'écrire quelques fonctions manipulant des intervalles de réels, représentés avec un type article.
▸Étapes à suivre
▸Première partie : les intervalles compacts
- Créez un nouveau fichier mission2.adb contenant la structure habituelle d'un programme Ada.
- Définissez un type article
T_Intervalle
permettant de représenter les intervalles de réels fermés et bornés, c'est-à-dire de la forme [inf, sup] où inf et sup sont des réels. Remarquez qu'il suffit de connaître inf et sup pour définir l'intervalle. - Définissez une fonction
Intervalle_Image
qui reçoit un T_Intervalle
et renvoie une chaîne de caractères, de la forme "[3,5]" (pour un affichage pas trop laid, convertir les bornes en entier, ou alors utiliser l'acteur DFloat). - Ajoutez une fonction
Est_Inclus
qui reçoit deux arguments A et B de type T_Intervalle
et qui renvoie vrai si et seulement si A est inclus dans B.
(Le corps de la fonction tient en une seule ligne.) - Ajoutez une fonction
Disjoints
ayant la même signature que Est_Inclus
(même arguments, même type de résultat) et qui renvoie vrai si et seulement si A et B sont disjoints. (Elle tient aussi en une seule ligne.) - Ajoutez une procédure
Afficher_Relation
qui reçoit deux arguments A et B de type T_Intervalle
et qui affiche l'un ou l'autre des messages suivants (selon ce qui est le plus adéquat) :- A est inclus dans B
- A contient B
- A et B sont disjoints
- A et B ne sont pas disjoints (mais aucun ne contient l'autre)
Vous pouvez utiliser Intervalle_Image
pour afficher l'intervalle lui-même au lieu de "A" ou "B". - Pour tester, créez trois constantes C, D, E, représentant respectivement les intervalles [5, 10], [7, 8], et [4, 6]. Puis, dans le corps du programme principal, invoquez
Afficher_Relation
avec les paires d'arguments (C,D), (D,C), (C,E), et (D,E).
Grâce à votre maîtrise absolue des relations ensemblistes, vous pouvez prévoir à l'avance ce qui sera affiché.
▸Deuxième partie : produits cartésiens d'intervalles compacts
- Dans le même programme, définissez un type
T_Prod
représentant un produit cartésien de deux intervalles. Par exemple : [1,5]x[3,8] est un élément de T_Prod - Définissez une fonction
Prod_Image
qui reçoit un T_Prod
et qui renvoie une chaîne de caractère, par exemple "[1,5]x[3,8]". Vous pensez spontanément à utiliser Intervalle_Image, c'est bien. - Comme ci-dessus, définissez les fonctions
Prod_Est_Inclus
et Prod_Disjoints
qui reçoivent deux arguments A et B de type T_Prod
et qui indiquent si A est inclus dans B ou si A et B sont disjoints (respectivement).
Le corps de ces fonctions tient toujours en une seule ligne. - Comme ci-dessus, ajoutez une procédure
Prod_Afficher_Relation
qui joue le même rôle que Afficher_Relation
mais pour des arguments de type T_Prod
. - Testez dans le corps du programme principal en invoquant
Prod_Afficher_Relation
avec les paires d'arguments suivants : - CxC et DxD
- CxD et DxC
- DxC et ExC
en prévoyant à l'avance ce qui sera affiché.
▸Bilan
- Avec le type T_Prod, vous avez expérimenté un type article imbriqué dans un autre type article.
- Vous savez maintenant que vous devez vous souvenir du produit cartésien À VIE.