public class ProgAppelFonctionTraduit { public static int []memoire = new int[1]; // 0 : sert à stocker l'adresse à laquelle il faudra // revenir quand l'appel à f() sera terminé 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 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 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()"); insC = memoire[0]; break; // retour point d'appel } } } }