public class Cours2 {
/*
* Déclaration (définition n'est pas un terme officiel de Java) d'une variable
* statique accessible via le symbole PI (variable de type double et
* initialisée à la valeur 3.14).
* Durée de vie de la variable : (simplification) durée de vie du programme.
* Visibilité de la variable : tout le programme.
* Zone de stockage : la zone statique.
* Note : le nombre de ces variables peut-être déterminé à la compilation.
*/
public static double PI = 3.14;
/*
* Déclaration d'une fonction des entiers vers l'ensemble vide. La fonction
* est nommée symboliquement affiche.
* Visibilité du symbole : tout le programme
* La fonction utilise un paramètre de symbole z typé int. Cette variable
* correspond à une entrée, elle est créée à chaque appel de la fonction et
* est initialisée à la valeur correspondante de l'appel.
* Durée de vie de z : durée de l'appel
* Visibilité de z : la fonction elle-même pas plus.
* Zone de stockage : la pile
*/
public static void affiche(int z) {
/* Ces isntructions sont des instructions d'appels à des fonctions
* définies par ailleurs et qui sont capables d'afficher à l'écran
* la représentation de valeurs de différents types. Pour le
* premier appel c'est une String qui est affichée, dans le second cas
* c'est un double.
*/
System.out.println("Je suis dans affiche z="+z);
System.out.println(PI);
}
/*
* Déclaration d'une fonction des entiers vers les entiers. La fonction
* utilise un paramètre de symbole i type int, mais aussi une variable locale
* de symbole m type int. Techniquement, la variable i est bien une variable
* locale mais elle est différente de l'autre (m) par son mode
* d'initialisation. Le paramètre est initialisé par l'appel, alors que la
* variable locale est intialisée explicitement par une instruction
* d'affectation.
* Durée de vie de i et z : durée de l'appel
* Visibilité de z : la fonction elle-même.
* Zone de stockage : la pile.
*/
public static int ajouteUn(int i) {
int m = i+1;
/* Ceci est une instrution d'appel. Cette instruction
* a pour effet de transmettre à la fonction et pour l'initialisation de
* son paramètre correspondant la VALEUR de la variable m à l'instant
* de l'exécution de cette instruction.
*/
affiche(m);
/* Cette instruction à pour effet de terminer l'appel courant et de
* renvoyer une valeur à l'appelant. Ici c'est la VALEUR de m qui
* est transmise à l'appelant.
*/
return m;
}
/*
* Déclaration d'une fonction des références de tableaux d'entiers
* unidimensionnels vers l'ensemble vide. La fonction possède un paramètre
* de symbole args typé String[], mais aussi deux variables locales i et j
* toutes deux typées int.
* Durée de vie de i et j : durée de l'appel
* Visibilité de i et j : la fonction elle-même
* Zone de stockage : la pile.
*/
public static void main(String []args) {
int i = 4;
/* ajouteUn(i) est une instruction d'appel de fonction. Cette instruction
* a pour effet de transmettre à la fonction et pour l'initialisation de
* son paramètre correspondant la VALEUR de la variable i à l'instant
* de l'exécution de cette instruction, soit dans cet exemple la valeur 4.
* En retour la fonction renvoie une valeur (ici 5) qui est alors
* utilisée pour terminer l'initialisation de la variable locale j.
*/
int j = ajouteUn(i);
System.out.println(i+"+1="+j);
/* ajouteUn(123) est une instruction d'appel de fonction. On transmet
* la valeur 123 qui est utilisée par la fonction pour initialiser son
* paramètre correespondant. Après son calcul la fonction a renvoyé une
* valeur qui est alors employée par la fonction println() pour
* l'afficher à l'écran.
*/
System.out.println(ajouteUn(123));
System.out.println(PI);
}
}