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
TP6 Exo3
Modérateur : douinj
Re: TP6 Exo3
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
Avec le visiteur Jasmin, paquetage postliminaire (moins lisible ;-)
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
Re: TP6 Exo3
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 :(
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 :(