© Éditions Eyrolles
95
chapitre n° 6
La programmation modulaire et les fonctions
Par ailleurs, nous verrons qu’en C plusieurs fonctions peuvent partager des informations,
autrement que par passage d’arguments. Nous retrouverons la notion classique de « variables
globales » (en Basic, toutes les variables sont globales, de sorte qu’on ne le dit pas - en Fortran, ces variables globales sont rangées dans des « COMMON »).
Enfin, l’un des atouts du langage C réside dans la possibilité de compilation séparée. Celleci permet de découper le programme source en plusieurs parties, chacune de ces parties pouvant comporter une ou plusieurs fonctions. Certains auteurs emploient parfois le mot
« module » pour désigner chacune de ces parties (stockées dans un fichier) ; dans ce cas, ce
terme de module devient synonyme de fichier source. Cela facilite considérablement le développement et la mise au point de grosses applications. Cette possibilité crée naturellement
quelques contraintes supplémentaires, notamment au niveau des variables globales que l’on
souhaite partager entre différentes parties du programme source (c’est d’ailleurs ce qui justifiera
l’existence de la déclaration extern).
Pour garder une certaine progressivité dans notre exposé, nous supposerons tout d’abord que
nous avons affaire à un programme source d’un seul tenant (ce qui ne nécessite donc pas de
compilation séparée). Nous présenterons ainsi la structure générale d’une fonction, les notions
d’arguments, de variables globales et locales. Ce n’est qu’alors que nous introduirons les
possibilités de compilation séparée en montrant quelles sont ses incidences sur les points
précédents ; cela nous amènera à parler des différentes « classes d’allocation » des variables.
2 Exemple de définition et d’utilisation d’une fonction en C
Nous vous proposons d’examiner tout d’abord un exemple simple de fonction correspondant à
l’idée usuelle que l’on se fait d’une fonction, c’est-à-dire recevant des arguments et fournissant
une valeur.
Exemple de définition et d’utilisation d’une fonction
#include
/***** le programme principal (fonction main) *****/
main()
{
float fexple (float, int, int) ; /* déclaration de fonction fexple */
float x = 1.5 ;
float y, z ;
int n = 3, p = 5, q = 10 ;
/* appel de fexple avec les arguments x, n et p */
y = fexple (x, n, p) ;
printf ("valeur de y : %e\n", y) ;
Delannoy Livre.book Page 95 Mercredi, 6. mai 2009 4:26 16
Précédent

- 108/281

Suivant