Programmer en langage C
96
© Éditions Eyrolles
Nous y trouvons tout d’abord, de façon désormais classique, un programme principal formé
d’un bloc. Mais, cette fois, à sa suite, apparaît la définition d’une fonction. Celle-ci possède
une structure voisine de la fonction main, à savoir un en-tête et un corps délimité par des
accolades ({ et }). Mais l’en-tête est plus élaboré que celui de la fonction main puisque, outre
le nom de la fonction (fexple), on y trouve une liste d’arguments (nom + type), ainsi que le
type de la valeur qui sera fournie par la fonction (on la nomme indifféremment « résultat »,
« valeur de la fonction », « valeur de retour »...) :
float
fexple
(float x,
int b,
int c)
|
|
|
|
|
type de la
nom de la
premier
deuxième
troisième
"valeur
fonction
argument
argument
argument
de retour"
(type float)
(type int)
(type int)
Les noms des arguments n’ont d’importance qu’au sein du corps de la fonction. Ils servent à
décrire le travail que devra effectuer la fonction quand on l’appellera en lui fournissant trois
valeurs.
Si on s’intéresse au corps de la fonction, on y rencontre tout d’abord une déclaration :
float val ;
Celle-ci précise que, pour effectuer son travail, notre fonction a besoin d’une variable de type
float nommée val. On dit que val est une variable locale à la fonction fexple, de même
que les variables telles que n, p, y... sont des variables locales à la fonction main (mais
comme jusqu’ici nous avions affaire à un programme constitué d’une seule fonction, cette
distinction n’était pas utile). Un peu plus loin, nous examinerons plus en détail cette notion de
variable locale et celle de portée qui s’y attache.
L’instruction suivante de notre fonction fexple est une affectation classique (faisant toutefois
intervenir les valeurs des arguments x, n et p).
/* appel de fexple avec les arguments x+0.5, q et n-1 */
z = fexple (x+0.5, q, n-1) ;
printf ("valeur de z : %e\n", z) ;
}
/*************** la fonction fexple ****************/
float fexple (float x, int b, int c)
{ float val ;
/* déclaration d’une variable "locale" à fexple
val = x * x + b * x + c ;
return val ;
}
Exemple de définition et d’utilisation d’une fonction (suite)
Delannoy Livre.book Page 96 Mercredi, 6. mai 2009 4:26 16
96
© Éditions Eyrolles
Nous y trouvons tout d’abord, de façon désormais classique, un programme principal formé
d’un bloc. Mais, cette fois, à sa suite, apparaît la définition d’une fonction. Celle-ci possède
une structure voisine de la fonction main, à savoir un en-tête et un corps délimité par des
accolades ({ et }). Mais l’en-tête est plus élaboré que celui de la fonction main puisque, outre
le nom de la fonction (fexple), on y trouve une liste d’arguments (nom + type), ainsi que le
type de la valeur qui sera fournie par la fonction (on la nomme indifféremment « résultat »,
« valeur de la fonction », « valeur de retour »...) :
float
fexple
(float x,
int b,
int c)
|
|
|
|
|
type de la
nom de la
premier
deuxième
troisième
"valeur
fonction
argument
argument
argument
de retour"
(type float)
(type int)
(type int)
Les noms des arguments n’ont d’importance qu’au sein du corps de la fonction. Ils servent à
décrire le travail que devra effectuer la fonction quand on l’appellera en lui fournissant trois
valeurs.
Si on s’intéresse au corps de la fonction, on y rencontre tout d’abord une déclaration :
float val ;
Celle-ci précise que, pour effectuer son travail, notre fonction a besoin d’une variable de type
float nommée val. On dit que val est une variable locale à la fonction fexple, de même
que les variables telles que n, p, y... sont des variables locales à la fonction main (mais
comme jusqu’ici nous avions affaire à un programme constitué d’une seule fonction, cette
distinction n’était pas utile). Un peu plus loin, nous examinerons plus en détail cette notion de
variable locale et celle de portée qui s’y attache.
L’instruction suivante de notre fonction fexple est une affectation classique (faisant toutefois
intervenir les valeurs des arguments x, n et p).
/* appel de fexple avec les arguments x+0.5, q et n-1 */
z = fexple (x+0.5, q, n-1) ;
printf ("valeur de z : %e\n", z) ;
}
/*************** la fonction fexple ****************/
float fexple (float x, int b, int c)
{ float val ;
/* déclaration d’une variable "locale" à fexple
val = x * x + b * x + c ;
return val ;
}
Exemple de définition et d’utilisation d’une fonction (suite)
Delannoy Livre.book Page 96 Mercredi, 6. mai 2009 4:26 16
