public class ProgAppelFonctionParamTraduit {
public static int []memoire = new int[2];
// 0 : sert à stocker l'adresse à laquelle il faudra
// revenir quand l'appel à f() sera terminé
// 1: sert à stocker la valeur du paramètre que la fonction f
// pourra utiliser
public static int insC;
public static void main(String []a) {
insC = 1;
while (true) {
switch(insC) {
// traduction du main du programme original
case 1:
System.out.println("debut");
insC++; break;
case 2:
memoire[0] = insC+1; // stockage point de retour
memoire[1] = 10; // valeur du parametre
insC = 7; break; // saut vers 1ere instruction de f()
case 3:
System.out.println("entre les deux appels");
insC++; break;
case 4:
memoire[0] = insC+1; // stockage point de retour
memoire[1] = 666; // valeur du parametre
insC = 7; break; // saut vers 1ere ins de f();
case 5:
System.out.println("a la fin");
insC++; break;
case 6:
System.exit(0);
// traduction de la fonction f
case 7:
System.out.println("je suis dans f() et la valeur du param est "+memoire[1]);
insC = memoire[0]; break; // retour point d'appel
}
}
}
}