Vous êtes sur la page 1sur 8

Chapitre 2 - INTRODUCTION AU LANGAGE C

1. Introduction
Pour tre excut par un ordinateur, un algorithme doit tre traduit en un programme en
langage machine.
Dans la pratique, on crit le programme dans un langage de programmation plus proche
du langage humain. Ensuite, un outil spcialis se charge de faire la traduction en langage
machine. C'est le cas du langage C qui est un langage de programmation dit compil : un
programme crit dans ce langage doit passer par une tape de compilation pour tre
entirement traduit en un autre programme en langage machine par un outil appel
compilateur. e programme o!tenu est dit programme excuta!le.
3. Structure dun pro!ra""e en C
"n programme en C est compos d'un programme principal appel "ain et,
#entuellement, d'autres parties qui peu#ent tre des directi#es de compilation, des
dclarations de constantes, etc.
$l peut tre crit dans un fichier appel fichier source portant l'extension .c ou
l'extension .cpp. Dans le premier cas, il s'agit d'un programme en C pur. Dans le deuxime
cas, c'est un programme en C%%.
e langage C%% est un langage de programmation incluant les fonctionnalits du langage
C et d'autres fonctionnalits plus a#ances.
#. E$e"p%e de pro!ra""e en C
&include 'stdio.h(
int main) *
+
printf),-on.our,* /
return 0 /
1
Dans l'exemple, &include 'stdio.h( est une directi#e de compilation qui permet d'inclure
dans le programme les fonctions dfinies dans la li!rairie standard stdio.h. Ces fonctions
pourront alors tre appeles )c'est 2 dire utilises* dans le programme principal qui
contient les instructions 2 excuter..
"ne fonction est un regroupement d'instructions permettant d'effectuer un traitement.
"ne li!rairie est un fichier dans lequel est dfini un ensem!le de fonctions.
e langage C fournit un ensem!le de li!rairies appeles li!rairies standard. Par exemple :
3 sdtio.h qui contient les dfinitions de fonctions d'Entre45ortie
3 math.h qui contient les dfinitions de fonctions mathmatiques.
Dans l'exemple la fonction print& de la li!rairie standard stdio.h est appele dans le
programme principal pour afficher 2 l'cran la cha6ne de caractres ,-on.our,.
Chapitre 7 3 $ntroduction au langage C Page 8 4 9
e programme principal est aussi une fonction et on l'appelle sou#ent la fonction main.
Dans l'exemple, l'instruction return 0 termine la fonction main qui retourne )c'est 2 dire
donne* le rsultat 0 qui est de t:pe int )entier en langage C*.
'. Le( t)pe( de *a(e du %an!a!e C
; une #aria!le ou une constante est associe un t:pe qui permet de dfinir la taille de
l<espace occup en mmoire )nom!re d<octets*.
'-1. Le( entier(
=n peut distinguer plusieurs t:pes d'entiers en C :
T)pe De(cription Tai%%e +a%eur( po((i*%e( ,or"at
int Entier standard 7 octets
de 3>7?@9 2 >7?@? )sur 7 octets*
de 378A?A9>@A9 2 78A?A9>@A? )sur A octets*
Bd
short int Entier court 7 octets de 3>7?@9 2 >7?@? Bd
long int Entier long A octets de 378A?A9>@A9 2 78A?A9>@A? Bld
5i on #eut des entiers non signs )positifs*, on a.outera le mot un(i!ned de#ant le t:pe.
T)pe Tai%%e +a%eur( po((i*%e( ,or"at
unsigned int 7 ou A octets de 0 2 @CC>C )sur 7 octets*
de 0 2 A7DAD@?7DC ) sur A octets*
Bu
unsigned short int 7 octets de 0 2 @CC>C Bu
unsigned long int A octets de 0 2 A7DAD@?7DC Blu
'-2. Le( r-e%(
=n peut distinguer deux t:pes de rels en C :
T)pe De(cription Tai%%e +a%eur( po((i*%e( ,or"at
float Eel A octets de 3>.A0797> F 80
>9
2 >.A0797> F 80
>9
Bf
dou!le Eel dou!le prcision 9 octets de 38.?D?@D>8>A9@7>7F80
>09
2 8.?D?@D>8>A9@7>7 F 80
>09
Blf
'-3. Le( caract.re(
T)pe De(cription Tai%%e ,or"at
char Caractre 8 octet Bc
Re"ar/ue
es caractres spciaux sont reprsents en utilisant le caractre G. Par exemple :
'Gn' retour chariot a#ec saut de ligne
'Gt' ta!ulation horiHontale
Chapitre 7 3 $ntroduction au langage C Page 7 4 9
Re"ar/ue
; chaque caractre correspond un nom!re entier qui est son code ;5C$$. Par exemple @C
est le code ;5C$$ du caractre ';', @@ est celui du caractre '-', etc.
Re"ar/ue
En langage C )programme dans un fichier .c*, le t:pe !oolen est reprsent par le t:pe int
a#ec 0 signifiant I;"J et toute #aleur non nulle )par exemple 8* signifiant KE;$.
En langage C%% )programme dans un fichier .cpp*, il existe un t:pe !oolen appel !ool
a#ec les #aleurs true et false.
0. D-c%aration de( 1aria*%e( et de( con(tante(
a dclaration consiste 2 rser#er un espace en mmoire pour le stocLage de la #aleur
d'une #aria!le ou d'une constante.
0-1. D-c%aration dune 1aria*%e
a s:ntaxe de dclaration d<une #aria!le est :
t:pe identificateur /
E$e"p%e
int a /
"ne dclaration peut tre accompagne d<une initialisation.
=n peut aussi dclarer plusieurs #aria!les de mme t:pe a#ec une mme instruction.
E$e"p%e
int a , ! M 7 , c /
Re"ar/ue
e langage C tient compte de la casse, c'est 2 dire qu'il fait la diffrence entre les
ma.uscules et les minuscules. Par exemple, N;J est diffrent de Nax.
"n certain nom!re de mots, appels mots3cls, sont rser#s au langage et ne peu#ent pas
tre utiliss comme identificateurs.
0-2. D-c%aration dune con(tante
a s:ntaxe de dclaration d<une constante est :
const t:pe identificateur M #aleur /
E$e"p%e
const int O M 800 /
Chapitre 7 3 $ntroduction au langage C Page > 4 9
Re"ar/ue
a directi#e de compilation &define permet de dfinir une #aleur constante selon la
s:ntaxe sui#ante:
&define identificateur #aleur
Nais dans ce cas, il n<: a pas de rser#ation d'espace mmoire car il ne s'agit pas d'une
dclaration mais seulement d'un remplacement dans le programme du mot reprsent par
l'identificateur par le mot reprsent par la #aleur.
E$e"p%e
&define O 800
; la compilation, tous les O dans le programme seront remplacs par 800.
0-3. Choi$ dun identi&icateur
"n identificateur est une suite de caractres pou#ant contenir des lettres )minuscules ou
ma.uscules sans accents*, des chiffres et le caractre P )soulign*. Nais le premier
caractre ne peut pas tre un chiffre.
e langage C tient compte de la casse, c'est 2 dire qu'il fait la diffrence entre les
ma.uscules et les minuscules. Par exemple, N;J est diffrent de Nax.
"n certain nom!re de mots, appels mots3cls, sont rser#s au langage et ne peu#ent pas
tre utiliss comme identificateurs.
2. Le( op-ration( du %an!a!e C
En langage C, on retrou#e les oprations de !ase #ues en algorithmique:
3 =prations arithmtiques :
addition ) % * , soustraction ) 3 * , multiplication ) Q * , di#ision ) 4 * , modulo ) B *
3 =prations de comparaison :
infrieur ) ' * , infrieur ou gal ) 'M *, suprieur ) ( * , suprieur ou gal ) (M * ,
gal ) M M * , diffrent ) RM *
3 =prations logiques :
ES logique ) TT * , =" logique ) UU * , Ogation ) R *
3. Le( in(truction( -%-"entaire(
3-1. L4a&&ectation
'instruction d'affectation permet de donner 2 une #aria!le la #aleur d'une expression. Elle
se fait a#ec l'oprateur 5 selon la s:ntaxe sui#ante :
#aria!le M expression /
3-2. L-criture
a fonction print& permet d<afficher des informations 2 l<cran. 5a s:ntaxe est :
printf ) ,informations 2 afficher, , expression8, expression7, V * /
Chapitre 7 3 $ntroduction au langage C Page A 4 9
Cette fonction de la li!rairie standard stdio.h prend comme premier paramtre une cha6ne
de caractres contenant les informations 2 afficher. 5i des #aleurs d'expressions doi#ent
appara6tre dans cette cha6ne, alors il faudra : mettre les formats correspondant 2 leurs
t:pes et donner comme paramtres supplmentaires la liste de ces expressions.
E$e"p%e
int x M C , : M 80 /
printf ) ,-on.ourGna #aleur de x est Bd et celle de : est Bd,, x, : * /
; l'affichage, les formats Bd seront remplacs respecti#ement par les #aleurs de x et de :.
=n aura donc 2 l'cran :
-on.our
a #aleur de x est C et celle de : est 80
3-3. La %ecture
a fonction (can& permet de lire des informations donnes au cla#ier par l<utilisateur. 5a
s:ntaxe est :
scanf ) ,formats, , T#aria!le8 , T#aria!le7, . . . * /
Cette fonction de la li!rairie standard stdio.h prend comme premier paramtre une cha6ne
contenant les formats des t:pes des #aria!les 2 lire au cla#ier. es paramtres sui#ants
sont, dans l<ordre, l<adresse de chaque #aria!le dont on #eut lire la #aleur.
'oprateur T permet d<accder 2 l<adresse en mmoire d'une #aria!le )2 omettre dans le
cas de la lecture d<une cha6ne de caractres*.
E$e"p%e
int a , ! /
scanf ),BdBd,, Ta , T!* /
5i l'utilisateur donne 7 puis C, a #a prendre la #aleur 7 et ! #a prendre la #aleur C.
3-#. Lecture et a&&icha!e de caract.re(
;#ant la lecture d'un caractre il faut #ider le !uffer li au cla#ier a#ec l'instruction :
fflush)stdin* /
=n peut ensuite utiliser la fonction scanf a#ec le format Bc
=n peut aussi utiliser la fonction !etchar de la li!rairie stdio.h qui permet au programme
de lire un caractre tap au cla#ier par l'utilisateur. Cette fonction retourne un entier )code
;5C$$* correspondant au caractre lu. Pour affecter le caractre lu 2 une #aria!le c de
t:pe char, on crit :
c M getchar) * /
a fonction putchar de la li!rairie stdio.h permet au programme d<afficher un caractre 2
l<cran. a s:ntaxe pour afficher la #aleur d'une #aria!le c de t:pe char est :
putchar) c * /
Chapitre 7 3 $ntroduction au langage C Page C 4 9
6. Le( (tructure( de contr7%e
6-1. Le( (tructure( conditionne%%e(
6-1-1. La (tructure i&
C'est la traduction de la structure Si de l'algorithmique. 5a s:ntaxe gnrale est :
if ) condition8 *
+
traitement8 /
1
else if ) condition7 *
+
traitement7 /
1
...
else if ) conditionO *
+
traitementO /
1
else
+
traitement /
1
es conditions doi#ent tre entre parenthses.
5i un traitement comporte une seule instruction, on peut omettre les accolades.
6-1-2. La (tructure (8itch
Elle permet de traduire la structure 5elon de l'algorithmique. 5a s:ntaxe est:
sWitch ) expression *
+
case #aleur8 : traitement8 / !reaL /
case #aleur7 : traitement7 / !reaL /
...
case #aleurO : traitementO / !reaL /
default : traitement /
1
<excution commence par le traitement du cas qui correspond 2 la #aleur de l<expression
et continue .usqu<2 un !reaL ou la fin du sWitch. ;insi, si on ne met pas de !reaL, les
traitements sui#ants seront galement excuts.
a clause default contient un traitement 2 excuter dans le cas oX la #aleur de l'expression
ne correspond 2 aucune des #aleurs listes.
Chapitre 7 3 $ntroduction au langage C Page @ 4 9
E$e"p%e
int num /
printf) ,Donner un numro de .our, * /
scanf) ,Bd,, Tnum * /
sWitch ) num *
+
case 8 : printf) ,undi, * / !reaL /
case 7 : printf) ,Nardi, * / !reaL /
case > : printf) ,Nercredi, * / !reaL /
default : printf) ,Ce n'est ni undi ni Nardi ni Nercredi, * /
1
6-2. Le( (tructure( r-p-titi1e(
6-2-1. La *ouc%e 8hi%e
C'est la traduction de la !oucle Sant que de l'algorithmique. 5a s:ntaxe est:
While )condition*
+
traitement /
1
a condition doit tre entre parenthses.
5i un traitement comporte une seule instruction, on peut omettre les accolades.
6-2-2. La *ouc%e do98hi%e
Elle permet de traduire la !oucle Iaire...Sant Yue de l'algorithmique. 5a s:ntaxe est:
do
+
traitement /
1
While )condition* /
6-2-3. La *ouc%e &or
Elle permet de traduire la !oucle Pour de l'algorithmique. 5a s:ntaxe est:
for ) instruction8 / condition / instruction7 *
+
traitement /
1
'excution se droule ainsi :
- instruction8 est excute une seule fois.
3 Ensuite, tant que la condition est #raie : le traitement est excut, puis instruction7
est excute
Chapitre 7 3 $ntroduction au langage C Page ? 4 9
En gnral, instruction8 permet d'initialiser un compteur et instruction7 permet
d'incrmenter ou de dcrmenter le compteur.
E$e"p%e : ;ffichage des nom!res entiers de 0 2 70.
int i /
for ) i M 0 / i 'M 70 / i M i%8 *
+
printf) ,Bd,, i * /
1
1;. Le( in(truction( de rupture de (-/uence en %an!a!e C
'instruction *rea< est la traduction de l'instruction Arr=ter de l'algorithmique. Elle
permet d'interrompre le droulement de la !oucle qui la contient.
'instruction continue est la traduction de l'instruction Continuer de l'algorithmique. Elle
permet d'interrompre le droulement de l'tape courante de la !oucle qui la contient et de
passer directement 2 l'tape sui#ante.
11. Lecture et -criture en C>>
En C%%, on peut utiliser l'oprateur '' pour en#o:er des #aleurs d'expressions #ers le flux
de sortie standard cout ) l'cran * a#ec l'instruction sui#ante :
cout '' Expression8 '' Expression7 '' V '' ExpressionO /
En C%%, on peut utiliser l'oprateur (( pour extraire des #aleurs 2 partir du flux d'entre
standard cin ) le cla#ier * et les affecter 2 des #aria!les a#ec l'instruction sui#ante :
cin (( Karia!le8 (( Karia!le7 (( V (( Karia!leO /
Pour utiliser les flux cin et cout il faut inclure dans le programme la directi#e :
&include 'iostream.h(
ou !ien )de prfrence* :
&include 'iostream(
using namespace std /
E$e"p%e
int x , : /
cout '' ,DonneH les #aleurs de deux entiers x et : : , /
cin (( x (( : /
cout '' ,a #aleur de x est , '' x '' , et celle de : est , '' : /
Chapitre 7 3 $ntroduction au langage C Page 9 4 9

Vous aimerez peut-être aussi