Vous êtes sur la page 1sur 46

Université Abdelmalek Essaadi

Faculté des Sciences et Techniques d’Al Hoceima


Département de Mathématiques et Informatique
Filière TC MIP S1

Support de cours

Algorithmique et programmation 1

Réalisé par : Pr. FAHIM Mohamed


{fahim.mohamed89@gmail.com/mfahim@uae.ac.ma}

Année universitaire
2020/2021
TABLE DES MATIÈRES

1 Généralités sur les systèmes de numération 1


1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 les systèmes de numération . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2 Système binaire (base 2) . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2.1 Conversion : Binaire ⇒ Décimal . . . . . . . . . . . . 3
1.2.2.2 Conversion : Décimal ⇒Binaire . . . . . . . . . . . . . 3
1.2.3 Le système octal : base 8 . . . . . . . . . . . . . . . . . . . . . 4
1.2.3.1 Conversion : Octal ⇒Binaire . . . . . . . . . . . . . . 4
1.2.3.2 Conversion : Binaire ⇒Octal . . . . . . . . . . . . . . 5
1.2.4 Système hexadécimal : Base (16) . . . . . . . . . . . . . . . . . 5
1.2.4.1 Conversion : hexadécimal ⇒binaire . . . . . . . . . . . 6
1.2.4.2 Conversion : binaire ⇒hexadécimal . . . . . . . . . . . 7
1.3 Codage de l’information binaire : . . . . . . . . . . . . . . . . . . . . . 7
1.3.1 Le code binaire naturel (pur) : . . . . . . . . . . . . . . . . . . . 7
1.3.2 Le code GRAY (code binaire réfléchi) : . . . . . . . . . . . . . . 8
1.3.3 Le code BCD (Binary Coded Decimal ) : . . . . . . . . . . . . . 9
1.3.4 Le code ASCII : . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3.5 Unicode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.4 Notions d’arithmetique binaire : . . . . . . . . . . . . . . . . . . . . . . 11
1.4.1 Cas de l’addition et la soustraction : . . . . . . . . . . . . . . . 11
1.5 Représentation des nombres : . . . . . . . . . . . . . . . . . . . . . . . 11
1.5.1 Représentation par valeur absolue et signe : . . . . . . . . . . . 11
1.5.2 Représentation par complément à 2 : . . . . . . . . . . . . . . . 12
1.6 Composants d’un ordinateur . . . . . . . . . . . . . . . . . . . . . . . . 13
1.6.1 Unité centrale : . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.6.2 Caractéristiques techniques : . . . . . . . . . . . . . . . . . . . . 16

2 Éléments de base d’un algorithme et leurs représentations en langage


C 22
2.1 Algorithme : Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1.1 Pourquoi un cours d’algorithmique ? . . . . . . . . . . . . . . . . 25
2.1.2 Résolution informatique d’un problème . . . . . . . . . . . . . 25
2.1.3 Langages de programmation . . . . . . . . . . . . . . . . . . . 26
2.1.4 Le langage C . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2 les composants elementaires d’un algorithme et d’un programme en c . 27
2.2.1 Composants élémentaires d’un algorithme . . . . . . . . . . . . 27
2.2.1.1 Variables et constantes (Algorithme) . . . . . . . . . . 27
2.2.1.2 L’affectation (Algorithme) . . . . . . . . . . . . . . . . 28
2.2.1.3 La lecture (Algorithme) . . . . . . . . . . . . . . . . . 30
2.2.1.4 L’ écriture (Algorithme) . . . . . . . . . . . . . . . . . 30
2.2.1.5 Expressions arithmétiques (Algorithme) . . . . . . . . 30
2.2.1.6 Commentaires (Algorithme ) . . . . . . . . . . . . . . 32
2.2.2 Etapes à suivre pour rédiger un algorithme . . . . . . . . . . . . 33
2.3 Composants élémentaires d’un programme C . . . . . . . . . . . . . . . 34
2.3.1 Variables et constantes (langage C) . . . . . . . . . . . . . . . . 34
2.3.2 L’affectation (Langage C) . . . . . . . . . . . . . . . . . . . . . 36
2.3.3 L’écriture (Langage C) . . . . . . . . . . . . . . . . . . . . . . . 37
2.3.4 La lecture (Langage C) . . . . . . . . . . . . . . . . . . . . . . . 39
2.3.5 Opérateurs standards (Langage C) . . . . . . . . . . . . . . . . 41
CHAPITRE 1

GÉNÉRALITÉS SUR LES SYSTÈMES


DE NUMÉRATION

1.1 Introduction

L a création de la numération est un des faits les plus marquants de l’histoire de


l’humanité. Si la plupart des civilisations ont adopté le système décimal, c’est qu’il
a toujours été naturel de compter sur ses doigts.
La numération arabe est universellement adoptée, étant donné sa capacité à faire
les calculs. Il s’agit de représenter les nombres en utilisant dix symboles différents : { 0
, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9}
Ce système est appelé le système décimal (déci signifie dix).
B Développement en polynôme d’un nombre dans le système décimal :
Soit le nombre 7213 , ce nombre peut être écrit sous la forme suivante :
7213 = 7 ∗ 103 + 2 ∗ 102 + 1 ∗ 101 + 3 ∗ 100
Cette forma s’appelle la forme polynomiale
Un nombre réel peut être écrit aussi sous la forme polynomiale :
7213, 987 = 7 ∗ 103 + 2 ∗ 102 + 1 ∗ 101 + 3 ∗ 100 + 9 ∗ 10−1 + 8 ∗ 10−2 + 7 ∗ 10−3
Le système décimal est malheureusement difficile à adapter au mécanisme numé-
rique, car il est difficile de concevoir du matériel électronique fonctionnant sur dix
plages de tensions différentes.

1
1.2. LES SYSTÈMES DE NUMÉRATION

1.2 les systèmes de numération


1.2.1 Principe
D’une façon générale, soit une base B, donc associée à B symboles : {S0 , S1 , . . . , SB−1 } ;
un nombre N, a les caractéristiques suivantes :
• N = An−1 . . . Ai . . . A1 A0 avec Ai ∈ {S0 , S1 , . . . , SB−1 } ;
• Il a pour valeur N = An−1 .B n−1 +. . . +Ai B i +. . . +A1 B 1 +A0 B 0 (forme polymoniale) ;
• Ai est le chiffre (digit) de rang i et de poids B i ;
• An est le chiffre le plus significatif (MSD : Most Significant Digit) ;
• A0 est le chiffre le moins significatif (LSD : Less Significant Digit).
On va étudier les bases 2, 8 et 16 pour leur intérêt dans les circuits logiques. La
référence à la base 10 est d’un usage pratique, on étudiera alors la conversion de la base
2 vers la base 10 et vise versa.

1.2.2 Système binaire (base 2)


L’homme connaît la base 10 ; il fait alors ses calculs dans cette base. Alors, puisque
les systèmes numériques ne reconnaissent que 2 états 0 ou 1, ils seront très aptes de
faire les calculs dans la base 2. La base 2 a les caractéristiques suivantes :
• Un nombre N s’écrit : N = An An−1 . . . Ai . . . A1 A0 avec Ai ∈ {0, 1} ; chaque chiffre est
appelé couramment bit, contraction de binary digit (chiffre binaire) ; Ce nombre
N est couramment désigné aussi par "Mot de n bits" ;
• An est le chiffre le plus significatif, couramment appelé MSB (Most Significant Bit)
• A0 est le chiffre le moins significatif, couramment appelé LSB (Less Significant Bit)
• Ce nombre a pour valeur N = An−1 2n−1 + . . . + Ai 2i + . . . + A1 21 + A0 20 (forme
polymoniale)
Exemple :
N = 110101 ; il a pour valeur N = 1 ∗ 25 + 1 ∗ 24 + 0 ∗ 23 + 1 ∗ 22 + 0 ∗ 21 + 1 ∗ 20 .
I Les multiples des unités dans le système binaire :
Le bit (0 ou 1) est la plus petite unité d’information manipulable par une machine
numérique. L’octet est une unité composée de huit bits. Il permet de stocker un carac-
tère tel qu’une lettre ou une unité. On a ainsi :

-2-
1.2. LES SYSTÈMES DE NUMÉRATION

1.2.2.1 Conversion : Binaire ⇒ Décimal

On exploite directement la forme polynomiale.


Exemple :
(1011)2 = 1 ∗ 23 + 0 ∗ 22 + 1 ∗ 21 + 1 ∗ 20 = 8 + 0 + 2 + 1 = 8 + 3 = (11)10 .

1.2.2.2 Conversion : Décimal ⇒Binaire

La méthode de division est la plus utilisée ; elle consiste en des divisions successives
du nombre (N )10 par 2, jusqu’à obtenir un quotient nul. Les restes des divisions suc-
cessives, écrits dans l’ordre inverse, constituent le nombre N dans la base 2 (N )2 .
Exemple :
(230)10 = (?)2

Autre méthode :
Cette deuxième méthode consiste à décomposer le nombre en puissances de 2, C’est le
même principe que la décomposition en puissances de dix, sauf que l’on ne décompose
pas en milliers, centaines et dizaines, mais en puissances de deux ; qui sont : 1, 2, 4, 8,
16, 32, 64 . . . , 512, 1024, etc

... 210 29 28 27 26 25 24 23 22 21 20
... 1024 512 256 128 64 32 16 8 4 2 1

Ainsi, si l’on prend l’exemple du nombre 230, on obtient la décomposition suivante :


230= 128+64+32+4+2
Il suffit ensuite de remplacer les cases correspondantes à ces puissances par "1", et le
reste des cases par "0".

-3-
1.2. LES SYSTÈMES DE NUMÉRATION

Finalement, on obtient le tableau ci-dessous :

... 210 29 28 27 26 25 24 23 22 21 20
... 1024 512 256 128 64 32 16 8 4 2 1
... 0 0 0 1 1 1 0 0 1 1 0

Alors : (230)10 = (00011100110)2

1.2.3 Le système octal : base 8


Le système de numérotation en octal est un système à base 8. Cela signifie qu’avec
cette base on compte de 0 à 7, contrairement au décimal où l’ont compte de 0 à 9.
Exemple :

(127)8 = 1 ∗ 82 + 2 ∗ 81 + 7 ∗ 80 = (87)10
(127, 65)8 = 1 ∗ 82 + 2 ∗ 81 + 7 ∗ 80 + 6 ∗ 8−1 + 5 ∗ 8−2

1.2.3.1 Conversion : Octal ⇒Binaire

En octal chaque, symbole de la base s’écrit sur 3 bits en binaire. L’idée de base est
de remplacer chaque symbole dans la base octal par sa valeur en binaire sur 3 bits (
faire des éclatement sur 3 bits ).
Exemple :

Octale Binaire

(345)8 = (011 100 |{z}


101)2 0 000
1 001
|{z} |{z}

(65, 76)8 = (110 101, |{z}


111 |{z}
110)2 2 010
3 011
|{z} |{z}

(35, 34)8 = (011 101, |{z}


011 |{z}
100)2 4 100
5 101
|{z} |{z}

6 110
7 111
Remarque :
le remplacement se fait de droit à gauche pour la partie entière et de gauche à droite
pour la partie fractionnelle

-4-
1.2. LES SYSTÈMES DE NUMÉRATION

1.2.3.2 Conversion : Binaire ⇒Octal

L’idée de base est de faire des regroupements de 3 bits à partir du poids faible. Par
la suite remplacer chaque regroupement par la valeur octal correspondante .
Exemples :

(110010110)2 = (110 010 |{z}


|{z} |{z} 110)2 = (626)8

(110010100, 110101)2 = (110 010 |{z}


|{z} |{z} 100, |{z}
110 |{z}
101) = (624, 65)8

Remarques :
• Le regroupement se fait de droit à gauche pour la partie entière et de gauche à droite
pour la partie fractionnelle.
• Il faut ajoutez des 0 sur la gauche de la partie entière (et à droite de la partie
fractionnelle )après le dernier chiffre si vous n’en avez pas assez pour finir le
regroupement à trois.
Exemple :

(10011011)2 = (010 011 |{z}


|{z} |{z} 011)2 = (233)8

1.2.4 Système hexadécimal : Base (16)


Ce système de numération est très utilisé dans les systèmes ordinateurs et micro
ordinateurs ainsi que dans le domaine des transmissions de données. Il comporte 16
symboles les chiffres de 0 à 9 et les lettres {A,B,C,D,E,F}

-5-
1.2. LES SYSTÈMES DE NUMÉRATION

Décimal Hexadécimal Binaire


0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
10 A 1010
11 B 1011
12 C 1100
13 D 1101
14 E 1110
15 F 1111

Exemples :

(17)16 = 1 ∗ 161 + 7 ∗ 160 = 16 + 7 = (23)10

(AB)16 = A ∗ 161 + B ∗ 160 = 10 ∗ 161 + 11 ∗ 160 = 160 + 11 = (171)10

1.2.4.1 Conversion : hexadécimal ⇒binaire

En Hexa chaque symbole de la base s’écrit sur 4 bits. L’idée de base est de remplacer
chaque symbole par sa valeur en binaire sur 4 bits ( faire des éclatement sur 4 bits ).
Exemple :



 (3)16 = (0011)2

 (4) = (0100)

16 2
(345B)16 = | {z } 0100
= (0011 | {z } 0101
| {z } 1011
| {z })2 = (0011010001011011)2
 (5)16 = (0101)2



(B)16 = (1011)2

-6-
1.3. CODAGE DE L’INFORMATION BINAIRE :





(A)16 = (1010)2




 (B)16 = (1011)2

(3)16 = (0011)2


(AB3, 4F 6)16 = | {z } 1011
= (1010 | {z } 0011
| {z }, 0100
| {z } 1111
| {z } 0110
| {z })2


 (4)16 = (0100)2

(F )16 = (1111)2






(6)16 = (0110)2

1.2.4.2 Conversion : binaire ⇒hexadécimal

L’idée de base est de faire des regroupements de 4 bits à partir du poids faible. Par
la suite remplacer chaque regroupement par la valeur Héxa correspondante.
Exemples :

(11001010100110)2 = (0011
| {z } 0010
| {z } 1010
| {z } 0110
| {z })2 = (32A6)16

| {z } 1001
(110010100, 10101)2 = (0001 | {z } 0100
| {z }, 1010
| {z } 1000
| {z })2 = (194, A8)16

1.3 Codage de l’information binaire :


Un système électronique traite les informations en binaire. Or, ces informations à
traiter sont de différentes natures. Par exemple, en traitement de texte, on manipule des
caractères ; pour qu’un ordinateur traite ces caractères, il faut associer alors à chaque
caractère un nombre binaire. Cette association s’appelle "Codage" de l’information bi-
naire et permet d’utiliser plusieurs codes suivant le domaine d’application. L’opération
inverse s’appelle "Décodage" ou "Transcodage". On étudie en particulier : Le code
binaire naturel, le code GRAY, le code BCD et le code ASCII.

1.3.1 Le code binaire naturel (pur) :


Il est aussi appelé code binaire naturel. C’est le code binaire sans aucune mo-
dification, c’est-à-dire qui découle directement du principe général de la numération.
Le codage binaire naturel est utilisé par exemple dans les adresses IP (Internet Pro-
tocol) version 4 (notées IPv4) pour identifier le réseau auquel appartient un ordinateur.
Le tableau suivant donne le code binaire pur pour un exemple d’un mot de 4 bits :

-7-
1.3. CODAGE DE L’INFORMATION BINAIRE :

Code binaire Équivalent décimal


0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 10
1011 11
1100 12
1101 13
1110 14
1111 15

1.3.2 Le code GRAY (code binaire réfléchi) :


En code binaire pur, le passage d’un nombre au nombre suivant se traduit par un
changement de un ou plusieurs bits. Le passage de 3 à 4 en décimal donne en binaire 011
à 100. Les trois bits changent simultanément. Cela présente parfois des inconvénients,
notamment dans le cas des capteurs - codeurs (de position par exemple), où l’utilisation
du code binaire pur peut amener la lecture de codes erronés au moment des transitions
d’une position à la suivante.
Pour éviter cet inconvénient, on utilise le code GRAY qui est un code binaire
réfléchi dans lequel un seul bit change d’état au changement d’un nombre au nombre
suivant.

-8-
1.3. CODAGE DE L’INFORMATION BINAIRE :

Décimal Binaire Gray


0 0000 0000
1 0001 0001
2 0010 0011
3 0011 0010
4 0100 0110
5 0101 0111
6 0110 0101
7 0111 0100
8 1000 1100
9 1001 1101
10 1010 1111
11 1011 1110
12 1100 1010
13 1101 1011
14 1110 1001
15 1111 1000

1.3.3 Le code BCD (Binary Coded Decimal ) :


Le code BCD ( Binary Coded Decimal ) qui veut dire : Binaire Codé en Décimal,
conserve les avantages du système binaire naturel et du système décimal. Chaque chiffre
du code décimal est représenté par un quartet binaire, mais on compte en base 10,
ce qui veut dire que la valeur la plus élevée dans un quartet est (9)10 = (1001)2 . Alors,
si on a un nombre décimal N à m chiffres, il sera codé en BCD sur (m*4) bits : chaque
chiffre décimal est traduit en code BCD sur 4 bits.
Exemple 1 :

(571)10 = (1000111011)2 ←− En binaire pur


| {z } 0111
= 0101 | {z } ←− En BCD
| {z } 0001

Exemple 2 :

(10010001100001100010)BCD = (?)10
= (91862)10

-9-
1.3. CODAGE DE L’INFORMATION BINAIRE :

1.3.4 Le code ASCII :


Le code ASCII (American Standard Code for Information Interchange) est un
code qui représente les caractères éditables ou non éditables : éditables parce que l’on
peut les éditer comme le caractère "A" et non éditables comme le cratère "Escape" ou
"Return". Il est codé sur 7 bits (b6 b5 b4 b3 b2 b1 b0), ce qui permet de représenter
128 (27 ) caractères différents. La table suivante montre un tel codage :

Figure 1.1 – La table du code ASCII (7 bits)

Par exemple, Le code de la lettre "A" (majuscule) est :


• En binaire : b6 b5 b4 b3 b2 b1 b0 = 1000001 ;
• En hexadécimal 41 ;
• En décimal 65.

1.3.5 Unicode
Le code Unicode est un système de codage des caractères sur 16 bits. Le système
Unicode permet de représenter n’importe quel caractère par un code sur 16 bits, indé-
pendamment de tout système d’exploitation ou langage de programmation. Il regroupe
ainsi la quasi-totalité des alphabets existants (arabe, arménien, latin, ...)

-10-
1.4. NOTIONS D’ARITHMETIQUE BINAIRE :

1.4 Notions d’arithmetique binaire :


On peut faire des calculs arithmétiques, puisqu’on a les mêmes règles de calcul qui
s’appliquent à toutes les bases.

1.4.1 Cas de l’addition et la soustraction :

(a) addition (b) soustraction

Figure 1.2 – Exemple d’opérations arithmetiques binaires

Des circuits logiques simples réalisent ces opérations ; de plus une soustraction est
facilement ramenée à une addition grâce à une représentation adéquate des nombres.

1.5 Représentation des nombres :


Dans les calculs, on manipule des nombres positifs et négatifs ; il faut alors coder le
signe algébrique. Plusieurs modes de représentation sont adoptés en fonction des calculs
à effectuer et les caractéristiques technologiques des systèmes de traitement.

1.5.1 Représentation par valeur absolue et signe :


Pour le bit de signe, on adopte la convention 0 (+) et 1 (-). Par exemple :

(+35)10 = 0 100011 et (-35)10 = 1 100011.

Cette solution a comme inconvénient la complexité de la réalisation technologique


due à :

-11-
1.5. REPRÉSENTATION DES NOMBRES :

• Un traitement spécifique du signe ;


• Une double représentation du 0.

1.5.2 Représentation par complément à 2 :


Soit un nombre binaire A sur n bits et son complément A (nommé aussi complément
à 1 de A ), on a :

A + A = 2n − 1
On déduit de cette relation que : −A = A + 1 − 2n

Comme le (2n ) ne rentre pas dans le format défini (An−1 An−2 . . . A1 A0 ), il sera ignoré.
On a alors −A = A + 1

Le terme (A + 1) s’identifie donc à l’opposé arithmétique de A

Le terme (A + 1) est appelé complément à 2.


Exemple :
Pour n = 4, on obtient :

A10 A A (A + 1) −A10
0 0000 1111 0000 0
1 0001 1110 1111 -1
2 0010 1101 1110 -2
3 0011 1100 1101 -3
4 0100 1011 1100 -4
5 0101 1010 1011 -5
6 0110 1001 1010 -6
7 0111 1000 1001 -7

On remarque que :
• Le MSB représente le signe avec 0 (+) et 1 (-).
• Le zéro n’a qu’une seule représentation ;
• Alors pour effectuer une soustraction, il suffit de faire une addition avec le complément
à 2. Le résultat se lit directement en complément à 2 :
• Si le signe est + la lecture est directe ;

-12-
1.6. COMPOSANTS D’UN ORDINATEUR

• Si le signe est - , on convertit le résultat en recherchant le complément à 2 de


celui-ci.

1.6 Composants d’un ordinateur


Un ordinateur est constitué essentiellement d’une unité centrale, écran, clavier et
souris

Figure 1.3 – Composants d’un ordinateur

Le schéma suivant présente les organes internes et externes d’un ordinateur :

-13-
1.6. COMPOSANTS D’UN ORDINATEUR

Figure 1.4 – les organes internes et externes d’un ordinateur

L’architecture, dite architecture de Von Neumann décompose l’ordinateur en quatre


parties distinctes : le processeur, la mémoire volatile ou RAM (Random Access Me-
mory), la mémoire permanente ou ROM (Read Only Memory) et les dispositifs d’entrée-
sortie, qui permettent de communiquer avec le monde extérieur. Il existe 3 bus dans
cette architecture : un bus de données, un bus d’adresses et un bus de contrôle.
Le microprocesseur (CPU) est composé par :
• Une Unité Arithmétique et Logique (UAL ou ALU)
• Les registres
• Une unité de contrôle (UC ou CU)
Le schéma suivant représente architecture de Von Neumann :

-14-
1.6. COMPOSANTS D’UN ORDINATEUR

Figure 1.5 – Architecture de Von Neumann

1.6.1 Unité centrale :


L’unité centrale permet de traiter les informations d’une manière automatique. Elle
regroupe plusieurs composants comme montre la figure suivante :

-15-
1.6. COMPOSANTS D’UN ORDINATEUR

Figure 1.6 – Unité centrale

Une unité centrale de traitement est composée de 3 blocs :


• Une alimentation qui permet réduire la tension du secteur, en une faible tension,
adaptée aux circuits internes de l’unité centrale ;
• Une carte mère qui contient les circuits nécessaires aux traitements des informations.
• Les disques de sauvegardes (appelées aussi mémoires de masse) qui permettent de
stocker des grandes quantités d’informations pour une longue durée.

1.6.2 Caractéristiques techniques :


I La carte mère
La carte mère qui relie tous les éléments constituant un ordinateur. La principale
fonction d’une carte mère est la mise en relation de ces composants par des bus sous
forme de circuits imprimés. Elle comporte notamment des emplacements (ou "slots
"), prévus pour accepter différents types de composants. Il y a par exemple un ou
plusieurs emplacements prévus pour le(s) processeur(s), pour les barrettes mémoire, et
des emplacements génériques pour les périphériques

-16-
1.6. COMPOSANTS D’UN ORDINATEUR

Figure 1.7 – Carte mère

I Processeur
Le processeur ou microprocesseur est aussi appelé CPU Central Processing (Unit
l’unité centrale de traitement). C’est le "cerveau " de l’ordinateur. Son rôle est le trai-
tement de l’information numérique et il ne communique qu’en chiffres binaires ou Bits.
Il fait ainsi les calculs nécessaires à l’exécution des programmes et instructions à une
vitesse en partie déterminée par sa fréquence exprimée en Hertz ou plutôt, dans le cas
des processeurs actuels, en Giga Hertz (GHz).

Figure 1.8 – Exemple d’un processeur

L’agitation du processeur provoque une élévation de sa température, en particulier


lors du traitement d’une grosse masse d’informations. C’est pourquoi il est surmonté
d’un ventilateur chargé de dissiper la chaleur et de le maintenir à la température la plus
basse possible.

-17-
1.6. COMPOSANTS D’UN ORDINATEUR

Figure 1.9 – Exemple d’un ventilateur

I Mémoire RAM
La mémoire de type RAM (Random Access Memory ) est utilisée par le processeur
qui y place les données le temps de leur traitement. L’un des avantages de la mémoire
équipant les ordinateurs est justement sa rapidité d’accès.
Une autre particularité de la mémoire RAM est d’être temporaire, une fois l’opération
terminée, les données ne sont pas conservées et sont de toute façon définitivement
perdues une fois l’ordinateur éteint

Figure 1.10 – Exepmle d’une RAM

I Mémoire ROM
La ROM (Read-Only Memory), appelée aussi mémoire morte est la mémoire interne
d’un ordinateur, contenant des données qui, en principe, peuvent être lues mais pas
modifiées. La mémoire morte renferme le programme qui permet de démarrer ou "
initialiser" l’ordinateur chaque fois que vous le mettez sous tension. Contrairement aux

-18-
1.6. COMPOSANTS D’UN ORDINATEUR

données contenues en mémoire vive (RAM), celles de la mémoire morte ne sont pas
perdues lorsque l’ordinateur est éteint. La mémoire morte est alimentée par une petite
batterie de longue durée.
Il existe plusieurs types de ROM qui possèdent des caractéristiques distinctes :PROM,
EPROM ,UVPROM, etc.

Figure 1.11 – Exemple d’une ROM

I Le disque dur
Le disque dur est l’un des principaux composants d’un ordinateur. Le disque dur
contient le système d’exploitation (Windows par exemple), vos programmes installés
ainsi que vos données personnelles.
Il est relié à la carte mère grâce à une nappe (câble plat) de type IDE ou grâce aux
interfaces SATA (Serial ATA) ou SCSI. Les disques durs aujourd’hui, peuvent contenir
des centaines de Giga-octets de données.

-19-
1.6. COMPOSANTS D’UN ORDINATEUR

Figure 1.12 – Vue de l’intérieur d’un disque dur

Plus récemment, les disques SSD (Solid State Drive) se sont démocratisés, sans
pièce mécanique, et capable de lire et écrire des données beaucoup plus rapidement.
Ces derniers sont bien évidemment plus chers.
I Le bus
Les bus, systèmes de communication entre les composants d’un ordinateur. Ils per-
mettent de connecter les différentes parties fonctionnelles de cet ordinateur entre elles.
I Carte graphique
Une carte graphique permet de produire une image affichable sur un écran d’ordina-
teur. La carte graphique peut être intégrée à la carte mère ou dédiée, c’est-à-dire qu’elle
est séparée et qu’elle dispose de sa propre mémoire vive. Une carte graphique dédiée
est plus puissante, mais coute plus cher. Elle permet de faire fonctionner correctement
des jeux en 3D, des logiciels de retouche vidéo/photo par exemple.

-20-
1.6. COMPOSANTS D’UN ORDINATEUR

Figure 1.13 – Exmple d’une carte graphique

I Les connecteurs
Les connecteurs permettent de relier l’unité centrale, aux différentes périphériques
externe (clavier, souris, . . . )

Figure 1.14 – Les connecteurs

-21-
CHAPITRE 2

ÉLÉMENTS DE BASE D’UN


ALGORITHME ET LEURS
REPRÉSENTATIONS EN LANGAGE C

2.1 Algorithme : Généralités


L’algorithmique est un terme d’origine arabe, hommage à Al Khawarizmi (780-850)
auteur d’un ouvrage décrivant des méthodes de calculs algébriques.
Un algorithme est un ensemble de règles opératoires rigoureuses, ordonnant à un pro-
cesseur d’exécuter dans un ordre déterminé une succession d’opérations élémentaires,
pour résoudre un problème donné. C’est un outil méthodologique général qui ne doit
pas être confondu avec le programme proprement dit.
Un algorithme peut être :
1. Représenté graphiquement par un organigramme.
2. Écrit sous forme littérale avec un langage algorithmique.
I Forme graphique (Algorigramme)
La représentation graphique permet une lecture aisée des algorithmes mais présente
toutefois l’inconvénient de consommer une place importante. Les opérations dans un
organigramme sont représentées par les symboles dont les formes sont normalisées. Ces
symboles sont reliés entre eux par des lignes fléchées qui indiquent le chemin. C’est ainsi
qu’on a :

22
2.1. ALGORITHME : GÉNÉRALITÉS

• Début / Fin • Processus / Instruction • Connecteur / Flèche

• Lecture et l’affichage • Décision


• Commentaire

I La structure d’un algorithme


Un algorithme a à peu près toujours la même organisation générale. Trois grandes
parties se distinguent :
1. L’en-tête de l’algorithme
2. Partie déclaration
3. Le corps de l’algorithme :partie traitement

Figure 2.1 – Structure d’un algorithme

Exemple : Créer un algorithme pour calculer la moyenne de 3 notes

-23-
2.1. ALGORITHME : GÉNÉRALITÉS

I Forme littérale
Algorithme 1 : moyenne

Variables : note1, note2, note3 : entier


moyenne : réel
début
Ecrire (entrer les notes) ;
Lire (note1, note2, note3) ;
moyenne ←(note1+note2+note3)/3 ;
Ecrire (la moyenne est : moyenne) ;
fin

I Forme graphique

Figure 2.2 – Forme graphique de l’algorithme " moyenne"

-24-
2.1. ALGORITHME : GÉNÉRALITÉS

2.1.1 Pourquoi un cours d’algorithmique ?


• Pour proposer à la " machine" d’effectuer un travail à notre place.
• Problème ! : expliquer à la machine comment elle doit le faire.
• Besoins :
◦ Savoir expliquer et formaliser son problème
◦ Concevoir et écrire des algorithmes (séquence d’instructions qui décrit com-
ment résoudre un problème particulier)

2.1.2 Résolution informatique d’un problème


La résolution informatique d’un tel problème comporte :

Figure 2.3 – Résolution informatique d’un problème

I Phase 1 : Analyse du problème


• Description des données connues et des résultats cherchés.
• Identifier les relations entre les données.
• Décrire les traitements à effectuer.
• On dispose d’un processus informatique de résolution : algorithme.
I Phase 2 : Traduction de l’algorithme
• Elle permet la mise en pratique de processus informatique de résolution par
la traduction de l’algorithme dans un langage compréhensible par l’ordi-
nateur : langage de programmation.

-25-
2.1. ALGORITHME : GÉNÉRALITÉS

I Phase 3 : Exécution

• C’est le processus par lequel un ordinateur ou une machine virtuelle met en


œuvre les instructions d’un programme.

Exemple :

2.1.3 Langages de programmation


Un programme est un ensemble d’instructions (ordres machines) qui aboutissent à
l’exécution d’un traitement souhaité.
• Langage machine : c’est un langage de programmation qui utilise des instructions
machine (instruction directement exécutée par l’unité de traitement (processeur)).
Chaque unité de traitement possède un catalogue d’instructions machine.
• Assembleur : c’est un langage qui utilise des mots clés en langage pseudo-naturel
pour remplacer les codifications utilisées dans les langages machine.
• Langage évolué : apporte une simplification au niveau de la programmation en
intégrant des instructions qui se rapprochent du langage naturel et scientifique.
Exemples : Fortran, Cobol, Basic, Pascal, C, . . .
Le langage C est étudié dans ce cours en raison de son importance et son historique.

2.1.4 Le langage C
Le langage C a été con¸cu en 1972 par Dennis Richie et Ken Thompson, chercheurs
aux Bell Labs, afin de développer un sysème d’exploitation UNIX . En 1978, Brian
Kernighan et Dennis Richie publient la définition classique du C dans le livre The C
Programming language 1 .Le C devenant de plus en plus populaire dans les années 80,
plusieurs groupes mirent sur le marché des compilateurs comportant des extensions
particulières. Actuellement, de nombreux langages plus modernes comme C++, C],
Java et PHP ou Javascript ont repris une syntaxe similaire au C et reprennent en partie
sa logique. C offre au développeur une marge de contrôle importante sur la machine
(notamment sur la gestion de la mémoire).

1. Kernighan (B.W.) et Richie (D.M.). – The C programming language. – Prentice Hall, 1988,
seconde edition.

-26-
2.2. LES COMPOSANTS ELEMENTAIRES D’UN ALGORITHME ET D’UN PROGRAMME EN C

2.2 les composants elementaires d’un algorithme et


d’un programme en c
2.2.1 Composants élémentaires d’un algorithme
2.2.1.1 Variables et constantes (Algorithme)

• Les données sont des informations nécessaires au déroulement d’un algorithme.


On distingue deux catégories : les constantes et les variables.
• Une constante est une donnée fixe qui ne varie pas durant l’exécution d’un
algorithme. Une constante est caractérisée par son nom et sa valeur (fixe).
I Syntaxe de déclaration d’une constante :

Constante Nom_Constante ← valeur ;

Exemple :
Constante Pi ←3,14 ;
Constante B ← 6 ;
Constante Mois ← ’Mars’ ;
• Une variable est un objet dont le contenu peut être modifié par une action
durant l’exécution d’un algorithme. Une variable est caractérisée par son nom,
sa valeur et son type.
I Syntaxe de déclaration d’une variable :

Variable Nom_Variable :Type ;

Exemple :
Variable nbr_élèves : entier ;
Variable note : réel ;
Variable Prénom : chaines de caractères ;
Variable A : logique ;
Variable Opérateur : caractère ;
I Types des données :
• Entier : sert à manipuler les nombres entiers positifs ou négatifs.
(Ex : Variables a, b, c : entier ;)
• Réel : sert à manipuler les nombres à virgule.
(Ex : Variables r, s : réel ;)

-27-
2.2. LES COMPOSANTS ELEMENTAIRES D’UN ALGORITHME ET D’UN PROGRAMME EN C

• Caractère : permet de manipuler les caractères alphabétiques et numériques.


(Ex : Variable code : caractère ;)
• Chaîne : sert à manipuler les chaînes de caractères.
(Ex : Variable Nom_prenom : chaîne ;)
• Logique : utilise les expressions logiques : (Vrai ou Faux).
(Ex : Variable absent : logique ;)
Exemples :

Numérique Alphanumérique
Types des données Logique
Entier Réel
Caractère Chaine de caractère
(Sans virgule) (avec et sans virgule)
-13.5 ’A’
-26 ’Bonjour’
1568 ’@’ Vrai
Exemples 15 ’154’
16.69 ’5’ Faux
12 ’Hello World !’
14 ’ ?’

• ’32’ est différent de 32 parce que 32 est trente deux par contre ’32’ représente la
suite des caractères 3 et 2.
• Une variable de type numérique ne peut pas recevoir une chaine de caractères
ou logique.
Exercice : Donnez le type correspondant aux données suivantes :

Données Types
Bienvenue dans le monde de la programmation
-300
’8’
260.58
’@’
faux
’Maroc’

2.2.1.2 L’affectation (Algorithme)

I L’affectation est une opération qui consiste à attribuer une valeur à une va-
riable. Elle est représentée par une flèche orientée à gauche.
I Syntaxe d’affectation :

-28-
2.2. LES COMPOSANTS ELEMENTAIRES D’UN ALGORITHME ET D’UN PROGRAMME EN C

Variable ← valeur ou expression ;

Exemple :
←2 ; (la variable A reçoit la valeur 2) ;
A←
B ←A+2 ;(la variable B reçoit le contenu de A plus 2.)
←’Ali’ ;( la variable Nom reçoit la valeur Ali. )
Nom←

Exercice :
Soient trois variables A, B et C tels que :
• A est de type entier.
• B est de type chaine de caractères.
• C est type logique.
1. Déclarer les variables A, B et C dans ce cas ?
2. Cocher une bonne réponse :

 A ← 1;  B ←’Management’
 A ← ’Al hoceima’ ;  C ← 10 ;
 B ←3 ;  C ← 2<5 ;
 B ←A ;  C ← 2<-1 ;

Exercice :
Compléter le tableau suivant

Variables
Instructions
A B C D
B ←2 ;
C←←B+10 ;
← 4;
A←
D ←A ;
B ← B*D ;
C ←B+5 ;
A ←10+4+C ;
C ←A+B+D ;

-29-
2.2. LES COMPOSANTS ELEMENTAIRES D’UN ALGORITHME ET D’UN PROGRAMME EN C

2.2.1.3 La lecture (Algorithme)

• La lecture est une instruction qui permet de lire des données tapées au clavier.
I Syntaxe :

Lire (variable1) ;
Lire (variable1, variable2,. . . ) ;

Exemple :

• Lire (nombre) ;
• Lire (nom, prénom, âge) ;

2.2.1.4 L’ écriture (Algorithme)

• L’écriture est une instruction qui permet d’afficher le contenu d’une variable ou/et
un message sur l’écran.
I Syntaxe :

Ecrire(variable) ;
Ecrire(’Message’) ;
Ecrire(’Message’, variable) ;

Exemple :

• Ecrire(A) ; // afficher sur l’écran le contenu de la variable A.


• Ecrire(’Hello World !’) ; //afficher sur l’écran le message : Hello World !

2.2.1.5 Expressions arithmétiques (Algorithme)

• Une expression arithmétique peut être composée d’opérateurs, d’opérandes et


de parenthèses.
• Les opérateurs arithmétiques usuels sont :
 + : addition.
 - : soustraction.
 * : multiplication.
 / : division.

-30-
2.2. LES COMPOSANTS ELEMENTAIRES D’UN ALGORITHME ET D’UN PROGRAMME EN C

 ˆ : puissance.
 Div : Division entière.
 Mod ou % (modulo) : Reste de la division entière.
• Une opérande peut être :
 Un nom d’une variable ou une constante de type numérique : Pi * R *
R
 Une valeur numérique : 5 + 12.3
• Une expression logique simple est une comparaison entre deux expressions arith-
métiques.
• Les opérateurs de comparaison usuels sont : > ,= , <, >= ,<=, 6=
Exemple :

Figure 2.4 – Exemple d’une expression logique simple

• Une expression logique est composée d’expressions logiques simples reliées


par les opérateurs logiques : ET , OU, NON

Figure 2.5 – Exemple d’une expression logique simple

-31-
2.2. LES COMPOSANTS ELEMENTAIRES D’UN ALGORITHME ET D’UN PROGRAMME EN C

• Opérateurs logiques :

A B A ET B A OU B NON A
Faux Faux Faux Faux Vrai
Faux Vrai Faux Vrai Vrai
Vrai Faux Faux Vrai Faux
Vrai Vrai Vrai Vrai Faux

Exercice :
Soit le tableau suivant :

Complétez le tableau suivant :

2.2.1.6 Commentaires (Algorithme )

• Lorsqu’un algorithme devient long, il est conseillé d’ajouter des lignes de com-
mentaires dans l’algorithme, c’est-à-dire des lignes qui ont pour but de donner
des descriptions sur les instructions effectuées.
• On a deux manières de définir les commentaires :
// commentaire sur une seule ligne.
/* commentaire sur une ou plusieurs lignes */
• Un commentaire n’est jamais exécutable et ne perturbe plus l’exécution du pro-
gramme !

-32-
2.2. LES COMPOSANTS ELEMENTAIRES D’UN ALGORITHME ET D’UN PROGRAMME EN C

2.2.2 Etapes à suivre pour rédiger un algorithme


1. Établir la liste des données en entrée, la liste des données en sortie et les liens
entre elles.
2. Construire un chemin de résolution qui permet d’obtenir les données en sortie
à partir des données en entrée : schéma de résolution informatique.
3. Décrire le schéma de résolution en termes d’instructions élémentaires accep-
tées par ordinateur : l’algorithme.
4. Chaque instruction se termine par un point virgule ; .
5. La virgule est un séparateur des variables. On peut avoir plusieurs instruc-
tions sur une même ligne séparées par un point virgule.
Exemple :
Ecrire un algorithme permet de permuter les valeurs de deux variables x et
y. c’est-à-dire la valeur de x sera donnée à y et celle de y sera donnée à x.
Solution :
1. Identification des données d’entrées et de sorties

• Donnée en entrées : x et y
• Données en sorties : x et y échangées

2. Chemin de résolution
• Donner une valeur à x ;
• Donner une valeur à y ;
• Échanger les valeurs de x et y ;
• Afficher x et y.
3. Traduire le chemin en algorithme

-33-
2.3. COMPOSANTS ÉLÉMENTAIRES D’UN PROGRAMME C

Algorithme proposé :
Algorithme 2 : Permutation

Variables : x,y,z : réels


début
Ecrire (’entrer les notes :’) ;
Lire (x) ;
Lire (y) ;
z ←x ;
x ←y ;
y ←z ;
Ecrire (’ la valeur de x après la permutation est :’,x) ;
Ecrire (’ la valeur de y après la permutation est :’,y) ;
fin

Exercice : Ecrire un algorithme qui calcule la somme et le produit de deux


données numériques :
Solution

Algorithme 3 : Somme_Produit

Variables : A,B,S,P : réels


début
Ecrire (’entrer deux nombres :’) ;
Lire (A,B) ;
S ←A+B ;
P ←A*B ;
Ecrire (’ la somme des deux nombres est :’,S) ;
Ecrire (’ Le produit des deux nombres est :’,P) ;
fin

2.3 Composants élémentaires d’un programme C


2.3.1 Variables et constantes (langage C)
I La constante :

-34-
2.3. COMPOSANTS ÉLÉMENTAIRES D’UN PROGRAMME C

• Elle ne change jamais de valeur pendant l’exécution d’un programme. Elle est géné-
ralement stockée dans la mémoire morte d’une machine.
• Il n’y a pas d’allocation mémoire, mais on peut affecter à un identificateur (Nom)
une valeur constante par l’instruction ] define
I Syntaxe :

] define <identificateur> <valeur>

Exemple :

I La variable :
• Les variables contiennent les valeurs utilisées pendant l’exécution du programme
• Déclarer une variable, c’est prévenir le compilateur qu’un nom va être utilisé pour
designer un emplacement de la mémoire.
• Les noms des variables sont des identificateurs.
• Toute variable doit être déclarée avant les instructions et son type spécifié dès la
déclaration.
I Syntaxe :

<type> <identificateur 1>,..,<identificateur n> ;

Exemple :

-35-
2.3. COMPOSANTS ÉLÉMENTAIRES D’UN PROGRAMME C

• Le type
• Détermine la taille de la variable et les opérations pouvant être effectuées
• L’identificateur

• C’est le nom affecté à la variable, le nombre de caractères peut être limité, cela
dépend du compilateur utilisé.
• L’identificateur d’une variable doit toujours être écrit de la même façon :
Mon_Identificateur 6= mon_identificateur6= MON_IDENTIFICATEUR.

• Les seuls caractères autorisés pour les noms (identificateur) de variables sont :

• lettres NON accentuées ;


• chiffres ;
• caractères souligné " _ ".

Le tableau suivant résume les types simples prédéfinis en C :

Exemple :
float rayon ; /*Déclaration de réel*/
int i,j ; /*Déclaration d’entier*/
char t ; /*Déclaration de caractère*/
double pi ; /*Déclaration de réel double*/

2.3.2 L’affectation (Langage C)


I L’opérateur d’affectation :
• Il permet de modifier la valeur d’une variable.

-36-
2.3. COMPOSANTS ÉLÉMENTAIRES D’UN PROGRAMME C

• L’affectation est toujours effectuée de la droite vers la gauche


• Le programme commence par évaluer la valeur de l’expression puis l’affecte avec
le signe = à la variable par son identificateur.
I Syntaxe :

<identificateur> = <expression> ;

Exemple :

1 #i n c l u d e <s t d i o . h>
2 v o i d main ( )
3 {
4 int V ;
5 V = 5;
6

7 }

2.3.3 L’écriture (Langage C)


I La fonction d’affichage printf() permet d’afficher des messages et/ou des valeurs de
variables sous différents formats
I Syntaxe :

printf ("Format",identificateur1, ....,identificateur n) ;

I Le format :
• indique comment vont être affiché les valeurs des variables. Il est composé de
texte et de codes d’affichage suivant le type de variable.
Exemple :

-37-
2.3. COMPOSANTS ÉLÉMENTAIRES D’UN PROGRAMME C

I Codes d’affichage :

Code format Type de l’argument à afficher


%c Caractère
%hd Entier short int (ou caractère) signé
%hu Entier short int (ou caractère) non signé
%hx Pour afficher en hexadécimal (short ou char)
%ld entier long int signé
%lu entier long int non singé
%lx entier long int en hexadécimal
%d entier int
%X pour afficher un int en hexadécimal
%lf
Réel double précision (double)
%le
%f
Réel simple précision (float)
%e
%s chaine de caractère

I Important :
Au début d’un programme utilisant les fonctions d’affichage et de saisie il est nécessaire
d’écrire ]include <stdio.h>, car toutes les fonctions sont déclarées dans ce fichier
d’en-tête.
I Exemple :

1 #i n c l u d e <s t d i o . h>
2 v o i d main ( )
3 {
4 int a ,b , c ;
5 a =1;
6 b=2;
7 c =3;
8 p r i n t f ( " La v a l e u r de a e s t %d , c e l l e de b e s t %d , e t c e l l e de c e s t
%d " , a , b , c ) ;
9 }

Le programme affiche :
La valeur de a est 1, celle de b est 2, et celle de c est 3.
I On peut aussi mettre des codes de contrôles :

-38-
2.3. COMPOSANTS ÉLÉMENTAIRES D’UN PROGRAMME C

Code de contôle Signification


\n Nouvelle ligne
\a Bip code ascii 7
\r Retour chariot
\b Espace arrière
\t Tabulation
\f Saut de page
\\ Antislash
\\" Guillemet
\’ Apostrophe
\’0’ Caractère nul
\0ddd Valeur octale (ascii) ddd
\xdd Valeur hexadécimal dd

Exemple :
1 i n c l u d e <s t d i o . h>
2 v o i d main ( )
3 {
4 p r i n t f ( " S a l u t j e s u i s : \ n\ t e t u d i a n t a l a FSTH \n\ t \ t A b i e n t o t " ) ;
5 }

Le programme affiche :
Salut je suis
etudiant a la FSTH
A bientot

2.3.4 La lecture (Langage C)


I La fonction scanf() permet de saisir des valeurs de variables formatées à partir du
clavier.
I Comme printf() elle est composée d’un format et des identificateurs de variables à
saisir.
I A la différence de printf(), le format ne peut contenir de texte, il est juste composé
du format des valeurs à saisir.
I Syntaxe

scanf (<"Format">,&identificateur1, ...., &identificateurn) ;

-39-
2.3. COMPOSANTS ÉLÉMENTAIRES D’UN PROGRAMME C

Exemple :
1 #i n c l u d e <s t d i o . h>
2 v o i d main ( )
3 {
4 char car ;
5 p r i n t f ( " \n e n t r e z un c a r a c t e r e " ) ;
6 s c a n f ( "%c " ,& c a r ) ;
7 p r i n t f ( " \n l e c a r a c t e r e t a p e e s t : %c " , c a r ) ;
8 }

I Remarques :

• Le symbole & est obligatoire devant les identificateurs car scanf() attend des
adresses et non des valeurs, sauf devant un identificateur de chaîne de carac-
tères.
• Les codes d’affichage pour printf deviennent les codes d’entrée pour scanf().
• Pour l’utilisation de scanf() il faut inclure le fichier stdio.h au début du pro-
gramme.

Exemple :
1 #i n c l u d e <s t d i o . h>
2 float a , b , c , det ; /∗ d e c l a r a t i o n d e s v a r i a b l e s r e e l l e s ∗/
3 v o i d main ( )
4 {
5 p r i n t f ( " Donne l e s v a l e u r s de a , b e t c ? " ) ; /∗ A f f i c h a g e de " Donne l e s
v a l e u r s de a , b e t c ? " ∗/
6 s c a n f ( "%f %f %f " ,&a ,&b,& c ) ; /∗ S a i s i e de a , b , c ∗/
7 d e t =(b∗b ) −(4∗a∗ c ) ; /∗ C a l c u l du d e t e r m i n a n t ∗/
8 p r i n t f ( " \n\n " ) ; /∗ Deux s a u t s de l i g n e ∗/
9 p r i n t f ( " Le d e t e r m i n a n t = %f " , d e t ) ; /∗ A f f i c h a g e du d e t e r m i n a n t ∗/
10 }

• La fonction putchar() permet d’afficher un caractère à l’écran.


I Syntaxe :

putchar(identificateur1) ;

Exemple :
1 #i n c l u d e <s t d i o . h>
2 c h a r car1 , c a r 2 ;
3 v o i d main ( )

-40-
2.3. COMPOSANTS ÉLÉMENTAIRES D’UN PROGRAMME C

4 {
5 c a r 1= ’F ’ ;
6 c a r 2= ’ S ’ ;
7 p u t c h a r ( c a r 1 ) ; /∗ A f f i c h a g e du c a r a c t e r e 1 −−> donne un F∗/
8 p u t c h a r ( c a r 2 ) ; /∗ A f f i c h a g e du c a r a c t e r e 2 −−> donne un S∗/
9 p u t c h a r ( ’T ’ ) ; /∗ A f f i c h a g e du c a r a c t e r e T ∗/
10 p u t c h a r ( ’ \n ’ ) ; /∗ Retour de l i g n e ∗/
11 }

• La fonction getchar() permet de saisir un caractère au clavier.


I Syntaxe :

identificateur1 = getchar() ;

Exemple :
1 #i n c l u d e <s t d i o . h>
2 char car1 ;
3 v o i d main ( )
4 {
5 p r i n t f ( " Tapez un c a r a c t e r e ? " ) ; /∗ A f f i c h a g e de " Tapez un c a r a c t e r e ? " ∗/
6 c a r 1=g e t c h a r ( ) ; /∗ S a i s i e d ’ un c a r a c t e r e ∗/
7 p u t c h a r ( ’ \n ’ ) ; /∗ Changement de l i g n e ∗/
8 p r i n t f ( " Le c a r a c t e r e s a i s i = %c " , c a r 1 ) ; /∗ A f f i c h a g e du c a r a c t e r e s a i s i
∗/
9 }

2.3.5 Opérateurs standards (Langage C)


I Les opérateurs de calcul :
• Les opérateurs de calcul permettent de modifier mathématiquement la valeur d’une
variable.

Opérateur Dénomination Effet Exemple Résultat (avec x entier valant 7)


+ opérateur d’addition Ajoute deux valeurs x+3 10
- opérateur de soustraction Soustrait deux valeurs x-3 4
* opérateur de multiplication Multiplie deux valeurs x*3 21
/ opérateur de division Divise deux valeurs x/3 2
% opérateur modulo Donne le reste de la division entière x%3 1

I Les opérateurs d’assignation :

-41-
2.3. COMPOSANTS ÉLÉMENTAIRES D’UN PROGRAMME C

• Ces opérateurs permettent de simplifier des opérations telles que "ajouter une valeur
dans une variable et stocker le résultat dans la variable".
• Avec les opérateurs d’assignation il est possible d’écrire x = x+2 sous la forme suivante
x+=2

Opérateur Effet
= Affecter une valeur ( à droite ) à une variable (à gauche)
+= Additionne deux valeurs et stocke la somme dans la variable
-= Soustrait deux valeurs et stocke la différence dans la variable
*= Multiplie deux valeurs et stocke le produit dans la variable
/= Divise deux valeurs et stocke le quotient dans la variable
%= Divise deux valeurs et stocke le reste dans la variable

I Les opérateurs d’incrémentation :


• Ce type d’opérateur permet de facilement augmenter ou diminuer d’une unité une
variable

opérateur Dénomination Effet Syntaxe Avec x = 7


++ Incrémentation Augmente d’une unité la variable x++ 8
-- Décrémentation Diminue d’une unité la variable x- - 6

I Les opérateurs de comparaison :

Opérateur Dénomination Effet Exemple


Compare deux valeurs
== opérateur d’égalité x= =3
et vérifie leur égalité
Vérifie qu’une variable est
< opérateur d’infériorité stricte x<3
strictement inférieure à une valeur
Vérifie qu’une variable est
<= opérateur d’infériorité x<=3
inférieure ou égale à une valeur
Vérifie qu’une variable est
> opérateur de supériorité stricte x>3
strictement supérieure à une valeur
Vérifie qu’une variable est
>= opérateur de supériorité x>=3
supérieure ou égale à une valeur
Vérifie qu’une variable est
!= opérateur de différence x !=3
différente d’une valeur

-42-
2.3. COMPOSANTS ÉLÉMENTAIRES D’UN PROGRAMME C

I Les opérateurs logiques (booléens) :

Opérateur Dénomination Effet Syntaxe


Vérifie qu’une des
|| OU logique ((condition1) || (condition2))
conditions est réalisée
Vérifie que toutes les
&& ET logique ((condition1) && (condition2))
conditions sont réalisées
Inverse l’état d’une
variable booléenne
! NON logique (retourne la valeur 1 si la !(condition)
variable vaut 0,
0 si elle vaut 1)

I Les priorités :
• Lorsque l’on associe plusieurs opérateurs, il faut que le navigateur sache dans quel
ordre les traiter, voici donc dans l’ordre décroissant les priorités de tous les
opérateurs :

Priorité des opérateurs


Priorité 1 (la plus forte) : () []
Priorité 2 : ! ++ - -
Priorité 3 : */%
Priorité 4 : +-
Priorité 5 : < <= > >=
Priorité 6 : == !=
Priorité 7 : &&
Priorité 8 : ||
Priorité 9 (la plus faible) : = += -= *= /= %=

-43-

Vous aimerez peut-être aussi