Nous d\u00e9gagerons ensuite quelques r\u00e8gles g\u00e9n\u00e9rales concernant l'\u00e9criture d'un programme. Enfin, nous vous montrerons comment s'organise le d\u00e9veloppement d'un programme en vous rappelant ce que sont: l'\u00e9dition, la compilation, l'\u00e9dition de liens et l'ex\u00e9cution.
#include <stdio.h>
int main(void)
{
int i ;
double x ;
i=0 ;
x=3.1415926535
printf(\u2018\u2019Bonjour tout le monde \n\u2018\u2019) ;
printf(\u2018\u2019i vaut : %d et x vaut :%f\u2019\u2019,i,x) ;
La ligne: int main(void ) se nomme un "en-t\u00eate". Elle pr\u00e9cise que ce qui sera d\u00e9crit \u00e0 sa suite est en fait le ''programme principal" (int main). Lorsque nous aborderons l'\u00e9criture des fonctions en C, nous verrons que celles-ci poss\u00e8dent \u00e9galement un tel en-t\u00eate; ainsi, en C, le programme principal appara\u00eetra en fait comme une fonction dont le nom (int main) est impos\u00e9.
Le programme (principal) proprement dit vient \u00e0 la suite de cet en-t\u00eate. Il est d\u00e9limit\u00e9 par les accolades "{" et "}". On dit que les instructions situ\u00e9es entre ces accolades forment un "bloc". Ainsi peut-on dire que la fonction main est constitu\u00e9e d'un en-t\u00eate et d'un bloc; il en ira de m\u00eame pour toute fonction C. Notez qu'un bloc (comme en Pascal) peut lui-m\u00eame contenir d'autres blocs. En revanche, nous verrons qu'une fonction ne peut jamais contenir d'autres fonctions (ce qui est le cas du Pascal).
L\u2019autre d\u00e9claration pr\u00e9cise que la variables x sont de type double c'est-\u00e0-dire qu'elles sont destin\u00e9es \u00e0 contenir des nombres flottants (approximation de nombres r\u00e9els). L\u00e0 encore, nous verrons qu'en C il existe plusieurs types flottants.
En C, comme en Pascal, les d\u00e9clarations des types des variables sont obligatoires et doivent \u00eatre regroup\u00e9es au d\u00e9but du programme (on devrait plut\u00f4t dire: au d\u00e9but de la fonction main). Il en ira de m\u00eame pour toutes les variables d\u00e9finies dans une fonction; on les appelle "variables locales" (en toute rigueur, les variables d\u00e9finies dans notre exemple sont des variables locales de la fonction main). Nous verrons \u00e9galement (dans le chapitre consacr\u00e9 aux fonctions) qu'on peut d\u00e9finir des variables en dehors de toute fonction; on parlera alors de variables globales.
L'instruction : printf ("Bonjour\n") ; appelle en fait une fonction "pr\u00e9d\u00e9finie" (fournie avec le langage, et donc que vous n'avez pas \u00e0 \u00e9crire vous-m\u00eame) nomm\u00e9e printf. Ici, cette fonction re\u00e7oit un argument qui est : "Bonjour\n"
Les guillemets servent \u00e0 d\u00e9limiter une "cha\u00eene de caract\u00e8res" (suite de caract\u00e8res). La notation \n est conventionnelle: elle repr\u00e9sente un caract\u00e8re de fin de ligne, c'est-\u00e0-dire un caract\u00e8re qui, lorsqu'il est envoy\u00e9 \u00e0 l'\u00e9cran, provoque le passage \u00e0 la ligne suivante. Nous verrons que, de mani\u00e8re g\u00e9n\u00e9rale, le langage C pr\u00e9voit une notation de ce type (\ suivi d'un caract\u00e8re) pour un certain nombre de caract\u00e8res dits "de contr\u00f4le", c'est-\u00e0-dire ne poss\u00e9dant pas de "graphisme" particulier.
Notez que, apparemment, bien que printf soit une fonction, nous n'utilisons pas sa valeur. Nous aurons l'occasion de revenir sur ce point, propre au langage C. Pour l'instant, admettez que nous pouvons, en C, utiliser une fonction comme ce que d'autres langages nomment une "proc\u00e9dure" ou un "sous-programme".
est en fait un peu particuli\u00e8re. Il s'agit d\u2019une "directive" qui est prise en compte avant la traduction (compilation) du programme. Ces directives, contrairement au reste du programme, doivent \u00eatre \u00e9crites \u00e0 raison d'une par ligne et elles doivent obligatoirement commencer en d\u00e9but de ligne. Leur emplacement au sein du programme n'est soumis \u00e0 aucune contrainte (mais une directive ne s'applique qu'\u00e0 la partie du programme qui lui succ\u00e8de). D'une mani\u00e8re g\u00e9n\u00e9rale, il est pr\u00e9f\u00e9rable de les placer au d\u00e9but, comme nous l'avons fait ici.
La directive demande en fait d'introduire (avant compilation) des instructions (en langage C) situ\u00e9es dans le fichier stdio.h. Notez qu'un m\u00eame fichier en-t\u00eate contient des d\u00e9clarations relatives \u00e0 plusieurs fonctions. En g\u00e9n\u00e9ral, il est indispensable d'incorporer stdio.h.
Ce paragraphe vous expose un certain nombre de r\u00e8gles g\u00e9n\u00e9rales intervenant dans l'\u00e9criture d'un programme en langage C. Nous y parlerons pr\u00e9cis\u00e9ment de ce que l'on appelle les "identificateurs" et les "mots cl\u00e9s", du format libre dans lequel on \u00e9crit les instructions, de l'usage des s\u00e9parateurs et des commentaires.
Les identificateurs servent \u00e0 d\u00e9signer les diff\u00e9rents "objets" manipul\u00e9s par le programme: variables, fonctions, etc Comme dans la plupart des langages, ils sont form\u00e9s d'une suite de caract\u00e8res choisis parmi les lettres ou les chiffres, le premier d'entre eux \u00e9tant n\u00e9cessairement une lettre.
Dans notre langue \u00e9crite, les diff\u00e9rents mots sont s\u00e9par\u00e9s par un espace, un signe de ponctuation ou une fin de ligne. Il en va quasiment de m\u00eame en langage C dans lequel les r\u00e8gles vont donc para\u00eetre naturelles. Ainsi, dans un programme, deux identificateurs successifs entre lesquels la syntaxe n'impose aucun signe particulier doivent imp\u00e9rativement \u00eatre s\u00e9par\u00e9s soit par un espace, soit par une fin de ligne. Par contre, d\u00e8s que la syntaxe impose un
Ils sont form\u00e9s de caract\u00e8res quelconques plac\u00e9s entre les symboles /* et */. Ils peuvent appara\u00eetre \u00e0 tout endroit du programme o\u00f9 un espace est autoris\u00e9. En g\u00e9n\u00e9ral, cependant, on se limitera \u00e0 des emplacements propices \u00e0 une bonne lisibilit\u00e9 du programme.
/* commentaire s'\u00e9tendant
sur plusieurs lignes
de programme source
La mani\u00e8re de d\u00e9velopper et d'utiliser un programme en langage C d\u00e9pend naturellement de l\u2019environnement de programmation dans lequel vous travaillez. Nous vous fournissons ici quelques indications g\u00e9n\u00e9rales (s'appliquant \u00e0 n'importe quel environnement) concernant ce que l'on pourrait appeler les grandes \u00e9tapes de la cr\u00e9ation d'un programme, \u00e0 savoir: \u00e9dition, compilation et \u00e9dition de liens.
L'\u00e9dition du programme (on dit aussi parfois "saisie") consiste \u00e0 cr\u00e9er, \u00e0 partir d'un clavier, tout ou partie du texte d'un programme: on parle alors de "programme source". En g\u00e9n\u00e9ral, ce texte sera conserv\u00e9 dans un fichier que l'on nommera "fichier source".
Elle consiste \u00e0 traduire le programme source (ou le contenu d'un fichier source) en langage machine, en faisant appel \u00e0 un programme nomm\u00e9 compilateur. En langage C, compte tenu de l'existence d'un pr\u00e9processeur, cette op\u00e9ration de compilation comporte en fait deux \u00e9tapes.Le r\u00e9sultat de compilation porte le nom de module objet.
Le module objet cr\u00e9\u00e9 par le compilateur n'est pas directement ex\u00e9cutable. Il lui manque, au moins, les diff\u00e9rents modules objet correspondant aux fonctions pr\u00e9d\u00e9finies (on dit aussi "fonctions standard") utilis\u00e9es par votre programme (comme printf, scanf, sqrt).
C'est effectivement le r\u00f4le de l'\u00e9diteur de liens que d'aller rechercher dans la "biblioth\u00e8que standard" les modules objet n\u00e9cessaires. Le r\u00e9sultat de l'\u00e9dition de liens est ce que l'on nomme un "programme ex\u00e9cutable", c'est-\u00e0-dire un ensemble autonome d'instructions en langage machine. Si ce programme ex\u00e9cutable est rang\u00e9 dans un fichier, il pourra ult\u00e9rieurement \u00eatre ex\u00e9cut\u00e9 sans qu'il soit n\u00e9cessaire de faire appel \u00e0 un quelconque composant de l'environnement de programmation en C.
Leave a Comment