-----------------------------------------------------------------------------
I N T R O D U C T I O N À L A P R O G R A M M A T I O N
A V E C I S O C + +
-----------------------------------------------------------------------------
P A R M I C H E L M I C H A U D
Loze-Dion éditeur inc., 2006, ISBN 2-921180-94-4
Avant-Propos
Table des matières
1 INTRODUCTION À LA PROGRAMMATION
1.1 Programme et langage de programmation 2
1.2 Étapes du développement des programmes 2
1.3 Notion d'algorithme 6
2 NOTIONS DE BASE
2.1 Constantes 9
2.2 Variables 13
2.3 Types de données simples 15
2.4 Déclarations dans les algorithmes 16
2.5 Notion d'instructions 17
2.6 Instruction d'affectation 17
2.7 Expressions arithmétiques et opérateurs 18
Exercices-Série A 24
3 PSEUDO-CODE ET ALGORITHMES
3.1 Présentation des algorithmes en pseudo-code 26
3.2 Standard de présentation du pseudo-code 27
3.3 Instruction de lecture 33
3.4 Instruction d'écriture 35
3.5 Essais manuels des algorithmes : la trace 40
Exercices-Série B 42
4 STRUCTURES DE CONTRÔLE
4.1 Structure séquentielle 43
4.2 Structure conditionnelle simple et opérateurs relationnels 44
4.3 Structures conditionnelles imbriquées 52
4.4 Applications des structures imbriquées au problème du prix du
repas 57
4.5 Structure conditionnelle multiple 58
Exercices-Série C 62
4.6 Conditions composées et opérateurs logiques 64
4.7 Priorité des opérateurs 70
4.8 Évaluation court-circuit 73
4.9 CHOIX-QUAND et conditions composées 74
4.10 Exemples récapitulatifs 74
Exercices-Série D 77
4.11 Structures itératives 80
4.12 Étapes pour l'écriture d'une boucle 83
4.13 Les sentinelles 86
4.14 La boucle POUR 89
4.15 Structures imbriquées 92
4.16 Initialisation significative des variables 93
Exercices-Série E 95
5 ÉLÉMENTS DE BASE DE C++
5.1 Conversion des algorithmes en C++ 98
5.2 Structure générale d'un programme C++ 103
5.3 Déclarations et définitions des variables et constantes,
types de données 108
5.4 Opérations de lecture et d'écriture : <iostream> 114
5.5 Affectation et autres opérateurs 117
5.6 Structures de contrôle 120
5.7 Règles de visibilité 129
5.8 Exemples récapitulatifs 130
5.9 Cycle de développement d'un programme 134
5.10 Mise au point des programmes 136
Exercices-Série F 138
6 QUALITÉS DES PROGRAMMES
6.1 Facilité d'utilisation 142
6.2 Fiabilité et validation 143
6.3 Qualité du code 145
6.4 Standard de programmation 146
7 MODULARITÉ
7.1 Définition d'un module 151
7.2 Types de modules 155
7.3 Nom et appel des modules 155
7.4 Écriture des modules 158
7.5 Les paramètres 160
7.6 Module pour CHOIX-QUAND 166
7.7 Fonctions de bibliothèques 166
7.8 Développement de modules réutilisables 167
7.9 Modularité en C++ : fonctions 168
7.10 Techniques spéciales 173
Exercices-Série G 178
8 ENTRÉES-SORTIES EN C++
8.1 Les entrées-sorties interactives 182
8.2 Contrôle de la présentation des données 189
8.3 Sérialisation et gestion des fichiers 193
8.4 Format des données dans les fichiers 198
8.5 Validation des lectures interactives 199
8.6 Un exemple : la consommation de pommes 200
Exercices-Série H 202
9 TYPES DE DONNÉES PERSONNELS
9.1 Types par énumération 204
9.2 Les structures 212
9.3 Récapitulation : les pommes 222
Exercices-Série I 225
10 VECTEURS
10.1 La structure de données vecteur 226
10.2 Les vecteurs en C++ : la classe vector 227
10.3 Quelques fonctions membres utiles 229
10.4 Exemples d'opérations et indices quelconques 231
10.5 Vecteurs, fonctions et modularité 237
10.6 Sérialisation des vecteurs 238
10.7 Autres opérations dans les vecteurs 241
10.8 Retour aux pommes 247
Exercices-Série J 251
11 POSSIBILITÉS DES VARIABLES ET DES FONCTIONS EN C++
11.1 Durée de vie des variables et portée 253
11.2 Variables globales 254
11.3 Variables statiques et durée de vie 259
11.4 Les singletons 260
11.5 Contrôle de la portée des variables 261
11.6 Les références 265
11.7 Les fonctions inline 266
Exercices-Série K 267
12 FICHIERS SOURCES MULTIPLES, FICHIERS D'EN-TÊTE
ET NAMESPACE ANONYME
12.1 Découpage en fichiers sources multiples 269
12.2 Déclarations et fichiers d'en-tête 274
12.3 Possibilités du préprocesseur 277
12.4 Rôle de l'éditeur de liens, projets et makefile 280
12.5 Les fonctions inline dans les fichiers d'en-tête 281
12.6 Restriction des accès : le namespace anonyme 282
13 TYPES DE DONNÉES DE C++
13.1 Types de données de base 284
13.2 Types synonymes (typedef) 286
13.3 Imbrications des déclarations de types 286
13.4 Quelques typedef et types imbriqués de la bibliothèque standard 288
13.5 Les pointeurs 289
13.6 Allocation dynamique 292
13.7 Quelques possibilités du type string 297
13.8 Conversions et <sstream> 301
Exercices-Série L 304
14 OPÉRATEURS ET EXCEPTIONS
14.1 Opérateurs : valeurs dans les expressions 306
14.2 Opérateurs spéciaux 309
14.3 Opérateurs de manipulations de bits 311
14.4 Fonctions operator 314
14.5 Exceptions 317
Exercices-Série M 321
15 CLASSES ET ENCAPSULATION
15.1 Données, traitements, validité et invariants 324
15.2 Classes et droits d'accès 326
15.3 Fonctions membres 327
15.4 Constructeurs 335
15.5 Validation, constructeur et exceptions 340
15.6 Validation et autres fonctions membres 342
15.7 Fonctions membres const 343
Exercices-Série N 345
15.8 Fonctions membres static 346
15.9 Destructeurs 347
Exercices-Série O 350
15.10 Constructeurs dans les structures 351
15.11 Constantes et types imbriqués 352
15.12 Classe de valeurs et classe de traitement 354
15.13 Données membres constantes et références 356
15.14 Sérialisation des données d'un type classe 356
15.15 Un exemple complet 359
15.16 Déclarations des classes 364
15.17 Classes et fonctions operator 367
15.18 Fonction membre operator= 371
15.19 Conversions par constructeur et explicit 373
15.20 Fonctions friend 374
Exercices-Série P 377
16 HÉRITAGE ET POLYMORPHISME
16.1 Réutilisation des classes par composition 378
16.2 Dérivation et héritage 381
16.3 Polymorphisme et fonctions virtuelles 387
16.4 Fonction virtuelle pure et classe abstraite 390
16.5 Programmation orientée objet 392
16.6 Fonctions membres privées 400
16.7 Un exemple complet 402
Exercices-Série Q 415
17 COMPLÉMENTS
17.1 Vecteurs de base et chaînes C 417
17.2 Itérateurs et arithmétiques de pointeurs 418
17.3 Autres fonctions de <algorithm> 420
17.4 Fonctions de std::vector préservant l'ordre 422
17.5 Position du const et pointeurs 423
17.6 Données membres static 424
17.7 Macros 426
17.8 Sortie rapide du programme 427
17.9 Classes singleton 428
ANNEXES
Annexe A Fonctions de la bibliothèque standard 429
Annexe B Ressources accessibles par Internet 433
Annexe C Priorité des opérateurs de C++ 434
BIBLIOGRAPHIE 435
INDEX 436