Sunteți pe pagina 1din 29

1

23
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
1. Types simples
Un type dfinit l'ensemble des valeurs que peut
prendre une variable, le nombre d'octets rserver
en mmoire et les oprateurs que l'on peut
appliquer dessus.
En C, il n'y a que deux types de base :
les entiers et
les rels.
CHAPITRE 3 CHAPITRE 3 : : Types de base, Op Types de base, Op rateurs et rateurs et
Expressions Expressions
24
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
1.1 Types entiers :
+ variantes d'entiers : caractrcs (cLar), cnttcrs ccurts (sLort int), cnttcrs
/cngs (long int) et cnttcrs standards (int).
Caracteristiques :
Remarques :
\n caractere est un nombre entier (il s'identilie a son code ASCII). Par
consequent, une variable de type cLar peut contenir une valeur entre -128 et
12/ et elle peut subir les memes operations que les variables du type sLort, int
ou long.
\n nombre entier de type int est souvent represente sur 1 mct macbtnc (16
bits ou 32 bits). Dans notre cas, 1 mot macLine - 16 bits.
Si l'on ajoute le prelixe unsigned a l'une de ces variantes, alors on manipule
des entiers non signes :
unsigned char : indique des valeurs entieres entre 0 et 255.
unsigned int (resp. sLort) : entre 0 et 65535.
unsigned long : entre 0 et +29+96/295.
Chap. 3 Chap. 3 : 1. Types simples : 1. Types simples
2
25
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
1.2 Types rels :
3 types de rels :
rels simple prcision (float),
rels double prcision (double) et
rels trs grande prcision (long double).
Caractristiques :
Chap. 3 Chap. 3 : 1. Types simples : 1. Types simples
26
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
Les vartab/cs et les ccnstantcs sont les donnees principales manipulees par
un programme.
Les variables :
Les dcc/arattcns introduisent les variables, lixent leur type et parlois aussi
leur valeur de depart (initialisation).
Syntaxe de declaration :
<type <omVar1, <omVar2, ., omVar ;
Exemple en C :
int x, y ;
sLort compteur ;
lloat Lauteur, largeur ;
double r ;
cLar toucLe ;
Chap. 3 : 2. Dclaration des variables simples
3
27
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
Les constantes littrales :
Dans un programme C, on peut manipuler les constantes
littrales en nombre de 4 :
constantes entires,
constantes relles,
constantes caractres et
constantes chanes de caractres.
Chap. 3 : 2. Dclaration des variables simples
28
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
2.1 Les constantes entires
sous forme dcimale : 100, 255.
sous forme octale, en faisant prcder le nombre par le caractre
0 (zro) : 0144, 0377.
sous forme hexadcimale, en faisant prcder le nombre par 0x
ou 0X : 0x64, 0Xff
Remarques :
Le type attribu une constante est automatique (C choisit la solution la
plus conomique)
Cn peut lorcer l'ordinateur a attribuer a la constante entiere un type de
notre cLoix, en employant l'un des sullixes suivants :
Chap. 3 : 2. Dclaration des variables simples
4
29
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
2.2 Constantes relles :
en notation decimale : 123.+
en notation exponentielle : 123+e-1 ou bien 123+E-1
Bemarques :
Par delaut, les constantes reelles sont du type double.
Le sullixe l ou I lorce l'utilisation du type lloat.
Le sullixe l ou L lorce l'utilisation du type long double.
Chap. 3 : 2. Dclaration des variables simples
30
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
2.3 Constantes caractres :
Sont toujours indiqus entre apostrophes ' '
Exemples :
'a' ; 'b' ; 'A' ; '+' ; ',' ;
La valeur d'un caractre constant est son code ASCII. Les caractres
constants peuvent donc apparatre dans des oprations arithmtiques
ou logiques.
Ainsi, l'expression : 'a' + '?' vaut 160
(le code ASCII de 'a' est gal 97 alors que celui de '?' est 63)
Pour distinguer certains caractres spciaux (les caractres de contrle
ou caractres non imprimables), on utilise le signe \ (antislash)
tableaux
Chap. 3 : 2. Dclaration des variables simples
5
31
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
Squences dchappement :
Chap. 3 : 2. Dclaration des variables simples
32
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
2.4 Constantes chanes de caractres :
Sont reprsentes entre guillemets " ".
Exemple : "Ceci est une chane de caractre"
Le compilateur C rajoute la fin de toute chane de caractres
le caractre nul '\0' pour indiquer sa fin.
Dans une chane de caractre, on peut utiliser les squences
dchappement. Linstruction suivante :
printf("Bonjour, \n\tcomment vas-tu?\n")
produit la sortie :
Bonjour,
comment vas-tu?
Chap. 3 : 2. Dclaration des variables simples
6
33
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
2.5 Initialisation des variables :
En C, il est possible d'initialiser les variables la dclaration.
Exemples :
int max = 1023 ;
char tabulation = '\t' ;
En utilisant l'attribut const, la valeur d'une variable ne change
pas au cours du programme : C'est une constante.
Exemples :
const int MAX = 767 ;
const char NEWLINE = '\n' ;
Chap. 3 : 2. Dclaration des variables simples
34
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
Les oprateurs sont des symboles qui permettent de manipuler des variables,
c'est--dire effectuer des oprations, les valuer, ...
3.1 Oprateurs classiques
3.1.1 Oprateur d'affectation =
<variable> = <expression> ;
L'expression est value puis affecte la variable.
Exemples :
const int LONG = 141 ; /* affectation de valeurs constantes */
char NATION = 'M' ;
int val, resultat ;
char lettre ;
val = LONG ; /* affectation de valeurs de variables */
lettre = NATION ;
resultat = 45 + 5 * val ; /* affect. de valeurs d'expressions */
Chap. 3 : 3. Oprateurs Standards
7
35
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
3.1.2 Oprateurs arithmtiques
+- * /
L'oprateur % permet d'obtenir le reste de la division entire.
L'oprateur / retourne un quotient entier si les deux oprandes sont entiers.
3.1.3 Oprateurs logiques
&& : ET logique (and)
|| : OU logique (or)
! : ngation logique (not)
S'appliquent des expressions boolennes (0 si faux et valeur non nulle si vrai)
ET retourne la valeur 1 si les deux oprandes sont non nuls, et 0 sinon.
OU retourne la valeur 1 si au moins un des oprandes est non nul, et 0 sinon.
Exemples
L'expression : 32 && 40 vaut 1
L'expression : !65.34 vaut 0
L'expression : !!0 vaut 0
Chap. 3 : 3. Oprateurs Standards
36
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
3.1.3 Oprateurs de comparaison
= = : l'oprateur gal .
!= : l'oprateur diffrent de.
<, <=, >, >= : plus petit, plus petit ou gal, plus grand, plus
grand ou gal.
Ces oprateurs retournent la valeur 0 si la comparaison est
fausse et 1 sinon
Exemple
0 || !(32 > 12) retourne la valeur 0.
Chap. 3 : 3. Oprateurs Standards
8
37
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
3.1.4 Oprateurs de bits
Ils travaillent sur les bits.
Les oprandes doivent tre de type entier (char, short, int, long, signs ou
non).
Oprateurs de dcalage de bits
>> : dcalage droite. << : dcalage gauche.
L'oprande gauche constitue l'objet dcaler et l'oprande droit le nombre de bits
de dcalage.
Si la quantit dcaler est signe alors le bit signe (la position binaire d'extrme
gauche) est prserve lors d'un dcalage droite, c.--d. ce bit se propage de
faon garder la signe de la donne.
Si la quantit est non signe, alors les bits laisss libres sont mis 0.
Chap. 3 : 3. Oprateurs Standards
38
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
Exemples
int i, j ;
unsigned int u, v ;
i = 5 ; /* reprsentation de i : 0000 0000 0000 0101 */
j = i<<2 ; /* reprsentation de j : 0000 0000 0001 0100
c.--d. la valeur 20 */
i = -3 ; /* reprs. de i : 1111 1111 1111 1101 */
j = i<<2 ; /* reprs. de j : 1111 1111 1111 0100
c.--d. la valeur -12 */
i = -32768 ; /* reprs. de i : 1000 0000 0000 0000 */
j = i>>2 ; /* reprs. de j : 1110 0000 0000 0000
c.--d. la valeur -8192 */
u = 32768 ; /* reprs. de u : 1000 0000 0000 0000 */
v = u>>2 ; /* reprs. de v : 0010 0000 0000 0000 */
Chap. 3 : 3. Oprateurs Standards
3.1.4 Oprateurs de bits - Oprateurs de dcalage de bits-
9
39
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
Oprateurs bit bit :
& : ET logique.
| : OU inclusif.
^ : OU exclusif.
~ : complment 1.
Ici, les oprateurs portent sur les bits de mme rang.
Rappel :
Chap. 3 : 3. Oprateurs Standards
3.1.4 Oprateurs de bits
40
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
Exemples
unsigned int n, c ;
n = ;
c = n & 0177 ; /* 0177 est gal (82 + 7 * 8 + 7) */
c est constitu des 7 bits de poids faible de n, complts gauche par des 0
unsigned int n, c ;
n = ;
c = n | 0177 ;
c est constitu des bits de n, les 7 bits de poids faible tant forcs 1
unsigned int n, c ;
n = ;
c = n ^ 0177 ;
c est constitu des bits de n, les 7 bits de poids faible tant inverss
Chap. 3 : 3. Oprateurs Standards
3.1.4 Oprateurs de bits -Oprateurs bit bit
10
41
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
3.2 Oprateurs particuliers de C
3.2.1 Oprateurs d'affectation
Pour la plupart des expressions de la forme :
expr1 = (expr1) OP (expr2)
Il existe une formulation quivalente utilisant un oprateur daffectation:
expr1 OP= expr2
Oprateurs d'affectation utilisables :
+= -= *= /= %=
<<= >>= &= ^= |=
Exemples
a = a + b s'crit a += b
n = n << 2 s'crit n <<= 2
Chap. 3 : 3. Oprateurs Standards
42
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
3.2.2 Oprateurs d'incrmentation (++) et de dcrmentation (--)
Post-incrmentation
<var>++
La valeur de la variable <var> est d'abord utilise telle quelle, puis
incrmente.
Exemple
int k, n ;
k = 0 ;
n = k++ ; /* passe d'abord la valeur de k n et incrmente aprs */
/* ici, k vaut 1 et n vaut 0 */
Chap. 3 : 3. Oprateurs Standards
3.2 Oprateurs particuliers de C
11
43
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
3.2.2 Oprateurs d'incrmentation (++) et de dcrmentation (--) :
Pr-incrmentation
++<var>
Exemple
int k, n ;
k = 0 ;
n = ++k ; /* incrmente d'abord et passe la valeur incrmente n */
/* ici, k vaut 1 et n vaut 1 */
Post-dcrmentation <var>--
Pr-dcrmentation --<var>
Chap. 3 : 3. Oprateurs Standards
3.2 Oprateurs particuliers de C
44
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
3.2.3 Oprateur squentiel ( , )
<expr1> , <expr2>,, <exprN>
Exprime des calculs successifs dans une mme expression
Le type et la valeur de l'expression sont ceux du dernier oprande.
Exemple :
L'expression : x = 5 , x + 6 a pour valeur 11
3.2.4 Oprateur conditionnel (? :)
<expression> ? <expr1> : <expr2>
<expression> est value. Si sa valeur est non nulle, alors la valeur de <expr1> est
retourne. Sinon, c'est la valeur de <expr2> qui est renvoye.
Exemple
max = a > b ? a : b
si a est le plus grand, alors affectation max du contenu de a sinon
affectation du contenu de b
Chap. 3 : 3. Oprateurs Standards
3.2 Oprateurs particuliers de C
12
45
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
3.2.3 Oprateurs sizeot
sizeot(<type) ou sizeot(<variable)
Retourne le nombre d'octets occupes par le type de donnees
ou la variable specilies.
Exemple
int x ;
sizeot(int) /" retourne la valeur 2 (le type int occupe 2 octets). "/
sizeot(x) /" retourne la valeur 2. "/
Chap. 3 : 3. Oprateurs Standards
3.2 Oprateurs particuliers de C
46
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
\ne expression est un calcul qui donne une valeur comme rsultat
(exemple : 85).
\ne expression peut comporter des variables et des constantes
combines entre eux par des oprateurs et lormer ainsi une et lormer ainsi une expression expression
complexe complexe
Les expressions peuvent contenir des appels de tonctions et elles
peuvent apparatre comme paramtres dans des appels de tonctions.
Joute expression suivie d'un point virgule devient une instruction.
Exemples
i - 0;
i;
a - (5 " x 100 " y) " 2;
x - pow(a, +); /" lonction puissance : pow(x, y) x
y
"/
Chap. 3 : 4. Expressions et Instructions
13
47
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
Remarque
Les affectations sont aussi interprtes comme des expressions.
L'oprateur d'affectation retourne la valeur affecte.
On peut enchaner des affectations. L'valuation commence de
la droite vers la gauche.
Exemples
b=(a = 5 + 3)+1 a = 8 et b = 9
a = b = c = d quivalente : a = (b = (c = d))
Chap. 3 : 4. Expressions et Instructions
48
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
Lors de l'valuation des diffrentes parties d'une expression, les
oprateurs respectent certaines lois de priorit et d'associativit.
Exemples
La multiplication a la priorit sur l'addition
La multiplication et l'addition ont la priorit sur l'affectation.
Chap. 3 : 5. Priorit et associativit des oprateurs
Tableau des oprateurs et priorit
La priorit est dcroissante de haut
en bas dans le tableau.
La rgle d'associativit s'applique
pour tous les oprateurs d'un mme
niveau de priorit. (pour une
associativit de gauche droite et
pour une associativit de droite
gauche).
Dans une expression, les parenthses
forcent la priorit.
14
49
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
Exemples
a = b = c s'interprte comme a = (b = c)
a *= b += 5 s'value (a = 3 ; b = 4 ;) :
b += 5 9
a *= 9 a = 27
!--a == ++!b s'value (a = 1 ; b = 4 ; ) :
!b 0
++0 1
--a 0
!0 1
1 == 1 1
Chap. 3 : 5. Priorit et associativit des oprateurs
50
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
6.1 Conversion automatique
Si un oprateur a des oprandes de diffrents types, les valeurs
des oprandes sont converties automatiquement dans un type
commun.
Rgle de conversion automatique
Lors d'une opration avec :
deux entiers : les types char et short sont convertis en int. Ensuite, il est
choisit le plus large des deux types dans l'chelle : int, unsigned int,
long, unsigned long.
un entier et un rel : le type entier est converti dans le type du rel.
deux rels : il est choisit le plus large des deux types selon l'chelle :
float, double, long double.
Dans une affectation : le rsultat est toujours converti dans le type de la
destination. Si ce type est plus faible, il peut y avoir une perte de
prcision.
Chap. 3 : 6. Conversions de type (cast)
15
51
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
Chap. 3 : 6. Conversions de type (cast)
6.1 Conversion automatique
52
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
6.2 Conversion forces( casting)
Le type d'une expression peut tre forc, en utilisant
l'oprateur cast :
(<type>) <expression>
Exemple
char a = 49; // a = 1
int b = 4 ;
float c ;
c = (float) a / b;
Quelle est la valeur de c ?
12.25
Chap. 3 : 6. Conversions de type
16
53
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
4.1 Ecriture formate de donnes : printf()
La fonction printf permet dafficher du texte, des valeurs de variables ou
des rsultats d'expressions sur cran (sortie standard).
Forme gnrale :
printf("<format>", <expr1>, <expr2>, , <exprN>) ;
La partie "<format>" est une chane de caractres qui peut contenir :
du texte
des caractres de contrle (\n , \t , )
des spcificateurs de format.
Chap. 4 : Lire & Ecrire des donnees
54
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
La partie "<format>" contient exactement un spcificateur pour chaque
expression <expr1>, <expr2>, et <exprN>.
Les spcificateurs de format commencent toujours par le symbole %et se
terminent par un ou deux caractres qui indiquent le format d'affichage.
Chap. 4 : Lire & Ecrire des donnees
4.1 Ecriture formate de donnes : printf()
17
55
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
Exemples :
La suite d'instructions :
int a = 1234 ;
int b = 566 ;
printf("%i plus %i est %i\n", a, b, a + b) ;
va afficher sur l'cran :
1234 plus 566 est 1800
La suite d'instructions :
char b = 'A' ; /* le code ASCII de A est 65 */
printf("Le caractre %c a le code %i\n", b, b) ;
va afficher sur l'cran :
Le caractre A a le code 65
Chap. 4 : Lire & Ecrire des donnees
4.1 Ecriture formate de donnes : printf()
56
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
4.2 Lecture formate de donnes : scanf()
scanf lit depuis le clavier (entre standard). Elle fait correspondre les
caractres lus au format indiqu dans la chane de format.
La spcification de formats pour scanf est identique celle de printf, sauf
qu'au lieu de fournir comme arguments des variables scanf, ce sont les
adresses de ces variables que l'on transmet.
L'adresse d'une variable est indique par le nom de la variable prcd du
signe &.
Forme gnrale :
scanf("<format>", <AdrVar1>, <AdrVar2>, , <AdrVarN>)
Chap. 4 : Lire & Ecrire des donnees
18
57
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
Exemples :
int jour, mois, annee ;
scanf("%i %i %i", &jour, &mois, &annee) ;
Cette instruction lit 3 entiers spars par les espaces, tabulations ou
interlignes. Les valeurs sont attribues respectivement aux 3
variables : jour, mois et annee.
int i ;
float x ;
scanf("%d %f", &i, &x) ;
Si lors de l'excution, on entre 48 et 38.3e-1 alors scanf affecte 48 i
et 38.3e-1 x.
Chap. 4 : Lire & Ecrire des donnees
4.2 Lecture formate de donnes : scantf()
58
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
Remarques :
Lors de l'valuation des donnes, scanf s'arrte si la chane de
format a t travaille jusqu' la fin ou si une donne ne
correspond pas au format indiqu.
scanf retourne comme rsultat le nombre d'arguments
correctement reus et affects.
Exemples :
int jour, mois, annee, recu ;
recu = scanf("%i %i %i", &jour, &mois, &annee) ;
Chap. 4 : Lire & Ecrire des donnees
4.2 Lecture formate de donnes : scanf()
19
59
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
4.2 Ecriture dun caractre : putchar()
putchar permet dafficher un caractre sur lcran.
putchar(c) ; est quivalente printf("%c", c) ;
Forme gnrale :
putchar(<caractere>) ;
Elle reoit comme argument la valeur d'un caractre
convertie en entier.
Chap. 4 : Lire & Ecrire des donnees
60
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
Exemples
char a = 63 ;
char b = '\n' ;
int c = '\a' ;
putchar('x') ; /* affiche la lettre x */
putchar('?') ; /* affiche le symbole ? */
putchar(b) ; /" retour a la ligne "/
putchar(65) ; /" allicLe le caractere de code ASCII - 65 c.-a-d. la lettre A "/
putchar(a) ; /" allicLe le caractere de code ASCII - 63 c.-a-d. le symbole : "/
putchar(c) ; /" beep sonore "/
Bemarque :
putchar retourne la valeur du caractre ecrit toujours considere comme un
entier, ou bien la valeur -1 (ECI) en cas d'erreur.
Chap. 4 : Lire & Ecrire des donnees
4.2 Ecriture dun caractre : putchar()
20
61
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
4.2 Lecture dun caractre : getchar()
Permet de lire un caractre depuis le clavier.
c=getchar(c) ; est quivalente scanf("%c",&c) ;
Forme gnrale :
<Caractere> = getchar() ;
Remarques :
getchar retourne le caractre lu (un entier entre 0 et 255), ou bien la valeur -
1 (EOF).
getchar lit les donnes depuis le clavier et fournit les donnes aprs
confirmation par la touche "entre"
Exemple :
int c ;
c = getchar() ; /* attend la saisie d'un caractre au clavier */
Chap. 4 : Lire & Ecrire des donnees
62
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
On appelle structure de contrle toute
instruction qui permet de contrler le
fonctionnement d'un programme.
Parmi les structures de contrle, on
distingue :
structures de choix et
structures rptitives
Chap. 5 : Structures de contrle Structures de contrle
21
63
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
5.1 Structures de choix
Les structures de cLoix permettent de determiner quelles
instructions seront executees et dans quel ordre.
En langage C, les structures de cLoix peuvent etre
exprimees par :
L`instruction de brancLement conditionnels : it.else
l`instruction de brancLement multiple : switch
Chap. 5 : Structures de contrle Structures de contrle
64
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
5.1.1 Branchement conditionnel ( if else)
Format :
if (expression) bloc-instruction-1
else bloc-instruction-2
o
expression : est une expression quelconque. Aprs valuation,
si elle est vraie, alors le 1er bloc d'instructions est excut,
sinon c'est le 2me bloc qui est excut.
bloc d'instructions : peut dsigner une suite d'instructions
dlimites par des accolades ou une seule instruction.
Chap. 5 : Structures de contrle Structures de contrle
5.1 Structures de choix
22
65
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
5.1.1 Branchement conditionnel ( if else)
Remarques :
On notera que l'expression conditionnelle doit tre entre
parenthses.
La partie else est optionnelle :
if (expression) bloc-instruction
Lorsque plusieurs instructions if sont imbriques, il est convenu
que chaque else se rapporte au dernier if qui ne possde pas de
partie else.
Chap. 5 : Structures de contrle Structures de contrle
5.1 Structures de choix
66
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
5.1.1 Branchement conditionnel ( if else)
Exemples :
Calcul du maximum de deux entiers
Teste si un caractre saisie depuis le clavier , est une lettre
majuscule , si oui il affiche cette lettre en minuscule, sinon il
affiche un message derreur.
Rsolution de lquation du second degr : a.x + b.x + c = 0
Chap. 5 : Structures de contrle Structures de contrle
5.1 Structures de choix
23
67
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
5.1.2 Branchement multiple ( switch )
On lappelle aussi l'tnstructtcn d'atgut//agc. E//c teste si une
expression prend une valeur parmi unc suttc dc ccnstantcs, et
ellectue le brancLement correspondant si c'est le cas.
Format :
switch ( expression )

case constante1 : suite d'instructions 1


case constante2 : suite d'instructions 2
...
case constanteM : suite d'instructions M
detault : suite d'instructions

Chap. 5 : Structures de contrle Structures de contrle


5.1 Structures de choix
68
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
5.1.2 Branchement multiple ( switch )
Remarques :
Le fonctionnement de cette instruction est le suivant :
expression est value ;
s'il existe un nonc case avec une constante qui gale la valeur de expression,
le contrle est transfr l'instruction qui suit cet nonc;
si un tel case n'existe pas, et si nonc default existe, alors le contrle est
transfr l'instruction qui suit l'nonc default ;
si la valeur de expression ne correspond aucun nonc case et s'il n'y a pas
d'nonc default, alors aucune instruction n'est excute.
Attention. Lorsqu'il y a branchement russi un case, toutes les instructions
qui le suivent sont excutes, jusqu' la fin du bloc ou jusqu' une
instruction de rupture (break).
Chap. 5 : Structures de contrle Structures de contrle
5.1 Structures de choix
24
69
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
#include <stdio.h>
main()
int a,b ,
char operateur ;
printt("Entrez un operateur (, -, " ou /) : ") ;
scant("%c", &operateur) ;
printt("Entrez deux entiers : ") ;
scant("%d %d", &a,&b) ;
switch (operateur)

case '' : printt("a b - %d\n",ab) ; break ;


case '-' : printt("a - b - %d\n",a-b) ; break ;
case '"' : printt(" a " b - %d\n",a"b) ; break ;
case '/' : printt("a / b - %d\n",a/b) ; break ;
detault : printt("operateur inconnu\n") ; break ;

return 0 ;

Exemples :
Chap. 5 : Structures de contrle Structures de contrle
5.1 Structures de choix 5.1.2 Branchement multiple ( switch )
Soit le code C suivant :
int i , |,
. //initialisation de i
| = 0,
switch (i)

case 3: |,
case 2: |,
case 1: |,

Si on suppose que i ne peut


prendre que les valeurs 0 ... 3.
Que tait ce programme?
70
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
5.2 Structures rptitives ( Boucles )
Les structures repetitives (ou Boucles) permettent de
repeter une serie d`instructions tant qu`une certaine
condition reste vraie.
Cn appelle parlois ces structures instructions d`iterations.
En langage C, les structures repetitives peuvent etre
exprimees par :
les instructions wLile et do . wLile
l`instruction lor
Chap. 5 : Structures de contrle Structures de contrle
25
71
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
5.2.1 while et do while
Les instructions while et do while reprsentent un moyen d'excuter
plusieurs fois la mme srie d'instructions.
La syntaxe :
Dans la structure while on vrifie la condition avant dexcuter la liste
dinstructions, tandis que dans la structure do while on excute la liste
dinstructions avant de vrifier la condition
Chap. 5 : Structures de contrle Structures de contrle
while ( condition )
{
liste d'instructions
}
do

liste d'instructions

while ( condition );
72
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
5.2.1 while et do while
Exemples
Chap. 5 : Structures de contrle Structures de contrle
1. Programme pour imprimer les
entiers de 1 a 9.
i = 1,
while (i < 10)

printt("\n i = %d",i),
i,

2. Programme pour saisir au clavier un entier


entre 1 et 10 :
int a,
do

printt("\n Entrez un entier entre 1 et 10 : "),


scant("%d",&a),

while ((a <= 0) || (a > 10)),


26
73
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
5.2.1 for
A linstar des instructions while et do while, linstruction
for permet d'excuter plusieurs fois la mme srie d'instructions.
La syntaxe de for est :
Dans la construction de for :
expression1 : effectue les initialisations ncessaires avant lentre dans la
boucle;
expression2 : est le test de continuation de la boucle ; le test est valu avant
lexcution du corps de la boucle;
expression3 : est value la fin du corps de la boucle.
Chap. 5 : Structures de contrle Structures de contrle
for ( expression1 ; expression2 ; expression3 )
{
liste d'instructions
}
74
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
5.2.1 for
Remarques
En pratique, expression1 et expression3 contiennent souvent
plusieurs initialisations separees par des virgules.
Les expressions 1 et 3 peuvent etre
absentes (les points-virgules doivent cependant apparatre).
Par exemple : lor ( ; 2 ; )
Lorsque expression2 est absente, l'expression correspondante
est consideree comme vraie. Par consequent, tor ( ; ; ) est une
boucle inlinie.
Chap. 5 : Structures de contrle Structures de contrle
27
75
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
5.2.1 for
Remarques(suite)
Par delinition, la construction de lor
est equivaut strtctcmcnt a celle-ci :
Chap. 5 : Structures de contrle Structures de contrle
expression1,
while (expression2)

liste instructions;
expression3,

for ( expression1 ; expression2 ; expression3 )


{
liste d'instructions
}
76
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
5.2.1 for
Exemples
Chap. 5 : Structures de contrle Structures de contrle
1. Programme pour calculer la somme de 1 a 100 :
int n, total ,
tor ( total = 0, n = 1 , n<101 , n )
total = n ,
printt("La somme des nombres de 1 a 100 est %d\n", total) ,
2. Programme pour calculer la tactorielle d'un entier n :
int n , i , tact ,
tor ( i = 1, tact = 1 , i <= n , i)
tact "= i,
printt("%d ! = %d \n",n,tact),
28
77
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
5.3 Instructions break et continue
5.3.1 linstruction break
On a vu le rle de l'instruction break; au sein d'une instruction de
branchement multiple switch.
L'instruction break peut, plus gnralement, tre employe
l'intrieur de n'importe quelle boucle (for ; while ; do while ;
switch). Elle permet labandon de la structure et le passage la
premire instruction qui suit la structure.
En cas de boucles imbriques, break fait sortir de la boucle la plus
interne.
Chap. 5 : Structures de contrle Structures de contrle
78
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
Exemples (break)
Chap. 5 : Structures de contrle Structures de contrle
5.3 Instructions break et continue 5.3.1 linstruction break
1. Que fait ce programme?
for ( ; ; )
{
printf("donne un nombre (0 pour sortir) : ");
scanf("%d", &n);
if (n == 0) break;
...
exploitation de la donne n
...
}
2. Que fait ce programme?
#include <stdio.h>
int main( )
{
int i, j ;
for (i = 1 ; i<=15 ; i++)
{
for (j = 1 ; j<=15 ; j++)
{
if (j = = 5) break ;
printf("%d\t", i * j) ;
}
printf("\n") ;
}
return 0 ;
}
29
79
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
5.3 Instructions break et continue
5.3.1 linstruction continue
L'instruction continue peut tre employe l'intrieur
dune structure de type boucle (for ; while ; do while ).
Elle produit labandon de litration courante et fait
passer directement litration suivante dune boucle
Linstruction continue concerne la boucle la plus proche.
Chap. 5 : Structures de contrle Structures de contrle
80
M. Benchrifa : cours du langage C :
Filire SMI : Semestre 3 : 2006/2007
Exemple (continue)
Chap. 5 : Structures de contrle Structures de contrle
5.3 Instructions break et continue 5.3.2 linstruction continue
1. Que fait ce programme?
int main()

int i, | ,
... //initialisation de i et |
tor ( , i>0 && |>0 , i--, |-- )

it ( i == 5 ) continue ,
printt("i : %d et | : %d\n, i, |) ,
it ( | == 5 )
break ,

return 0 ,

S-ar putea să vă placă și