CHAPITRE
4
Les bases du langage C
4.1 Nature & composantes
4.1.1 Introduction
L’ordinateur accepte une s´
erie d’instructions couch´
ees dans un langage qui lui
est propre : l’assembleur. La somme de ces instructions forme un algorithme.
L’assembleur est donc un langage interpr´
et´
epar le processeur.
L’assembleur, langage-machine, est cod´
e`
a mˆ
eme l’unit´
e centrale de logique et
d’arithm´
etique (ALU ou UCLA). Il permet donc d’effectuer des tests de logique,
des comparaisons, des op´
erations d’addition, de soustraction, etc.
Un algorithme transcrit en assembleur est un logiciel,
ex´
ecutable par l’ordinateur.
L’assembleur est un langage basique, simple (une quarantaine d’instructions)
par cons´
equent il faut beaucoup d’instructions en assembleur pour coder un
algorithme, mˆ
eme l’algorithme d’une tˆ
ache simple.
Un langage syntaxique de haut niveau, tel que le C, permet de transcrire un al-
gorithme plus facilement. Toutefois il devient n´
ecessaire de le convertir (traduire)
en langage-machine.
29
30 CHAPITRE 4. LES BASES DU LANGAGE C
convertir =compilation : le C est un langage compil´
e,
non interpr´
etable directement par l’ordinateur.
Le C, son organisation, sa structure
En principe la r´
ealisation d’un algorithme ne n´
ecessite qu’une liste d´
etaill´
ee
des op´
erations que nous d´
esirons effectuer. On distinguera trois types de langages
selon leur niveau de complexit´
e.
a) langage instructionnel, il regroupe un ensemble d’instructions pour une ap-
plication bien pr´
ecise. Son utilit´
e se limite `
a la tˆ
ache vis´
ee. Par exemple l’as-
sembleur est un langage de ce type. Exemple d’utilisation : les op´
erations
de mise en route de l’ordinateur (BIOS) sont cod´
ees en assembleur.
b) langage fonctionnel, qui permet d’effectuer des op´
erations r´
ep´
etitives sur
des donn´
ees vari´
ees, en regroupant puis identifiant les instructions perti-
nentes `
a effectuer. Le C est un langage de ce type, tout comme le Fortran ou
le Pascal.
c) langage orient´
e objet, type le plus ´
evolu´
e, permet de regrouper des familles
de fonctions et des param`
etres pour une modularit´
e parfaite. Le C++, ainsi
que Java et ses d´
eriv´
ees, en sont des exemples.
Premier pas vers la programmation
Pour ex´
ecuter un programme, il faut au minimum :
une ou plusieurs instructions `
a ex´
ecuter. Les op´
erations sont effectu´
ees les
une apr`
es les autres. Il faut donc pouvoir les identifier, les reconnaˆ
ıtre.
En C, le point-virgule ( ;) indique la fin d’une instruction. Il sert de s´
eparateur
entre deux instructions.
un regroupement en blocs de ces instructions
On utilise les accolades {et }pour indiquer le d´
ebut et la fin d’un bloc d’ins-
tructions. Donc les accolades : toujours en paires.
En C, l’expression est une suite de composantes ´
el´
ementaires, de syntaxe cor-
recte, reconnues par le langage. (Voir liste de mots-clefs.)
Par exemple a= 1+2 est une expression o`
u apparait une op´
eration d’addition
(+) et une op´
eration d’affectation (stockage) du r´
esultat (=) `
a la variable a. En
ajoutant un ‘ ;’
a= 1 + 2;
4.1. NATURE & COMPOSANTES 31
nous formons une instruction du langage. Deux ou plusieurs expressions peuvent
ˆ
etre mise bout `
a bout pour former une instruction : il suffit de les s´
eparer par une
virgule. Par exemple
{a= 1 + 2, b = sin(a); }
forme un bloc d’une instruction : la virgule sert de s´
eparateur entre deux ex-
pressions. Lecture : de gauche `
a droite !
4.1.2 Hi´
erarchie du langage C :
Les diff´
erents constituants du langage peuvent ˆ
etre mis en ordre croissant de
complexit´
e :
expressions instructions bloc fonction Algorithme
Propri´
et´
es g´
en´
erales des fonctions :
une fonction peut ˆ
etre r´
eutilis´
ee s´
equentiellement
Elle peut accepter un ou plusieurs arguments
toute fonction a un identifiant (un nom, par exemple : main, sin, ... )
dans un programme complet : une seule fonction appel´
ee main
Pour pouvoir effectuer toutes les op´
erations, calculs, etc sans faute, il faut
pr´
eciser la nature de toute quantit´
e ou variable apparaissant dans une instruction,
voire `
a l’int´
erieur d’une fonction. On parlera de type de variables et fonctions.
Ainsi il est n´
ecessaire de donner un type aux fonctions elles-mˆ
emes. Les diff´
erents
types sont discut´
es plus loin.
Signature d’une fonction : syntaxe
<type >nom ( <type 1 >variable 1, <type 2 >variable 2 ... )
{
instructions
}
Composantes syntaxique du langage
Pour r´
ediger une fonction (disons main), il nous faut connaˆ
ıtre les composantes
syntaxique du langage.
Il existe deux saveurs de ces composantes :
(a) les identifiants, c’est-`
a-dire
essentiellement des noms (de variables, fonctions)
tous les types personnalis´
es d´
efinis par l’utilisateur
32 CHAPITRE 4. LES BASES DU LANGAGE C
– compos´
es de lettres (a-Z), chiffres (0-9) et le blanc soulign´
e ( )
Restrictions
le 1ier symbole d’un identifiant ne peut ˆ
etre un chiffre
ne peut ˆ
etre un mot–clef (voir plus bas)
longueur max : d´
epend de l’ordinateur (normalement >31 symboles).
majuscules/minuscules diff´
erenci´
ees
(b) les mots-clefs du langage (voir liste)
4.1.3 Anatomie d’un programme C
Les composantes d’un programme C
1. bloc d’instructions principal : main
– Unit´
e de base du programme
Point de d´
epart `
a l’ex´
ecution
1 ou plusieurs bloc(s) d’instructions
2. bloc d’instructions d´
eriv´
es ou secondaires : les fonctions
un bloc d’instructions s’appelle aussi fonction lorsqu’il est pr´
ec´
ed´
e d’un
identifiant (nom).
3. d´
eclaration de variables (1) locales (2) globales
le C est un langage dit typ´
eparce que chaque variable ou param`
etre
de l’algorithme doit avoir ´
et´
e d´
eclar´
e et affect´
e d’un type sp´
ecifique avant
d’ˆ
etre initialis´
e (voir §4.2).
4. directives au compilateur (logiciel de compilation).
5. biblioth`
eques (locales ou ext´
erieures).
il s’agit de donn´
ees suppl´
ementaires, standardis´
ees, que nous pouvons
inclure implicitement dans notre algorithme.
Organigramme d’un programme C
Biblioth`
eques
variables globales
fonction 1
fonction 2
fonction 3
4.2. LES VARIABLES EN C 33
.
.
.
fonction principale ou main
4.2 Les variables en C
4.2.1 Types et d´
efinitions
Rappel : variable
au sens math´
ematique, une inconnue.
Par exemple,
2x+ 2 = 1 x=1/2
comme r´
esultat unique.
au sens informatique : il s’agit de la repr´
esentation d’une adresse m´
emoire.
Une affectation `
a une variable = rangement d’une valeur `
a cette adresse
Particularit´
e du C : il faut d´
eclarer toute variable avant d’y faire r´
ef´
erence.
4.2.2 D´
eclaration de variables : syntaxe
La d´
eclaration : voir liste des mots-clefs.
Notation : < > pour ’obligatoire’ ;[ ] pour facultatif
[ Classe d’allocation ] <type > < identifiant > [ = valeur]
Types de variables : gestion plus efficace de l’espace m´
emoire, diff´
erents types
occupant chacun un espace m´
emoire qui lui est propre. Ceci tient de ce que les
nombres et symboles (lettres, chiffres, etc) sont cod´
es dans une base binaire. L’es-
pace m´
emoire d’une variable d’un type sp´
ecifique peut donc se mesurer en bits
d’information, ou, plus couramment, en octets (1 octet = 8 bits).
Tour `
a tour :
1. Classe d’allocation : elle sp´
ecifie la port´
ee d’une variable dans le programme.
aauto : espace m´
emoire fragile, effac´
e apr`
es compl´
etion d’une suite
d’instructions. Variable non initialis´
ee.
bstatic : pr´
eserv´
ee en m´
emoire, dur´
ee de vie = celle du programme.
Initialisation `
a = 0.
cextern : variables globales, hors fonctions. Similaire `
a static.
1 / 22 100%