TP6 question 3 Pour

Programmation Avancée

Modérateur : Douin

pthellier
Messages : 24
Inscription : 10 oct. 2017 13:52

TP6 question 3 Pour

Message par pthellier » 25 nov. 2017 10:21

Il me reste une seule erreur : testPour(question3) failed

Pourtant il me semble appliquer l'énoncé correctement dans VisiteurInstEvaluation : Sequence seqTemp = new Sequence(pour.init(),new TantQue(pour.cond(),new Sequence(pour.inc(),pour.i1())));

slash
Messages : 15
Inscription : 04 nov. 2017 2:45

Re: TP6 question 3 Pour

Message par slash » 25 nov. 2017 21:01

Bonsoir,

Je pense pouvoir te confirmer que ton VisiteurInstEvaluation est correct concernant la règle d'inférence.
Il me reste moi aussi des erreurs JNews concernant la fameuse boucle Pour.
Ton erreur (et les miennes sans doute) doivent provenir d'autre chose je suppose. Concernant la mise en forme, j'ai un point-virgule "systématique" sur les affectations, je sais que ça bloque la compilation pour la boucle for, mais je n'ai pas si c'est bien correct de faire un visiteur spécial pour les affectations dans la parenthèses de for.

Neness
Messages : 7
Inscription : 09 oct. 2017 22:20

Re: TP6 question 3 Pour

Message par Neness » 25 nov. 2017 22:55

Il me semble que tu as inversé l'instruction et l'incrémentation dans la dernière séquence, l'exemple ci-dessous fonctionne sur JNEWS :

Code : Tout sélectionner

new Sequence(pour.init(), new TantQue(pour.cond(), new Sequence(pour.i1(), pour.inc()))).accepter(this);

slash
Messages : 15
Inscription : 04 nov. 2017 2:45

Re: TP6 question 3 Pour

Message par slash » 26 nov. 2017 0:25

Merci, effectivement ça va mieux là.
Pourtant, j'avais réussi à éliminer l'erreur "test_VisiteurInstPour_AvecLaRègleDInférence(question3) failed" avec ce code (qui est aussi celui de pthellier) :

Code : Tout sélectionner

return new Sequence(pour.init(),new Sequence(
                                            new TantQue(pour.cond(),pour.i1()),
                                            pour.inc()
                                            )
                            ).accepter(this);
J'étais alors à peu près sûr que ce code était le bon puisqu'il passait, mais effectivement je comprends mieux maintenant la correction faite dans le dernier cours à ce propos. Je suis en FOD en différé, alors quelques fois ce n'est pas évident.

Merci

slash
Messages : 15
Inscription : 04 nov. 2017 2:45

Re: TP6 question 3 Pour

Message par slash » 26 nov. 2017 2:13

Ok, j'avais mis des "," à la place des ";" dans le for... A tellement chercher compliqué on oublie le plus simple.

pthellier
Messages : 24
Inscription : 10 oct. 2017 13:52

Re: TP6 question 3 Pour

Message par pthellier » 26 nov. 2017 12:14

J'ai toujours l'erreur, il doit y avoir d'autres tests. Il faudrait avoir connaissance des assertions de junit.

manuel
Messages : 11
Inscription : 25 oct. 2017 10:33

Re: TP6 question 3 Pour

Message par manuel » 26 nov. 2017 13:54

Salut à tous !
N'oubliez pas qu"on doit retourner un Contexte.
return this.vi.contexte()

Ce code fonctionne dans JNEWS
new Sequence(pour.init(),
new TantQue(pour.cond(),
new Sequence(pour.i1(),pour.inc()))
).accepter(this);
return this.vi.contexte();

manuel.lb
Messages : 24
Inscription : 29 oct. 2017 16:59

Re: TP6 question 3 Pour

Message par manuel.lb » 26 nov. 2017 20:17

Bonsoir,
En regardant la spécification formelle "tantque(Bexp;inc) faire I1-visite" : je crois y lire que l'instruction "inc" est exécutée avant l'instruction "I1", et que "inc" est quand même exécutée au moment ou la condition passe "faux". Ou alors c'est une subtilité de cette écriture qui m'échappe ?
Ceci dit, comme ça me semble compliqué, je pars plutôt sur votre point de vue.

manuel.lb
Messages : 24
Inscription : 29 oct. 2017 16:59

Re: TP6 question 3 Pour

Message par manuel.lb » 26 nov. 2017 20:29

Au temps pour moi, j'ai mal lu la séquence de messages ; il y a sans doute eu une mise au point en cours qui m'a échappée (j'ai toujours un ou 2 cours de retard depuis le début). Désolé si mon message a embrouillé des gens.
Je pars sur un for standard comme vous l'avez conclu.

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité