Soit E un ensemble fini d'éléments.
Soit L une loi interne définie par une table de Cayley.
E et L forment-ils une structure de groupe ?
Indiquer s'il est commutatif et toujours terminer en indiquant
le nombre de comparaisons effectuées.
Dans une seconde partie, montrer et expérimenter
les optimisations possibles pour tester chaque propriété
si la commutativité est testée en premier.
La conception informatique
les éléments sont des char
la loi est également représentée par un char
qui ne doit pas appartenir à l'ensemble E.
la première ligne de la table contient d'abord la loi, puis
tous les éléments de l'ensemble.
la première colonne doit être identique à la première ligne.
commencer par construire la table à partir des données fournies au constructeur;
si elles sont incohérentes, elles peuvent générer des exceptions,
par exemple: "oabc", "abcabc", "bc", "ccba"
continuer en vérifiant que les données de la table définissent
bien un ensemble et une loi interne à l'aide des 4 fonctions booléennes
détaillées dans le sujet de TP
afficher la table (à l'aide d'une procédure affiche() à écrire)
avant de vérifier si la loi est interne
écrire ensuite une méthode pour chaque propriété
mathématique à vérifier (et éventuellement une
méthode auxiliaire pour simplifier la vérification de la
propriété)
expliquer dans la javadoc pourquoi il semble judicieux de vérifier
très tôt la régularité
Commencer le test de chaque exemple par un appel à
U.init()
Pour toute comparaison de deux éléments,
remplacer x==y par U.egal(x,y)
et x!=y par U.diff(x,y).
A la fin du test de chaque exemple,
récupérer le nombre de comparaisons effectuées
par un appel à U.getCompteur()
Exemples
si !loiOK() afficher : "b n'est pas une loi"
si !tabEstEnsemble() afficher : "{a,b,b} n'est pas un ensemble"
si !c0EstIdentique() afficher : "[a,c,b] n'est pas identique"
si !loiInterne() afficher : "X n'est pas une loi interne"
ensuite, si une des propriétés mathématiques
n'est pas vérifiée,
afficher les propriétés vraies jusque là
puis la propriété fausse
test1( "exemple 1", new String[] { "oabc", "acab", "babc", "cbca" } );
doit donner la table
o | a b c
--+------
a | c a b
b | a b c
c | b c a
{a,b,c} muni de o est un groupe commutatif.
(xx comparaisons)
Pour ceux qui veulent être évalués :
Que faut-il rendre ?
La classe TableGroupe doit comporter sous forme de javadoc
les explications nécessaires, notamment pour chaque méthode
(ce qu'elle fait et succintement comment elle le fait).
Des justifications mathématiques peuvent également
s'avérer nécessaires.
La méthode test() doit lancer tous les tests qui auront
été mis au point, qui eux-mêmes provoquent
des affichages suffisamment clairs des différents cas
testés et des résultats obtenus.
Comment le rendre ?
Il suffit d'envoyer par mail à D.Bureau
le fichier .jar produit par BlueJ
accompagné de sa documentation ;
les 2 javadoc (user et prog) doivent être incluses dans le .jar.
Attention !
Pour le distinguer des autres mails ayant trait à IN101 ou PR102,
le sujet du mail commencera obligatoirement par "MA101 devoir".
Quand le rendre ?
Pour qu'il soit pris en compte, le mail doit avoir été
envoyé au plus tard, le jeudi 8 avril 2010.