COURS ET TP DE LANGAGE
C++
Programmation structurée et orientée objet
13 février 2026
Table des matières
1 Éléments de langage C++ 2
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Étapes permettant l’édition, la mise au point et l’exécution d’un programme . . 2
1.3 Les différents types de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.1 1 - Les entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.2 2 - Les réels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.4 Les initialisations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.5 Sorties de nombres ou de texte à l’écran . . . . . . . . . . . . . . . . . . . . . . . 6
1.5.1 L’opérateur cout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6 Les opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.7 Incrémentation - Décrémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.8 Opérateurs combinés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.9 Les déclarations de constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.10 Les conversions de types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Corrigé des exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1
Chapitre 1
Éléments de langage C++
Les exercices ont été testés avec les outils BORLAND C++ BUILDER (toute version) en
mode « console » et BC5. Le corrigé des exercices et le listing de ces programmes se trouvent à
la fin de chaque chapitre.
Pour avancer un peu plus vite et aborder l’essentiel de la Programmation Orientée Objet
(P.O.O.), on pourra étudier les chapitres et paragraphes marqués de *** dans un deuxième
temps.
1.1 Introduction
Le langage C++ est un langage évolué et structuré. C’est en ce sens une évolution du langage
C. Il possède en outre les fonctionnalités de la programmation orientée objet. Le langage C++
se trouve à la frontière entre le langage C, non objet, et le langage JAVA conçu d’emblée en
orienté objet.
On trouve sur le marché un grand nombre de compilateurs C++ destinés à différents micro-
processeurs ou microcontrôleurs. Le langage C++ possède assez peu d’instructions, il fait par
contre appel à des bibliothèques, fournies en plus ou moins grand nombre avec le compilateur.
Exemples :
— math.h : bibliothèque de fonctions mathématiques
— iostream.h : bibliothèque d’entrées/sorties standard
— complex.h : bibliothèque contenant la classe des nombres complexes
On ne saurait développer un programme en C++ sans se munir de la documentation concer-
nant ces bibliothèques.
1.2 Étapes permettant l’édition, la mise au point et l’exécution
d’un programme
1. Édition du programme source, à l’aide d’un éditeur (traitement de textes). Le nom
du fichier contient l’extension CPP, exemple : EXI_1.CPP (menu « edit »).
2. Compilation du programme source, c’est-à-dire création des codes machine destinés
au microprocesseur utilisé. Le compilateur indique les erreurs de syntaxe mais ignore
les fonctions-bibliothèque appelées par le programme. Le compilateur génère un fichier
binaire, non éditable en mode « texte », appelé fichier objet : EXI_1.OBJ (commande
« compile »).
3. Éditions de liens : Le code machine des fonctions-bibliothèque est chargé, création
d’un fichier binaire, non éditable en mode texte, appelé fichier exécutable : EXI_1.EXE
(commande « build all »).
2
Chapitre 1. Éléments de langage C++ Cours et TP de Langage C++
4. Exécution du programme (commande « Run » ou « flèche jaune »).
Les compilateurs permettent en général de construire des programmes composés de plusieurs
fichiers sources, d’ajouter à un programme des unités déjà compilées. On dit alors que l’on
travaille par gestion de projet.
Exercice I-1
Éditer (EXI_1.CPP), compiler et exécuter le programme suivant :
1 # include < iostream .h > // sorties standards
2 # include < conio .h >
3
4 void main ()
5 {
6 // les commentaires s ’ ecrivent derriere 2 barres
7 cout << " BONJOUR " ; // affichage d ’ un message sur l ’ ecran
8 cout << " Belle journee !! " ; // affichage d ’ un autre message
9 cout << " Pour continuer frapper une touche ... " ;
10 // Attente d ’ une saisie clavier pour voir l ’ ecran d ’ execution
11 getch () ;
12 }
Le langage C++ distingue les minuscules des majuscules. Les mots réservés du langage C++
doivent être écrits en minuscules.
On a introduit dans ce programme la notion d’interface homme/machine (IHM) :
— L’utilisateur visualise une information sur l’écran,
— L’utilisateur, par une action sur le clavier, fournit une information au programme.
Les instructions sont exécutées séquentiellement, c’est-à-dire les unes après les autres.
L’ordre dans lequel elles sont écrites a donc une grande importance. Échanger les 2 premières
instructions, puis exécuter le programme.
Modifier maintenant le programme comme ci-dessous, puis le tester :
1 // les commentaires s ’ ecrivent derriere 2 barres obliques
2 # include < iostream .h > // sorties standard
3 # include < conio .h >
4
5 void main ()
6 {
7 int a , b , calcul ; // declaration de 3 variables
8
9 cout << " BONJOUR " ; // affichage d ’ un message sur l ’ ecran
10
11 a = 10; // affectation
12 b = 50; // affectation
13 calcul = ( a + b ) * 2;
14
15 cout << " Affichage de a : " << a << " \ n " ;
16 cout << " Affichage de b : " << b << " \ n " ;
17 cout << " Voici le resultat : " << calcul << " \ n " ;
18 cout << " Pour continuer frapper une touche ... " ;
19
20 getch () ; // Attente d ’ une saisie clavier
21 }
Dans ce programme, on introduit 3 nouveaux concepts :
— La notion de déclaration de variables : les variables sont les données que mani-
pulera le programme lors de son exécution. Ces variables sont rangées dans la mémoire
3
Chapitre 1. Éléments de langage C++ Cours et TP de Langage C++
vive de l’ordinateur. Elles peuvent être déclarées au moment où on en a besoin dans le
programme. Pour une meilleure lisibilité, il est conseillé de les déclarer au début (sauf
peut-être pour des variables créées par commodité et qui ne servent que très localement
dans le programme).
— La notion d’affectation, symbolisée par le signe =. La source de l’information est à
droite du signe, la destination à gauche.
— a = 10; signifie « a prend la valeur 10 »
— s = a + b; signifie « s prend la valeur a + b »
— s = s + 5; signifie « la nouvelle valeur de s est égale à l’ancienne + 5 »
— La notion d’opération. Un programme informatique est exécuté séquentiellement,
c’est-à-dire une instruction après l’autre. Lorsque l’instruction s = a + b; est exécu-
tée, a possède la valeur 10, et b possède la valeur 50.
1.3 Les différents types de variables
1.3.1 1 - Les entiers
Le langage C++ distingue plusieurs types d’entiers :
TYPE DESCRIPTION TAILLE MÉMOIRE
int entier standard signé 4 octets : −231 ≤ n ≤ 231 − 1
unsigned int entier positif 4 octets : 0 ≤ n ≤ 232 − 1
short entier court signé 2 octets : −215 ≤ n ≤ 215 − 1
unsigned short entier court non signé 2 octets : 0 ≤ n ≤ 216 − 1
char caractère signé 1 octet : −27 ≤ n ≤ 27 − 1
unsigned char caractère non signé 1 octet : 0 ≤ n ≤ 28 − 1
Numération :
— En décimal, les nombres s’écrivent tels quels.
— En hexadécimal, ils sont précédés de 0x.
Exemple : 127 en décimal s’écrit 0x7f en hexadécimal.
Remarque
En langage C++, le type char possède une fonction de changement de type vers un entier.
Un caractère peut voir son type automatiquement transformé vers un entier de 8 bits. Il
est interprété comme un caractère alphanumérique du clavier.
Exemples : Les caractères alphanumériques s’écrivent entre apostrophes ’ ’.
— Le caractère ’b’ a pour valeur 98.
— Le caractère 22 a pour valeur 22.
— Le caractère 127 a pour valeur 127.
— Le caractère 257 a pour valeur 1 (ce nombre s’écrit sur 9 bits, le bit de poids fort est
perdu).
Quelques constantes caractères : Modifier ainsi le programme et le tester :
4
Chapitre 1. Éléments de langage C++ Cours et TP de Langage C++
CARACTÈRE NOM CODE ASCII
’\n’ interligne (LF) 0x0a
’\t’ tabulation horizontale (HT) 0x09
’\v’ tabulation verticale (VT) 0x0b
’\r’ retour chariot (CR) 0x0d
’\f’ saut de page (FF) 0x0c
’\\’ backslash (\) 0x5c
’\'’ cote (’) 0x2c
’\"’ guillemets (") 0x22
1 # include < iostream .h > // sorties standard
2 # include < conio .h >
3
4 void main ()
5 {
6 // les commentaires s ’ ecrivent derriere 2 barres
7 int a , b , calcul ; // declaration de 3 variables
8 char u , v ;
9
10 cout << " BONJOUR " ; // affichage d ’ un message sur l ’ ecran
11 a = 10; // affectation
12 b = 50; // affectation
13 u = 67;
14 v = ’\ n ’;
15
16 calcul = ( a + b ) * 2; // affectation et operations
17
18 cout << " Affichage de a : " << a << " \ n " ;
19 cout << " Affichage de b : " << b << " \ n " ;
20 cout << " Voici le resultat : " << calcul << " \ n " ;
21 cout << " Affichage de u : " << u << " \ n " ;
22 cout << " Affichage de v : " << v << " \ n " ;
23
24 cout << " Pour continuer frapper une touche ... " ;
25 getch () ; // Attente d ’ une saisie clavier
26 }
1.3.2 2 - Les réels
Un réel est composé :
— d’un signe,
— d’une mantisse,
— d’un exposant.
Un nombre de bits est réservé en mémoire pour chaque élément. Le langage C++ distingue
2 types de réels :
TYPE DESCRIPTION TAILLE MÉMOIRE
float réel standard 4 octets
double réel double précision 8 octets
5
Chapitre 1. Éléments de langage C++ Cours et TP de Langage C++
1.4 Les initialisations
Le langage C++ permet l’initialisation des variables dès leurs déclarations :
1 char c ;
2 c = ’A ’;
est équivalent à
1 char c = ’A ’;
1 int i ;
2 i = 50;
est équivalent à
1 int i = 50;
Cette règle s’applique à tous les nombres, char, int, float... Pour améliorer la lisibilité des
programmes et leur efficacité, il est conseillé de l’utiliser.
1.5 Sorties de nombres ou de texte à l’écran
1.5.1 L’opérateur cout
Ce n’est pas une instruction du langage C++, mais une fonction de la bibliothèque iostream.h.
Exemple, affichage d’un texte :
1 cout << " BONJOUR " ; // pas de retour a la ligne du curseur apres l ’
affichage
2 cout << " BONJOUR \ n " ; // affichage du texte , puis retour a la ligne du
curseur
Exercice I-2
Tester le programme suivant et conclure.
1 # include < iostream .h >
2 # include < conio .h >
3
4 void main ()
5 {
6 cout << " BONJOUR " ;
7 cout << " IL FAIT BEAU \ n " ;
8 cout << " BONNES VACANCES " ;
9 cout << " Pour continuer frapper une touche ... " ;
10 getch () ; // Attente d ’ une saisie clavier
11 }
Exercice I-3 : Affichage d’une variable de type int ou float
Tester le programme suivant et conclure.
1 # include < iostream .h >
2 # include < conio .h >
3
4 void main ()
5 {
6 int u = 1000;
7 float s = 45.78;
6
Chapitre 1. Éléments de langage C++ Cours et TP de Langage C++
8
9 cout << " Voici u ( en base 10) : " << u << " \ n " ;
10 cout << " Voici u ( en hexa ) : " << hex << u << " \ n " ;
11 cout << " Voici s : " << s << " \ n " ;
12
13 cout << " Pour continuer frapper une touche ... " ;
14 getch () ; // Attente d ’ une saisie clavier
15 }
Affichage multiple : modifier le programme précédent ainsi, et conclure.
1 # include < iostream .h >
2 # include < conio .h >
3
4 void main ()
5 {
6 int u = 1000;
7 float s = 45.78;
8
9 cout << " Voici u ( base 10) : " << u << " \ nVoici s : " << s << " \ n " ;
10
11 cout << " Pour continuer frapper une touche ... " ;
12 getch () ; // Attente d ’ une saisie clavier
13 }
Exercice I-4
a et b sont des entiers, a = -21430, b = 4782, calculer et afficher a+b, a-b, a*b, a/b, a%b
en soignant l’interface homme/machine. Indication : a/b donne le quotient de la division,
a%b donne le reste de la division.
Exercice I-5 : Affichage d’une variable de type char
Tester le programme ci-dessous et conclure.
1 # include < iostream .h >
2 # include < conio .h >
3
4 void main ()
5 {
6 char u , v , w ;
7 int i ;
8
9 u = ’A ’;
10 v = 67;
11 w = 0 x45 ;
12
13 cout << " Voici u : " << u << " \ n " ;
14 cout << " Voici v : " << v << " \ n " ;
15 cout << " Voici w : " << w << " \ n " ;
16
17 i = u ; // conversion automatique de type
18
19 // pour obtenir le code ascii de la lettre A en base 10
20 cout << " Voici i : " << i << " \ n " ;
21 // pour obtenir le code ascii de la lettre A en hexadecimal
7
Chapitre 1. Éléments de langage C++ Cours et TP de Langage C++
22 cout << " Voici i : " << hex << i << " \ n " ;
23
24 cout << " Pour continuer frapper une touche ... " ;
25 getch () ; // Attente d ’ une saisie clavier
26 }
Exercice I-6
Pour votre compilateur C++, la taille des entiers est de 32 bits ; Que va-t-il se passer, à
l’affichage, lors de l’exécution du programme suivant ?
1 # include < iostream .h >
2 # include < conio .h >
3
4 void main ()
5 {
6 int a = 12345000 , b = 600000000 , somme ;
7 somme = a * b ;
8 cout << " a * b = " << somme << " \ n " ;
9
10 cout << " Pour continuer frapper une touche ... " ;
11 getch () ; /* Attente d ’ une saisie clavier */
12 }
Exercice I-7
a et b sont des réels, a = -21.43, b = 4.782, calculer et afficher a+b, a-b, a*b, a/b, en
soignant l’interface homme/machine.
1.6 Les opérateurs
— Opérateurs arithmétiques sur les réels : + - * / avec la hiérarchie habituelle.
— Opérateurs arithmétiques sur les entiers : + - * / (quotient de la division) % (reste
de la division) avec la hiérarchie habituelle.
1 char c , d ;
2 c = ’G ’;
3 d = c + ’a ’ - ’A ’;
Les caractères sont des entiers sur 8 bits, on peut donc effectuer des opérations. Sur cet exemple,
on transforme la lettre majuscule G en la lettre minuscule g.
Opérateurs logiques sur les entiers :
— & : ET
— | : OU
— ˆ : OU EXCLUSIF
— ∼: COM P LEM EN T AU N
— « : DECALAGE A GAUCHE
— » : DECALAGE A DROITE
8
Chapitre 1. Éléments de langage C++ Cours et TP de Langage C++
1 p = n << 3; // p est egal a n decale de 3 bits a gauche
2 p = n >> 3; // p est egal a n decale de 3 bits a droite
L’opérateur sizeof(type) renvoie le nombre d’octets réservés en mémoire pour chaque type
d’objet. Exemple : n = sizeof(char); /* n vaut 1 */
Exercice I-8
n est un entier (n = 0x1234567a) p est un entier (p = 4). Ecrire un programme qui met
à 0 les p bits de poids faibles de n.
Exercice I-9
Quels nombres va renvoyer le programme suivant ?
1 # include < iostream .h >
2 # include < conio .h >
3
4 void main ()
5 {
6 cout << " TAILLE D ’ UN CARACTERE : " << sizeof ( char ) << " \ n " ;
7 cout << " TAILLE D ’ UN ENTIER : " << sizeof ( int ) << " \ n " ;
8 cout << " TAILLE D ’ UN REEL : " << sizeof ( float ) << " \ n " ;
9 cout << " TAILLE D ’ UN DOUBLE : " << sizeof ( double ) << " \ n " ;
10
11 cout << " Pour continuer frapper une touche ... " ;
12 getch () ; // Attente d ’ une saisie clavier
13 }
1.7 Incrémentation - Décrémentation
Le langage C++ autorise des écritures simplifiées pour l’incrémentation et la décrémentation
de variables de type entier (int, char, long).
— i = i + 1; est équivalent à i++;
— i = i - 1; est équivalent à i–;
1.8 Opérateurs combinés
Le langage C++ autorise des écritures simplifiées lorsqu’une même variable est utilisée de
chaque côté du signe = d’une affectation. Ces écritures sont à éviter lorsque l’on débute l’étude
du langage C++ car elles nuisent à la lisibilité du programme.
— a = a + b; est équivalent à a += b;
— a = a - b; est équivalent à a -= b;
— a = a & b; est équivalent à a &= b;
1.9 Les déclarations de constantes
Le langage C++ autorise 2 méthodes pour définir des constantes.
9
Chapitre 1. Éléments de langage C++ Cours et TP de Langage C++
1ère méthode : Déclaration d’une variable dont la valeur sera constante pour toute la portée
de la fonction main.
1 void main ()
2 {
3 const float PI = 3.14159;
4 float perimetre , rayon = 8.7;
5 perimetre = 2 * rayon * PI ;
6 }
Dans ce cas, le compilateur réserve de la place en mémoire (ici 4 octets) pour la variable PI, on
ne peut en changer la valeur. On peut associer un modificateur const à tous les types.
2ème méthode : Définition d’un symbole à l’aide de la directive de compilation #define.
1 # define PI 3.14159
2
3 void main ()
4 {
5 float perimetre , rayon = 8.7;
6 perimetre = 2 * rayon * PI ;
7 }
Le compilateur ne réserve pas de place en mémoire, on définit ainsi une équivalence « lexicale ».
Les constantes déclarées par #define s’écrivent traditionnellement en majuscules, mais ce n’est
pas une obligation.
1.10 Les conversions de types
Le langage C++ permet d’effectuer automatiquement des conversions de type sur les sca-
laires.
1 void main ()
2 {
3 char c = 0 x56 , d = 25 , e ;
4 int i = 0 x1234 , j ;
5 float r = 678.9 , s ;
6
7 j = c ; // j vaut 0 x0056 , utilise precedemment pour afficher
8 // le code ASCII d ’ un caractere
9 j = r ; // j vaut 678
10 s = d ; // s vaut 25.0
11 e = i ; // e vaut 0 x34
12 }
Une conversion de type float → int ou char peut être dégradante. Une conversion de type
int ou char → float est dite non dégradante.
10
Chapitre 1. Éléments de langage C++ Cours et TP de Langage C++
Corrigé des exercices
Exercice I-4
1 # include < iostream .h >
2 # include < conio .h >
3
4 void main ()
5 {
6 int a , b ;
7 a = -21430;
8 b = 4782;
9
10 cout << "A + B = " << a + b << " \ n " ;
11 cout << "A - B = " << a - b << " \ n " ;
12 cout << "A x B = " << a * b << " \ n " ;
13 cout << "A sur B = " << a / b << " \ n " ;
14 cout << "A mod B = " << a % b << " \ n " ;
15
16 cout << " Pour continuer frapper une touche ... " ;
17 getch () ; // Attente d ’ une saisie clavier
18 }
Exercice I-7
1 # include < iostream .h >
2 # include < conio .h >
3
4 void main ()
5 {
6 float a , b ;
7 a = -21.430;
8 b = 4.782;
9
10 cout << "A + B = " << a + b << " \ n " ;
11 cout << "A - B = " << a - b << " \ n " ;
12 cout << "A x B = " << a * b << " \ n " ;
13 cout << "A sur B = " << a / b << " \ n " ;
14
15 cout << " Pour continuer frapper une touche ... " ;
16 getch () ; // Attente d ’ une saisie clavier
17 }
Exercice I-8
1 # include < iostream .h >
2 # include < conio .h >
3
4 void main ()
5 {
6 int n , p ;
7 n = 0 x1234567a ;
8 p = 4;
9
11
Chapitre 1. Éléments de langage C++ Cours et TP de Langage C++
10 cout << " valeur de n avant modification : " << hex << n << " \ n "
;
11
12 n = n >> p ;
13 n = n << p ;
14
15 cout << " n modifie vaut : " << hex << n << " \ n " ;
16
17 cout << " Pour continuer frapper une touche ... " ;
18 getch () ; // Attente d ’ une saisie clavier
19 }
Exercice I-9
Avec le compilateur C++ utilisé :
— sizeof(char) vaut 1
— sizeof(int) vaut 4
— sizeof(float) vaut 4
— sizeof(double) vaut 8
12