TP9 - question 1
Modérateur : Douin
TP9 - question 1
Bonjour,
n'ayant pas compris comment faire des While et For dans le TP6, et n'ayant pas de correction, je ne vois pas comment remplacer les while et les for pour cette question 1.
Merci pour votre aide, cela me permettra peut être de commencer ce TP.
Florent
n'ayant pas compris comment faire des While et For dans le TP6, et n'ayant pas de correction, je ne vois pas comment remplacer les while et les for pour cette question 1.
Merci pour votre aide, cela me permettra peut être de commencer ce TP.
Florent
-
- Messages : 8
- Inscription : 08 oct. 2017 23:08
Re: TP9 - question 1
Bonjour,
le tp6 est joint dans le tp9, ensuite, en vous aidant des structures de données du tp6, vous pouvez vous inspirer de la classe AST_Aff pour compléter les autres. Le test de la classe AST_Fact est déjà défini, le plus simple est de commencer par la classe AST_Fact du coup.
Les tests déjà définis vous aideront aussi à créer ceux demandés.
Isabelle
le tp6 est joint dans le tp9, ensuite, en vous aidant des structures de données du tp6, vous pouvez vous inspirer de la classe AST_Aff pour compléter les autres. Le test de la classe AST_Fact est déjà défini, le plus simple est de commencer par la classe AST_Fact du coup.
Les tests déjà définis vous aideront aussi à créer ceux demandés.
Isabelle
Re: TP9 - question 1
ok merci, je vais vais essayer comme cela.
Mais je dois dire que je suis un peu perdu avec ce langage WhileL.
Merci.
Florent
Mais je dois dire que je suis un peu perdu avec ce langage WhileL.
Merci.
Florent
Re: TP9 - question 1
Bonjour,
M. Karsenty a écrit
Les corrections partielles sont en ligne en général quelques jours après la correction de vos rapport
ce lien est accessible via la page de l'unité http://lmi92.cnam.fr/progAvancee/source ... le_des_TP/
Bonne fin de tp
M. Karsenty a écrit
Mettez du conditionnel, cela évite d'écrire de fausses assertionsn'ayant pas compris comment faire des While et For dans le TP6, et n'ayant pas de correction,
Les corrections partielles sont en ligne en général quelques jours après la correction de vos rapport
ce lien est accessible via la page de l'unité http://lmi92.cnam.fr/progAvancee/source ... le_des_TP/
Bonne fin de tp
Re: TP9 - question 1
Bonsoir,
au temps pour moi, je n'avais pas trouvé les corrections.
Je vais donc regarder.
Merci et bonne soirée.
Florent
Nickel, c'est exactement ce qu'il me manquait. Merci.
au temps pour moi, je n'avais pas trouvé les corrections.
Je vais donc regarder.
Merci et bonne soirée.
Florent
Nickel, c'est exactement ce qu'il me manquait. Merci.
Re: TP9 - question 1
Re Bonsoir,
donc, pour le factoriel, j'ai une erreur sur :
private Instruction ast = new Sequence(
new Affectation(xxx,n),
new Affectation(fact,un),
new TantQue(
new Sup(xxx,zero),
new Sequence(
new Affectation(fact,new Multiplication(fact,xxx)),
new Affectation(xxx,new Soustraction(xxx, un))
)
)
);
Cela me semble pourtant correct.
donc, pour le factoriel, j'ai une erreur sur :
private Instruction ast = new Sequence(
new Affectation(xxx,n),
new Affectation(fact,un),
new TantQue(
new Sup(xxx,zero),
new Sequence(
new Affectation(fact,new Multiplication(fact,xxx)),
new Affectation(xxx,new Soustraction(xxx, un))
)
)
);
Cela me semble pourtant correct.
Re: TP9 - question 1
Bonsoir,
Je pense qu'il y a quand même une erreur : la Séquence permet d'enchaîner deux instructions seulement, donc il faut que tu fasses une Séquence comprenant une Affectation et une autre Séquence, si tu veux enchaîner plus de deux instructions.
Je pense qu'il y a quand même une erreur : la Séquence permet d'enchaîner deux instructions seulement, donc il faut que tu fasses une Séquence comprenant une Affectation et une autre Séquence, si tu veux enchaîner plus de deux instructions.
Re: TP9 - question 1
Ok, merci, effectivement, ça marche mieux, mais bon, j'ai quand même une exception null au final :-(
Re: TP9 - question 1
Bonjour,
Personnellement, n'ai pas compris à quoi correspondent ces mots clés (et n'arrive donc pas à les "traduire" en AST) :
- ftp;
- fpt;
- fi;
- end (sans ;)
Quelqu'un peut-il m'éclairer ?
Merci par avance de votre aide
Thomas P
PS : je viens de tester ma classe AST_Fact avec la classe de test fournie. Celle-ci a l'air de bien fonctionner (pas d'erreur) mais la console m'affiche 0, est-ce normal ?
Si je comprend bien la classe de test, on doit obtenir la factorielle de 10 donc 3 628 800, non ?
Personnellement, n'ai pas compris à quoi correspondent ces mots clés (et n'arrive donc pas à les "traduire" en AST) :
- ftp;
- fpt;
- fi;
- end (sans ;)
Quelqu'un peut-il m'éclairer ?
Merci par avance de votre aide
Thomas P
PS : je viens de tester ma classe AST_Fact avec la classe de test fournie. Celle-ci a l'air de bien fonctionner (pas d'erreur) mais la console m'affiche 0, est-ce normal ?
Si je comprend bien la classe de test, on doit obtenir la factorielle de 10 donc 3 628 800, non ?
Re: TP9 - question 1
Bonsoir,
ce que je comprends, c'est :
ftp => fin tant que
fpt => fin tant que
fi => fin if
end => fin tant que
Pour moi aussi, c'est un peu du chinois l'AST.
Bon courage.
Florent
ce que je comprends, c'est :
ftp => fin tant que
fpt => fin tant que
fi => fin if
end => fin tant que
Pour moi aussi, c'est un peu du chinois l'AST.
Bon courage.
Florent
Re: TP9 - question 1
Bonjour a tous,
@Karsenti
Es ce que tu as fini par trouver la solution??
Je ne réussis pas a affecter la valeur de n dans mon instruction ast.
Ce que je comprends c'est qu'au moment de la création de l'objet, les variables d'instance sont declarées et initialisées avant appel du constructeur.
J'ai bien tenter de modifier la valeur dans le constructeur mais cela ne marche pas. je copie mon code ce sera peut etre plus simple a comprendre:
private Integer val = new Integer(0);
private Variable xxx = new Variable(m, "xxx", 0);
private Variable fact = new Variable(m, "fact", 1);
private Instruction ast = new Sequence(new Affectation(xxx, new Constante(val.intValue())),
new TantQue(
new Sup(xxx, new Constante(0)),
new Sequence(
new Affectation(fact, new Multiplication(fact, xxx)),
new Affectation(xxx, new Soustraction(xxx, new Constante(1)))
)
)
);
Dans le constructeur si j'ajoute val = n;
Cela ne change rien a la valeur dans la constante de ma premiere affectation dans l'instruction ast. La constante reste égale à zero.
J'ai changer Constante par Variable, ne change rien (modifier une constante n'est pas logique).
Si a la place de ma declaration de Constante ou Varaiable, je mets la valeur 10 (new Constante(10)), le test passe.
Si quelqu'un a une explication, merci d'avance.
julien
@Karsenti
Es ce que tu as fini par trouver la solution??
Je ne réussis pas a affecter la valeur de n dans mon instruction ast.
Ce que je comprends c'est qu'au moment de la création de l'objet, les variables d'instance sont declarées et initialisées avant appel du constructeur.
J'ai bien tenter de modifier la valeur dans le constructeur mais cela ne marche pas. je copie mon code ce sera peut etre plus simple a comprendre:
private Integer val = new Integer(0);
private Variable xxx = new Variable(m, "xxx", 0);
private Variable fact = new Variable(m, "fact", 1);
private Instruction ast = new Sequence(new Affectation(xxx, new Constante(val.intValue())),
new TantQue(
new Sup(xxx, new Constante(0)),
new Sequence(
new Affectation(fact, new Multiplication(fact, xxx)),
new Affectation(xxx, new Soustraction(xxx, new Constante(1)))
)
)
);
Dans le constructeur si j'ajoute val = n;
Cela ne change rien a la valeur dans la constante de ma premiere affectation dans l'instruction ast. La constante reste égale à zero.
J'ai changer Constante par Variable, ne change rien (modifier une constante n'est pas logique).
Si a la place de ma declaration de Constante ou Varaiable, je mets la valeur 10 (new Constante(10)), le test passe.
Si quelqu'un a une explication, merci d'avance.
julien
Re: TP9 - question 1
Bonjour,,
J'ai compris la grosse erreur que je fais, les objets sont construits et changer la valeur du paramètre a posteriori n'a aucun effet.
Maintenant a part instancier l'instruction ast dans le constructeur, je ne vois pas comment faire, je suis pas certain que c'est ce qui est demandé.
julien
J'ai compris la grosse erreur que je fais, les objets sont construits et changer la valeur du paramètre a posteriori n'a aucun effet.
Maintenant a part instancier l'instruction ast dans le constructeur, je ne vois pas comment faire, je suis pas certain que c'est ce qui est demandé.
julien
Re: TP9 - question 1
Bonjour,
alors en fait, j'ai utilisé la méthode décrite dans un autre sujet :
private Variable m1 = new Variable(m, "m1");
public AST_Fact(int n) {
m.ecrire("m1", n);
ast = new Sequence( new Affectation(xxx, new Constante(m.lire("m1"))) ....
Cela me permet de récupérer la valeur de n et de la traiter.
Je ne sais pas trop comment faire autrement, mais de cette manière cela fonctionne plutôt bien.
Bonne continuation.
Florent
alors en fait, j'ai utilisé la méthode décrite dans un autre sujet :
private Variable m1 = new Variable(m, "m1");
public AST_Fact(int n) {
m.ecrire("m1", n);
ast = new Sequence( new Affectation(xxx, new Constante(m.lire("m1"))) ....
Cela me permet de récupérer la valeur de n et de la traiter.
Je ne sais pas trop comment faire autrement, mais de cette manière cela fonctionne plutôt bien.
Bonne continuation.
Florent
Re: TP9 - question 1
Bonjour,
C'est un point qui m' a aussi posé problème.
J'ai été induit en erreur par le fait que le test déjà écrit pour tester AST_Aff (testSimple) utilisait une nouvelle mémoire (Contexte m = new Memoire();). Du coup, en copiant collant ce bout de code pour créer mes autres tests, je créais toujours une nouvelle mémoire pour tester. En soit, cela ne pose pas de problème pour les tests de la première question si on affecte une valeur constante à la variable contentant la valeur donnée en paramètre (n pour AST_Fact, a et b pour AST_Mult1, etc.). Pour autant, ce n'était pas ce qui était demandé :
Dans la question 2, pour AST_Fact, l'énoncé indique que la première affectation de xxx dans le code XML doit être formalisée comme ceci :
<Affectation>
<Variable>xxx</Variable>
<Variable>n</Variable>
</Affectation>
On affecte donc bien une variable (n) dans une autre (xxx), et pas une constante (de la valeur de n) dans la variable xxx.
La première affectation est donc donnée par : new Affectation(xxx,n) . Et la variable n doit bien être déclarée en tant que telle, de la même manière que xxx.
Ensuite, dans la classe de tests TestDesSer, il faudra bien penser à récupérer la mémoire de AST_Fact (et non en créer une nouvelle comme dans test_simple()) pour instancier le visiteur.
J'espère vous avoir aidé.
C'est un point qui m' a aussi posé problème.
J'ai été induit en erreur par le fait que le test déjà écrit pour tester AST_Aff (testSimple) utilisait une nouvelle mémoire (Contexte m = new Memoire();). Du coup, en copiant collant ce bout de code pour créer mes autres tests, je créais toujours une nouvelle mémoire pour tester. En soit, cela ne pose pas de problème pour les tests de la première question si on affecte une valeur constante à la variable contentant la valeur donnée en paramètre (n pour AST_Fact, a et b pour AST_Mult1, etc.). Pour autant, ce n'était pas ce qui était demandé :
Dans la question 2, pour AST_Fact, l'énoncé indique que la première affectation de xxx dans le code XML doit être formalisée comme ceci :
<Affectation>
<Variable>xxx</Variable>
<Variable>n</Variable>
</Affectation>
On affecte donc bien une variable (n) dans une autre (xxx), et pas une constante (de la valeur de n) dans la variable xxx.
La première affectation est donc donnée par : new Affectation(xxx,n) . Et la variable n doit bien être déclarée en tant que telle, de la même manière que xxx.
Ensuite, dans la classe de tests TestDesSer, il faudra bien penser à récupérer la mémoire de AST_Fact (et non en créer une nouvelle comme dans test_simple()) pour instancier le visiteur.
J'espère vous avoir aidé.
Re: TP9 - question 1
Merci de ton aide.
Je bloquais sur cette question depuis un moment et je commençais vraiment à m'arracher les cheveux :(
Il manquait juste la déclaration pour la variable n
Il ne reste plus qu'à voir si je passe les test Jnews mais avant il faut compléter les autres classes.
Raphael
Je bloquais sur cette question depuis un moment et je commençais vraiment à m'arracher les cheveux :(
Il manquait juste la déclaration pour la variable n
Il ne reste plus qu'à voir si je passe les test Jnews mais avant il faut compléter les autres classes.
Raphael
Qui est en ligne ?
Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité