Vous êtes sur la page 1sur 12

Dpartements Gnie Civil & Mcanique nergtique

Programmation modulaire (multi-fichiers)


1. 2. 3. 4. Gnralits Mise en uvre Macros Variables de porte fichier

Gnralits
Un logiciel doit tre conu comme la runion de plusieurs modules. Chaque module regroupe des fonctions de mme nature (Graphisme, Algorithmes principaux, interface utilisateur, ) Un seul des modules contient la fonction main ()

Prog. Struct. C

IX - Prog. Modulaire

Les avantages
En sparant les fonctionnalits du projet en units le moins possible interdpendantes, on simplifie la mise au point du logiciel qui se fait module par module. La compilation est beaucoup plus rapide, car seuls les modules qui ont t modifis sont compils. Certains modules, sils sont bien conus peuvent tre r-utiliss dans dautres projets.
Prog. Struct. C IX - Prog. Modulaire 3

La mise en uvre
Programme monofichier Programme modulaire

En-tte

Fichiers .h

Module

Fonction main Fichier .c Dfinition de vos fonctions


Sans fonction main()

Fichiers .c

Prog. Struct. C

IX - Prog. Modulaire

Le contenu de la zone entte


1) Directives de prprocesseur : #xxxx
Ex : #include <stdio.h> ou #define PI 3.14159

2) Dclaration des types utilisateurs : struct 3) Dfinition des variables de porte fichier Ex : static int panelhandle; 4) Dclaration des variables dfinies de manire externe : extern 5) Dclaration des prototypes des fonctions Ex : void ma_fonction(void); 1+2+3+4+5 Mon_Fichier.h
Prog. Struct. C IX - Prog. Modulaire 5

La directive #include
Syntaxe : #include <stdio.h> #include "[nomchemin\\]nomfichier.h Action : Avant la compilation, le pr-processeur met en lieu et place de la directive le fichier concern.

Prog. Struct. C

IX - Prog. Modulaire

La directive #define
Syntaxe : #define BUFSIZE 512 Action : Opre une substitution de texte sur le code source ralise par le prprocesseur. Partout o la chane de caractres BUFSIZE est rencontre, elle est remplace par 512 La compilation se fera sur le code transform!
Prog. Struct. C IX - Prog. Modulaire 7

Les Macros
Macro #define o la substitution de texte est paramtre Exemple : #define MAX(a,b) (((a)>(b))?(a):(b)) MAX(expr1,expr2) sera utilise comme (((expr1)>(expr2))?(expr1):(expr2)) Les parenthses servent fixer les priorits.

Prog. Struct. C

IX - Prog. Modulaire

Avantages des macros


Remplacer des fonctions courtes. Le temps dexcution du programme puisquil ny a pas dappel de fonction. Mais le code excutable est plus long. Les compilateurs modernes utilisent les macros pour gnrer automatiquement du code rptitif la place du programmeur.

Prog. Struct. C

IX - Prog. Modulaire

Les variables globales en programmation modulaire


Une variable globale a la porte et la dure de vie du programme. Pour tre reconnue par le compilateur dans dautres modules du programme, elle doit y tre dclare mais sans rservation de mmoire et prcde de extern dans un fichier .h inclure dans les fichiers .c, o cette variable est utilise.

Prog. Struct. C

IX - Prog. Modulaire

10

Les variables globales (suite)


Si, on veut restreindre la porte de cette variable au seul module o elle a t dfinie, on fait prcder sa dfinition de static. Dans dautres modules, une autre variable de porte fichier de mme identificateur pourra tre dfinie sans conflit de dclaration.

Prog. Struct. C

IX - Prog. Modulaire

11

Exemple

modulaire.prj

Prog. Struct. C

IX - Prog. Modulaire

12

Vous aimerez peut-être aussi