/**
 * Exemple du troisième cours, ou « Pourquoi on ne peut pas échanger
 * le contenu de variables primitives passées en paramètres à une fonction
 *
 */
public class Ex3 {
  /*
   * Une tentative de fonction d'échange...
   * Elle échange bien, mais le contenu de ses paramètres formels qui ne sont
   * reliés pas aux paramètres effectifs sauf dans la phase d'initialisation
   */
  public static void echange(int x, int y) {
    System.out.println("x="+x+" y="+y);
    int t = x;
    x = y;
    y = t;
    System.out.println("x="+x+" y="+y);
  }
  /*
   * Une fonction qui tente de modifier un paramètre... Ca ne marche pas
   * puisque les paramètres formels ne représentent pas les paramètres effectifs
   * mais ne sont que d'autres variables qui ont été initialisées avec les
   * valeurs des paramètres effectifs.
   */
  static public void f(int a) {
    System.out.println("a="+a);
    a = a+100;
    System.out.println("a="+a);
  }
  public static void main(String []args) {
    int x = 10;
    /* x ne change pas à travers l'appel */
    System.out.println("x="+x);
    f(x);
    System.out.println("x="+x);
    
    int a = 1;
    int b = 2;
    
    System.out.println("a="+a+" b="+b);
    /* un code permettant d'zchanger le contenu de deux variables (en
     * en utilisant une troisième */
    int t = a;
    a = b;
    b = t;
    /* et non, un tel échange n'est pas possible via un appel de fonction */
    System.out.println("a="+a+" b="+b);
    echange(a,b);
    System.out.println("a="+a+" b="+b);
  }
}