TP6 Exo3

Programmation Avancée

Modérateur : douinj

guill_c98
Messages : 2
Inscription : 01 oct. 2020 22:42

TP6 Exo3

Message par guill_c98 » 20 nov. 2020 21:20

Bonjour,

Help Me ! Please ...
Il ne me reste que 2 erreurs et je ne comprends pas leur signification.

1)test_CompilationDeMult(question3)
2)test_CompilationExecutionDeMult_7_85(question3)

Pouvez-vous m'aider, avoir un indice ?

Cyril

douinj
Messages : 204
Inscription : 18 mars 2009 15:46

Re: TP6 Exo3

Message par douinj » 20 nov. 2020 22:31

Bonjour, vos sources java engendrées par votre visiteur ne semblent pas se compiler, essayez avec votre compilateur java en local, avant de soumettre à JNEWS qui utilise en local le compilateur java ...

Ci-dessous, le test, la multiplication dite russe https://fr.wikipedia.org/wiki/Technique ... dite_russe de deux nombres

Code : Tout sélectionner

  private static int mult(int a, int b){
        int z = 0 ;
        while (b > 0){
            if ((b -(b / 2)*2) == 1){
                z = z + a  ; b = b-1;
            }else{
                a = 2 * a ; b = b / 2;
            }
        }
        return z;
    }


    public void test_CompilationExecutionDeMult_7_85() throws Exception{
        Contexte m = new Memoire();
        Variable a = new Variable(m,"a",7);
        Variable b = new Variable(m,"b",85);
        Variable z = new Variable(m,"z",0);

        Instruction inst = 
            new Sequence(
                new TantQue(
                    new Sup(b,new Constante(0)),
                    new Selection(
                        new Egal(
                            new Soustraction(b,new Multiplication(new Division(b,new Constante(2)),new Constante(2))),new Constante(1)),
                        new Sequence(
                            new Affectation(z,new Addition(z,a)),
                            new Affectation(b,new Soustraction(b,new Constante(1))) 
                        ),
                        new Sequence(
                            new Affectation(a,new Multiplication(a,new Constante(2))),
                            new Affectation(b,new Division(b,new Constante(2)))
                        )
                    )
                ),
                new Assertion(new Egal(z,new Constante(mult(7,85))))
            );

        VisiteurExpression<String> ves = new VisiteurInfixe(m);
        VisiteurExpressionBooleenne<String> vbs = new VisiteurBoolToJava(ves);
        VisiteurInstruction<String> vs = new VisiteurInstToJava(ves,vbs,4);

        ClasseJava cj = new ClasseJava("X_Mult", inst, vs);
        //System.out.println(cj.sourceComplet());
        try{
            cj.compilerEtExecuter();
        }catch(Exception e){
            fail(m + inst.accepter(new VisiteurInstToString(ves,vbs))  + e.getMessage() + " ??? ");
        }
    }

Avec le visiteur Jasmin, paquetage postliminaire (moins lisible ;-)

Code : Tout sélectionner

	; whileL et ses visiteurs en jasmin ...
.class public MultRusse
.super java/lang/Object
.method public static main([Ljava/lang/String;)V
.limit stack 11
.limit locals 4
	ldc 0
	istore 1
	ldc 7
	istore 2
	ldc 85
	istore 3
#_18:
	iload 2
	iconst_0
	if_icmple #_27
	iconst_1
	goto #_29
#_27:
	iconst_0
#_29:
	ifeq #_80
	iload 2
	iload 2
	iconst_2
	idiv
	iconst_2
	imul
	isub
	iconst_1
	if_icmpne #_47
	iconst_1
	goto #_49
#_47:
	iconst_0
#_49:
	ifeq #_65
	iload 1
	iload 3
	iadd
	istore 1
	iload 2
	iconst_1
	isub
	istore 2
#_65:
	iload 3
	iconst_2
	imul
	istore 3
	iload 2
	iconst_2
	idiv
	istore 2
	goto #_18
#_80:
	iload 1
	sipush 595
	if_icmpne #_90
	iconst_1
	goto #_92
#_90:
	iconst_0
#_92:
	ifne #_101
	new java/lang/AssertionError
	dup
	invokespecial java/lang/AssertionError/<init>()V
	athrow
#_101:
	iload 1
	sipush 595
	if_icmpne #_111
	iconst_1
	goto #_113
#_111:
	iconst_0
#_113:
	ifne #_122
	new java/lang/AssertionError
	dup
	invokespecial java/lang/AssertionError/<init>()V
	athrow
#_122:
	getstatic java/lang/System/out Ljava/io/PrintStream;
	iload 1
	invokevirtual java/io/PrintStream/println(I)V
	return
.end method

guill_c98
Messages : 2
Inscription : 01 oct. 2020 22:42

Re: TP6 Exo3

Message par guill_c98 » 21 nov. 2020 10:39

Bonjour,

Merci pour votre réponse,
J'ai compilé toutes mes classes dans BlueJ et relancé le JNEWS => même résultat :(
Toujours les 2 mêmes erreurs ...

Je l'indiquerai dans mon CR du TP6, c'est la première fois que je finis un TP avec 2 errors :(

Répondre