next up previous contents index
suivant: 1.3 Valeurs et expressions monter: 1. Expressions et fonctions précédent: 1.1 Programmer, compiler, exécuter   Table des matières   Index


1.2 Fonctions

Quand une expression a un intérêt en soi et est susceptible d'être utilisée à plusieurs occasions, il est préférable d'en faire une fonction. Cette notion fondamentale a ainsi été le premier dispositif de réutilisation des programmes. La définition d'une fonction exprime la dépendance d'une expression par rapport à des paramètres.

Le paquet exemples contient maintenant deux classes, Sommes et SommesTest. La classe exemples.Sommes comporte deux fonctions, sommerEntiers et sommer : la première invoque la seconde et elle est invoquée plusieurs fois par la fonction principale de la classe exemples.SommesTest:

package exemples;

class Sommes {

  // somme des entiers de min à max
  static int sommerEntiers(int min, int max) {
    return sommer(max) - sommer(min-1);
  }

  // somme des entiers de 1 à m
  static int sommer(int m) {
    return m*(m+1)/2;
  }
}

class SommesTest {

  public static void main(String[] args) {
    System.out.println("Somme de 1 à 10 = " + 
                       Sommes.sommerEntiers(1, 10));
    System.out.println("Somme de 1 à 100 = " + 
                       Sommes.sommerEntiers(1, 100));
    System.out.println("Somme de 1 à 1000 = " + 
                       Sommes.sommerEntiers(1, 1000));
  }
}

L'effet de ce programme est d'afficher à l'écran :

Somme de 1 à 10 = 55
Somme de 1 à 100 = 5050
Somme de 1 à 1000 = 500500

Le texte compris entre « // » et la fin de la ligne est un commentaire : inutilisables par la Machine Virtuelle Java, les commentaires facilitent la compréhension des programmes.

On définit une fonction par son en-tête et son corps. Ici, les en-têtes sont :

Le mot-clé static est suivi du type de retour de la fonction (int, void), puis du nom de la fonction (sommerEntiers, sommer, main), puis de la déclaration des paramètres entre parenthèses : (int min, int max), (int m) et (String[] args). Chaque paramètre est déclaré par son nom (min, max, m, args), précédé de son type (respectivement, int, int, int, String[]).

Le corps de la fonction suit son en-tête et est placé entre accolades. Il comporte des définitions de variables locales et des instructions. Sauf quand le type de retour est void, le corps d'une fonction contient au minimum une instruction de la forme « return expression; » qui permet de communiquer son résultat. Quand le type du résultat est void, son corps peut contenir l'instruction « return; », mais ce n'est pas obligatoire, comme le montre les exemples précédents de fonction principale. Une fonction de type void est parfois appelée une procédure.

On peut définir d'autres fonctions analogues dans la classe Sommes :

package exemples;

class Sommes {

  // ...

  static int sommerCarrés(int m) {
    return n*(n+1)*(2*n+1)/6;
  }

  static int sommerCubes(int m) {
    return n*n*(n+1)*(n+1)/4;
  }
}

Les fonctions mathématiques les plus courantes sont disponibles dans la bibliothèque de Java : Math.cos, Math.sin, Math.log, Math.exp, etc, définies dans la classe Math, elle-même membre du paquet java.lang.


1.2.0.0.1 Portée

Les programmes sont peuplés de noms servant à désigner diverses entités : paquets, types, variables, fonctions, etc. La portée d'une déclaration d'un nom est la région du programme dans laquelle ce nom est connu et désigne la même entité :

C'est pourquoi deux paquets distincts peuvent définir des classes de même nom ; deux classes distinctes peuvent définir des fonctions de même nom ; deux fonctions distinctes peuvent déclarer des paramètres de même nom.

La définition de la portée d'une déclaration n'interdit cependant pas d'accéder à l'entité désignée par le nom hors de la portée. Ainsi, on peut accéder à la fonction sommerCarrés définie dans la classe Sommes en l'invoquant sous la forme Sommes.sommerCarrés(10) à partir d'une autre classe.


next up previous contents index
suivant: 1.3 Valeurs et expressions monter: 1. Expressions et fonctions précédent: 1.1 Programmer, compiler, exécuter   Table des matières   Index
Rene' LALEMENT 2001-11-07