[Précédent]
[Index] | [Corrigé] | [Version imprimable]
[Prochain]

5.1
  Reprise du calcul des moyennes - Enoncé
Niveau 0
 
 
But:
  Le but de cet exercice est d'illustrer la modularisation de programmes par l'utilisation des méthodes auxiliaires.    
Thème:
  Modularisation    
Fichiers:
  -    

Le but ici est de résoudre un petit exercice illustrant l'utilisation des méthodes auxiliaires.

Commencez comme d'habitude par ouvrir un nouveau fichier, par exemple ici Moyenne.java dans votre éditeur favori (par exemple XEmacs), puis préparez la "coquille vide" de base de votre programme :

class Moyenne {

    public static void main(String[] args) {
    }
}

-->

Écrivez maintenant dans la méthode main, les instructions nécessaires pour demander deux notes à l'utilisateur et afficher leur moyenne.

Essayez de le faire par vous même sans regarder la solution ci-dessous

Solution :

La façon que nous avions jusqu'ici de réaliser un tel programme ressemble à peu près à ceci :

private static Scanner scanner = new Scanner(System.in);

public static void main(String[] args) {
    double note1, note2;
    System.out.println("Entrez vos deux notes :");
    note1 = scanner.nextDouble();
    note2 = scanner.nextDouble();
        double moyenne = note1 + note2;
        moyenne /= 2;
    System.out.println("Votre moyenne est : " + moyenne);
}

Vous avez peut-être utilisé des int au lieu des double ici. C'est très bien : cela va aussi.
Cela signifie juste que pour vous une note est un nombre entier, alors que pour moi elle peut être fractionnaire

Continuons l'exercice pour maintenant introduire des méthodes auxiliaires.

Imaginons que ce programme rudimentaire soit amené à grandir et que le calcul de la moyenne soit nécessaire à plusieurs endroits différents du programme.

Il peut alors être judicieux de sortir le calcul de la moyenne du corps de la méthode main, de manière à ce qu'il puisse être réutilisé par d'autres parties du programme.

Nous voulons donc définir une méthode auxiliaire qui prenne deux doubles comme paramètres, et retourne le résultat sous forme de double.

Quel est alors l'entête de cette méthode  ?
(sans regarder ;-))

Solution

L'entête de cette méthode est le suivant :

    static double moyenne(double nombre1, double nombre2) {
    }

Le corps de la fonction calcule la moyenne des paramètres, et retourne le résultat du calcul. Bien que les deux solutions ci-dessous soit équivalentes, nous préférerons la deuxième qui est plus courte et élégante :

    // solution 1
    static double moyenne(double nombre1, double nombre2) {
        // declaration et initialisation d'une variable
        double moyenne = nombre1 + nombre2;
        moyenne /=2;

        // la méthode renvoie la valeur de la variable moyenne
        return moyenne;
    }

    // solution 2
    static double moyenne(double nombre1, double nombre2) {
        // la fonction renvoie directement la valeur
        // il n'est pas nécessaire d'utiliser une variable intermédiaire
        return (nombre1 + nombre2) / 2;
    }

Il nous reste plus maintenant qu'à assembler les morceaux, c'est-à-dire faire appel à la fonction dans la méthode principale main.

Cela se fait simplement en mettant le nom de la fonction à appeler avec les paramètres voulus à l'endroit où l'on veut utiliser la valeur qu'elle retourne. Par exemple ici :

        System.out.println("Votre moyenne est : " + moyenne(note1, note2));

Notez que la définition de notre méthode auxilaire peut se trouver n'importe où (avant ou après la méthode ou les méthodes l'utilisant).

On arrive donc au résultat :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Scanner;

class Moyenne {

    private static Scanner scanner = new Scanner(System.in);

    public static void main(String[] args) {
        double note1, note2;
        System.out.println("Entrez vos deux notes :");
        note1 = scanner.nextDouble();
        note2 = scanner.nextDouble();

        // appel
        System.out.println("Votre moyenne est : " + moyenne(note1, note2));
    }

    // définition
    static double moyenne(double nombre1, double nombre2) {
        return (nombre1 + nombre2) / 2;
    }
}

 


[Précédent]
[Index] | [Corrigé] | [Version imprimable]
[Prochain]