----------------------------------------------------------------------------- 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