TP9 question 1 AST_SOM_F

Programmation Avancée

Modérateur : Douin

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

TP9 question 1 AST_SOM_F

Message par pthellier » 09 janv. 2018 15:40

Bonjour,
dans AST_SOM_F

je ne comprends pas l'élément d'instruction à implémenter (n> 0) { som := som + i;

L'instruction entre parenthèse (n>0) indique t elle une condition à réaliser ?

De plus apparemment il manque une accolade fermante dans le sujet ?

Pour rappel instruction AST_SOM_F complète :
som := 0;
for (i = 0; i < n; i++) { (n> 0) {
som := som + i;
}

bcalendreau
Messages : 37
Inscription : 07 oct. 2017 20:27

Re: TP9 question 1 AST_SOM_F

Message par bcalendreau » 10 janv. 2018 8:38

Je me pose la même question.
Je n'ai pas tenu compte du n>0, mais avec mon code et mon test je n'obtiens pas le bon résultat (test perso).
Comme si som était incrémenté une fois que i = n...

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

Re: TP9 question 1 AST_SOM_F

Message par slash » 10 janv. 2018 15:03

Bonjour,

Pour ma part je n'ai pas "traité" la cas n<=0 puisqu'il n'est pas réalisable dans boucle Pour (la condition i<n avec i incrémenté et commençant par 0) et ça passe apparemment sans problème. Je pense que l'instruction (n>0) est simplement mise à titre indicatif (c'est un commentaire), ou alors une erreur de copier-coller ? En tout cas l'algorithme fonctionne bien, ton problème doit venir d'ailleurs. Revérifie peut-être que tu as bien les bonnes affectations de n et somme dans ta première séquence ?

bcalendreau
Messages : 37
Inscription : 07 oct. 2017 20:27

Re: TP9 question 1 AST_SOM_F

Message par bcalendreau » 10 janv. 2018 18:28

Eh bien si erreur il y a je ne la vois pas.
C'est pas gênant du tout puisque j'ai juste à faire i < n-1 mais bon...

Voilà la boucle Pour sans retrancher un à n, ce qui me donne pas le résultat attendu, peut-être vois-tu l'erreur ! (j'ai bien affecté 0 à som!)

Pour p = new Pour(
new Affectation(i, new Constante(0)),
new Inf(i, new Constante(m.lire("n"))),
new Affectation(i, new Addition(i, new Constante(1))),
new Affectation(som, new Addition(som, i))
);

Merci en tout cas !

cr2017
Messages : 32
Inscription : 10 oct. 2017 9:05

Re: TP9 question 1 AST_SOM_F

Message par cr2017 » 10 janv. 2018 19:28

Bonjour,

J'ai déclaré toutes les variables et constantes dans partie déclarative de la classe, avant l'invocation du constructeur.

Il faut commencer par une séquence qui inclut l'affectation som=0 initiale, puis la boucle pour.

déclaration des champs de classe:

Code : Tout sélectionner

private Contexte m = new Memoire();
private Variable som = new Variable(m, "som");
private Variable n = new Variable(m, "n");
private Variable i = new Variable(m, "i");
private Constante Zero = new Constante(0);
private Constante Un = new Constante(1);

instruction:

Code : Tout sélectionner

ast = new Sequence(new Affectation(som, Zero), 
new Pour(new Affectation(i, Zero), 
new Inf(i, this.n), 
new Affectation(som, new Addition(som, i)), 
new Affectation(i, new Addition(i, Un))));
J'espère que ça te sera utile.

bcalendreau
Messages : 37
Inscription : 07 oct. 2017 20:27

Re: TP9 question 1 AST_SOM_F

Message par bcalendreau » 10 janv. 2018 19:44

Oui au premier coup d'oeil.
J'ai inversé l'instruction dans la boucle et l'incrémentation de i ! (ce qui semble pourtant plus logique, mais c'est comme ça !)
Après j'ai déjà tout validé mais c'est plus propre sans bidouille !

Merci

Répondre

Qui est en ligne ?

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