Cours 8.2. L'appel des fonctions

Syntaxe

L'appel d'une fonction se fait simplement en spécifiant le nom de la fonction suivi des paramètres entre parenthèses :

x = max (4,3);

Les paramètres peuvent être :

Il est possible de mixer les paramètres tant que ces derniers respectent les types déclarés dans le prototype :

#define N 10

int max(int a, int b);

int main(void)
{
  float x,y=2,z=18;
  x = max (5,26);         // Valeurs
  x = max(y,z);           // Variables
  x = max(y,N);           // Variables et constante
  x = max (max(y,z), 10); // Fonction et valeur

  if (max(y,z) > 10) {    // Variables dans un test
    ...
  }
  ...
}

Les parenthèses

L'appel d'une fonction est toujours suivi de parenthèses afin de différencier la fonction des variables du même nom. Analysons l'exemple suivant :

int name (void) {
  int name=26;
  return name;
}

Le code ci-dessus implémente une fonction name() qui contient une variable du même nom. Lorsque name est suivi de parenthèses, il s'agit de la fonction, sinon de la variable. Sans les parenthèses, le compilateur ne peut pas différencier la variable name de la fonction name(). On ajoute toujours des parenthèses après le nom d'une fonction, y compris dans un texte ou des commentaires. Bien sûr, ce type de code est à bannir pour éviter les confusions.

Exercice

Ecrire une fonction moyenne() qui retourne la moyenne de trois nombres flottants. Tester votre fonction avec un programme principal qui demande à l'utilisateur de saisir trois notes avant d'en afficher la moyenne. La fonction moyenne() ne doit rien afficher, mais retourner le résultat du calcul au programme principal.

Entrez la première note : 12.4
Entrez la seconde note : 13.7
Entrez la troisième note : 10.2
-----------------------
La moyenne est de 12.10

Quiz

L'appel de la fonction ...

Vérifier Bravo ! Une fonction peut même s’appeler elle même, c'est ce que l'on appelle une fonction récursive. Essaie encore ...

Lors de l'appel d'une fonction, les paramètres peuvent être ...

Vérifier Bravo ! Les paramètres peuvent être une variable, une constante, un calcul, une valeur ou une fonction. Essaie encore ...

Considérons la fonction suivante, quels appels sont corrects ?

int max (int a, int b);
Vérifier Bravo ! La fonction attend deux paramètres séparés par une virgule. Essaie encore ...

Considérons une fonction max() qui retourne le plus grand de deux entiers. Qu'affiche le code suivant ?

int x;
x = max( 10, max (5,12));
printf ("%d", x );
Vérifier Bravo ! Le premier appel retourne 12 (plus grand que 5) et le second retourne aussi 12 (plus grand que 10). Essaie encore ...

Voir aussi


Dernière mise à jour : 09/11/2023