• Embed Doc
  • Readcast
  • Collections
  • CommentGo Back
Download
Le langage C
1
LE LANGAGE C
1. G\u00c9N\u00c9RALIT\u00c9S SUR LE LANGAGE C
Dans ce chapitre, nous vous proposons une premi\u00e8re approche d'un programme en langage C.

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.

1.1 PR\u00c9SENTATION PAR L'EXEMPLE DE QUELQUES INSTRUCTIONS DU LANGAGE C
1.1.1 Un exemple de programme en langage C
Voici un premier exemple tr\u00e8s simple de programme en langage C.

#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) ;

return 0 ;
}1.1.2 Structure d'un programme en langage C

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).

1.1.3 D\u00e9clarations
Les deux instructions : int i; double x; sont des "d\u00e9clarations".
La premi\u00e8re pr\u00e9cise que la variable nomm\u00e9e i est de type int, c'est-\u00e0-dire qu'elle est destin\u00e9e \u00e0 contenir des
nombres entiers (relatifs). Nous verrons qu'en C il existe plusieurs types d'entiers.

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.

1.1.4 Pour \u00e9crire des informations: la fonction printf
Le langage C
2

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".

1.1.5 La fonction return
On la reverra plus tard, notez simplement qu\u2019elle est obligatoire.
1.1.6 Les directives \u00e0 destination du pr\u00e9processeur
La premi\u00e8re ligne de notre programme : #include <stdio.h>

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.

1.2 QUELQUES R\u00c8GLES D'\u00c9CRITURE

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.

1.2.1 Les identificateurs

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.

1.2.2 Les mots cl\u00e9s
Certains "mots cl\u00e9s" sont r\u00e9serv\u00e9s par le langage \u00e0 un usage bien d\u00e9fini et ne peuvent pas \u00eatre utilis\u00e9s comme
identificateurs. En voici la liste, class\u00e9e par ordre alphab\u00e9tique.
auto
default
float
register
struct
volatile
break
do
for
return
switch
while
case
double
goto
short
typedef
char
else
if
signed
union
const
enum
int
sizeof
unsigned
continue
extern
long
static
void
1.2.3 Les s\u00e9parateurs

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

Le langage C
3
s\u00e9parateur quelconque, il n'est alors pas n\u00e9cessaire de pr\u00e9voir d'espaces suppl\u00e9mentaires (bien qu'en pratique cela
am\u00e9liore la lisibilit\u00e9 du programme).
Ainsi, vous devrez imp\u00e9rativement \u00e9crire : int x,y et non : intx,y
En revanche, vous pourrez \u00e9crire indiff\u00e9remment : int n,compte,total ou plus lisiblement : int n, compte, total
1.2.4 Les commentaires
Comme tout langage \u00e9volu\u00e9, le langage C autorise la pr\u00e9sence de commentaires dans vos programmes source. Il
s'agit de textes explicatifs destin\u00e9s aux lecteurs du programme et qui n'ont aucune incidence sur sa compilation.

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.

Voici quelques exemples de commentaires:
//
programme de calcul de racines carr\u00e9es

/* commentaire s'\u00e9tendant
sur plusieurs lignes
de programme source

*/
1.3 CR\u00c9ATION D'UN PROGRAMME EN LANGAGE C

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.

1.3.1 L'\u00e9dition du programme

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".

1.3.2 La compilation

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.

1.3.3 L'\u00e9dition de liens

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.

Exercice :
Ecrire un programme permettant d\u2019afficher \u00ab bonjour \u00bb \u00e0 l\u2019\u00e9cran.
of 00

Leave a Comment

You must be to leave a comment.
Submit
Characters: ...
You must be to leave a comment.
Submit
Characters: ...