Exercice de manipulation de type article
L'objectif est d'écrire quelques fonctions manipulant des intervalles de réels, représentés avec un type article.
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).
- 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) :Vous pouvez utiliser Intervalle_Image pour afficher l'intervalle lui-même au lieu de "A" ou "B".
A est inclus dans B
B est inclus dans A
A et B sont disjoints
A et B ne sont pas disjoints
(mais aucun n'est inclus dans l'autre)
- 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_Prodet 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




