Cours 7 : Fonctions
Déclaration
Insersion d'une fonction dans le squelette... c'est l'ajout d'une recette dans le livre.
Profile de la fonction
Il y a des fonctions qui calculent quelque chose...
public static type_resultat NomDeLaFonction(type_arg1 NomArg1, type_arg2 NomArg2, ...) {...}... et celles qui se contentent de modifier l'état de l'ordinateur.
public static void NomDeLaFonction(type_arg1 NomArg1, type_arg2 NomArg2, ...) {...}
Ergonomie
Pour concevoir une fonction, il faut d'abord écrire le code qui l'utilise.
double c = power(3.8,5); affiche(c);Ce code exige que les fonctions power et affiche aient le profile suivant.
public static double power(double arg, int exposant) {... return res;} public static void affiche(double arg) {...}Ensuite, on peut réfléchir à ce que calculent les fonctions dont on a défini le profile.
public static double power(double arg, int exposant) { double res; // pris dans la pile int i; res = 1; for(i = 0; i < exposant; i = i + 1) res = res * arg; return res; } public static void affiche(double arg) { System.out.print("Le résultat est "); System.out.println(arg); }
Le passage des arguments
Les arguments sont copiés dans la pile... Attention au sens que cela a pour les pointeurs !
public static C toto(A a, B b) { C c; ... return c; } public static void main(String[] args) { A a; B b; C c; ... c = toto(a,b); }
Exemples
Listes d'entiers doublement chaînées
On définit une liste d'entiers par le type à champs nommés suivant dans le fichier List.java.
class List { public int value; public List previous; public List next; };Le fichier Main.java illustre l'utilisation de cette liste.