Structure d'un programme

Nous ne considérerons pour débuter que le cas de programmes formés d'une seule unité de compilation. Un programme C est une suite de déclarations de variables et de définitions de fonctions dans un ordre quelconque. Les variables sont des variables dont la durée de vie est égale à celle du programme, et qui sont accessibles par toutes les fonctions. Ces variables sont dites variables globales, par opposition aux variables déclarées à l'intérieur des fonctions qui sont dites locales.

Bien que ce ne soit pas obligatoire, il est généralement considéré comme étant un bon style de programmation de regrouper toutes les déclarations de variables en tête du programme. La structure d'un programme devient alors la suivante :

programme :
$\Rightarrow$ liste-de-déclarations$_{option}$
liste-de-définitions-de-fonctions

Il peut n'y avoir aucune déclaration de variable, mais il doit y avoir au moins la définition d'une procédure dont le nom soit main, car pour lancer un programme C, le système appelle la procédure de nom main. Exemple :

int i,j;        /* i,j,a,b,c   sont des variables globales    */
double a,b,c;      
                   
void p1(int k)  /* début de la définition de la procédure p1  */
                /* p1 a un seul paramètre entier : k          */
{                  
int s,t;        /* variables locales à p1                     */
                   
...             /* instructions de p1 qui peuvent accéder à   */
...             /* k,i,j,a,b,c,s et t                         */
}               /* fin de la définition de p1                 */

/* début de la définition de la fonction f1   */
int f1(double x,double y)
               /* f1 a deux paramètres flottants: x et y     */
{                 
double u,v;    /* variables locales à f1                     */
                  
...            /* instructions de f1 qui peuvent accéder à   */
...            /* x,y,i,j,a,b,c,u et v                       */
}              /* fin de la définition de f1                 */
                  
int main(void) /* début du main, il n'a pas de paramètre     */
{                 
...            /* instructions qui appellerons p1 et f1      */
}              /* fin de la définition de main               */

Matthieu Moy 2017-02-08