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 } } } }