C-2-

Aspect général d’un programme
Structure d’un programme C

Un programme C se présente de la façon suivante

[directives au préprocesseur]
[déclarations de variables externes]
[fonctions]
int main() {
    déclarations de variables internes
    instructions
}
Fonctions

Le langage reconnaît uniquement la structure de fonction: un programme écrit en C est un ensemble de fonctions dont chacune peut s’appeler elle-même et appeler les autres fonctions. Il existe des fonctions dites « précompilées » qui peuvent être incluses dans un programme, ces fonctions sont contenues dans des fichiers spéciaux appelés library files (extension *.lib). Pour accéder à ces fonctions une « directives au préprocesseur » doit être signalée au compilateur lui indiquant d’inclure les déclarations correspondantes à ces fonctions. Cette directive qui doit être écrite au tout début du programme a pour syntaxe #include<fichier.h>

Programme principal

Une fonction particulière, dont la présence dans le programme est obligatoire, est la fonction main. Le programme commencera toujours sont exécution au début de cette fonction.

  • La fonction principale main peut avoir des paramètres formels.
  • La fonction main retourne toujours une valeur de type entier.
  • L’usage veut qu’on retourne 0 si le programme s’est déroulé correctement.
  • Les fonctions peuvent être placées indifféremment avant ou après la fonction principale.

Un exemple de programme principal:

#include <stdio.h>
int main(void) { 
    printf("Bonjour, ceci est mon premier programme en langage C "); 
    return 0; 
}
  • #include <stdio.h>: # suivi du mot réservé include pour signifier l’inclusion par le compilateur du module stdio.h qui comprend la définition précompilée de la primitive printf (inutile de la développer puisqu’elle fait partie parmi d’autres, de ce que l’on appelle « library ». printf est lié à la gestion des entrées et sorties (StanDard Input Output, entrées/sorties standards) et contient, entre autres, la déclaration de la fonction printf permettant d’afficher du texte formaté.
  • int main(void): Définition de la fonction principale du programme, main (principal en anglais). Il s’agit de la fonction appelée au démarrage du programme. La partie entre parenthèses spécifie les paramètres que reçoit le programme. On spécifie avec le mot clé void qui veut dire vide qu’il n’y a pas de paramètres en entrée de ce programme.
  • int: dans la partie à gauche du nom de la fonction main spécifie le type renvoyé par la fonction : la fonction main est définie par la norme C pour renvoyer au système d’exploitation une valeur entière, de type int pour integer en anglais, entier en français.
  • {: La première accolade { marque le début de la définition de la fonction main.
  • printf: l’instruction « printf » permet l’appel de la fonction printf (print formatted, affichage formaté) qui affiche le texte « Bonjour, ceci est mon premier programme en langage C »
  • ; Un point virgule marque obligatoirement la fin de l’instruction.
  • return: La fonction main retourne une valeur de type int, ici on renvoie la valeur 0. Par convention, la valeur 0 indique au système d’exploitation que le programme s’est terminé normalement.
  • }: Fin de la définition de la fonction main.
Déclaration de variables

Le C est un langage typé. Cela signifie que toute variable, constante ou fonction doit être déclarée avec un type précis. Les types de base en C sont les caractères, les entiers, les flottants (nombres réels).

Pour pouvoir utiliser une variable, il faut la définir, c’est-à-dire lui donner un nom ou identificateur, mais surtout un type de donnée à stocker afin qu’un espace mémoire conforme au type de donnée qu’elle contient lui soit réservé. Pour déclarer une variable on spécifie le type suivie du nom de la variable, par exemple la déclaration de le variable âge de type entier s’écrit:

int age;
Types fondamentaux

Le langage C offre pour les variables trois types fondamentaux.

  • char pour caractère
  • int pour entier
  • float pour flottant

Exemples de déclaration de variables lettre, nombreEntier, nombreDecimal avec respectivement leur type caractère, entier, flottant:

char lettre;
int nombreEntier;
float nombreDecimal;
Identificateurs

Le rôle d’un identificateur est de donner un nom à une entité du programme. Plus précisément un identificateur peut désigner par son nom une variable, une fonction, un type de donnée.

Un identificateur est une suite de lettres (minuscules ou majuscules, mais non accentuées) ou de chiffres, le caractère « _ » est autorisé. La longueur d’un identificateur peut aller jusqu’à 31 caractères, Il est possible d’aller au delà mais c’est un option du compilateur..
Remarques:

  • Le premier caractère d’un identificateur ne peut pas être un chiffre.
  • Les majuscules et minuscules sont différenciées.
Affectation d’une donnée à une variable

Pour stocker une donnée dans une variable que l’on a initialisée, il faut faire une affectation, c’est-à-dire préciser la donnée qui va être stockée à l’emplacement mémoire qui a été réservé lors de l’initialisation. Pour stocker une donnée dans une variable que l’on a initialisée, on utilise l’opérateur d’affectation « = » précédé du nom de la variable et suivi de la valeur de la donnée à affecter
Nom_de_la_variable = donnée;
Pour stocker le caractère A dans la variable que l’on a appelée LettreA, il faudra écrire :

lettreA = 'A';
Expression

Une expression est un élément de syntaxe qui combine un ensemble de données , de variables, d’opérateurs, et de fonctions qui est calculée en suivant les règles du langage C pour retourner) une nouvelle valeur. Par exemple, 2+3 est une expression arithmétique qui vaut 5.
Puisqu’elle retourne une valeur, une expression peut être affectée à une variable.

Instructions

Une instruction est une expression suivie d’un point-virgule. On peut placer autant d’instructions que l’on veut sur une même ligne. Plusieurs instructions peuvent être rassemblées par des accolades ouvrante { et une accolade fermante } pour former une instruction composée ou bloc d’instructions qui est équivalent à une instruction. Par exemple:

/* une instruction */
prix = 1;
/* plusieurs instructions sur la même ligne */
age = 18; longueur = 20; printf("bonjour");
/* un bloc */
{}
/* l'instruction vide */
;
Opérateurs

Le langage C est basé sur un noyau d’opérateurs simple permettant d’écrire des expressions.
Les opérateurs ont pour but de permettre la manipulation et le traitement de ces données. Différentes données peuvent être groupées à l’aide des opérateurs pour former des expressions. Il existe plusieurs catégories d’opérateurs, dont les plus courants sont:

  • Arithmétiques
  • Affectation
  • Incrémentation & Décrémentation
  • Relationnels
Fichiers

Les fonctions peuvent être physiquement regroupées dans un même fichier mais aussi réparties dans différents fichiers. La directive au processeur #include permet d’inclure à tout endroit dans le fichier principal les fichiers secondaires

 

Pour aller plus loin: Les fonctions élémentaires