© Éditions Eyrolles
97
chapitre n° 6
La programmation modulaire et les fonctions
Enfin, l’instruction return val précise la valeur que fournira la fonction à la fin de son travail.
En définitive, on peut dire que fexple est une fonction telle que fexple (x, b, c) fournisse la valeur de l’expression x 2 + bx + c. Notez bien l’aspect arbitraire du nom des
arguments ; on obtiendrait la même définition de fonction avec, par exemple :
float fexple (float z, int coef, int n)
{
float val ; /* déclaration d’une variable "locale" à fexple */
val = z * z + coef * z + n ;
return val ;
}
Examinons maintenant la fonction main. Vous constatez qu’on y trouve une déclaration :
float fexple (float, int, int) ;
Elle sert à prévenir le compilateur que fexple est une fonction et elle lui précise le type de
ses arguments ainsi que celui de sa valeur de retour. Nous reviendrons plus loin en détail sur le
rôle d’une telle déclaration.
Quant à l’utilisation de notre fonction fexple au sein de la fonction main, elle est classique
et comparable à celle d’une fonction prédéfinie telle que scanf ou sqrt. Ici, nous nous sommes contenté d’appeler notre fonction à deux reprises avec des arguments différents.
3 Quelques règles
3.1 Arguments muets et arguments effectifs
Les noms des arguments figurant dans l’en-tête de la fonction se nomment des « arguments
muets », ou encore « arguments formels » ou « paramètres formels » (de l’anglais : formal
parameter). Leur rôle est de permettre, au sein du corps de la fonction, de décrire ce qu’elle
doit faire.
Les arguments fournis lors de l’utilisation (l’appel) de la fonction se nomment des « arguments
effectifs » (ou encore « paramètres effectifs »). Comme le laisse deviner l’exemple précédent,
on peut utiliser n’importe quelle expression comme argument effectif ; au bout du compte,
c’est la valeur de cette expression qui sera transmise à la fonction lors de son appel. Notez
qu’une telle « liberté » n’aurait aucun sens dans le cas des paramètres formels : il serait impossible d’écrire un en-tête de fexple sous la forme float fexple (float a+b, ...) pas
plus qu’en mathématiques vous ne définiriez une fonction f par f (x + y) = 5 !
Delannoy Livre.book Page 97 Mercredi, 6. mai 2009 4:26 16
97
chapitre n° 6
La programmation modulaire et les fonctions
Enfin, l’instruction return val précise la valeur que fournira la fonction à la fin de son travail.
En définitive, on peut dire que fexple est une fonction telle que fexple (x, b, c) fournisse la valeur de l’expression x 2 + bx + c. Notez bien l’aspect arbitraire du nom des
arguments ; on obtiendrait la même définition de fonction avec, par exemple :
float fexple (float z, int coef, int n)
{
float val ; /* déclaration d’une variable "locale" à fexple */
val = z * z + coef * z + n ;
return val ;
}
Examinons maintenant la fonction main. Vous constatez qu’on y trouve une déclaration :
float fexple (float, int, int) ;
Elle sert à prévenir le compilateur que fexple est une fonction et elle lui précise le type de
ses arguments ainsi que celui de sa valeur de retour. Nous reviendrons plus loin en détail sur le
rôle d’une telle déclaration.
Quant à l’utilisation de notre fonction fexple au sein de la fonction main, elle est classique
et comparable à celle d’une fonction prédéfinie telle que scanf ou sqrt. Ici, nous nous sommes contenté d’appeler notre fonction à deux reprises avec des arguments différents.
3 Quelques règles
3.1 Arguments muets et arguments effectifs
Les noms des arguments figurant dans l’en-tête de la fonction se nomment des « arguments
muets », ou encore « arguments formels » ou « paramètres formels » (de l’anglais : formal
parameter). Leur rôle est de permettre, au sein du corps de la fonction, de décrire ce qu’elle
doit faire.
Les arguments fournis lors de l’utilisation (l’appel) de la fonction se nomment des « arguments
effectifs » (ou encore « paramètres effectifs »). Comme le laisse deviner l’exemple précédent,
on peut utiliser n’importe quelle expression comme argument effectif ; au bout du compte,
c’est la valeur de cette expression qui sera transmise à la fonction lors de son appel. Notez
qu’une telle « liberté » n’aurait aucun sens dans le cas des paramètres formels : il serait impossible d’écrire un en-tête de fexple sous la forme float fexple (float a+b, ...) pas
plus qu’en mathématiques vous ne définiriez une fonction f par f (x + y) = 5 !
Delannoy Livre.book Page 97 Mercredi, 6. mai 2009 4:26 16
