• Aide
  • Eurêkoi Eurêkoi

Livre

C++ : des fondamentaux du langage aux applications

Résumé

Destiné aux développeurs souhaitant apprendre ce langage ou consolider leur expérience professionnelle, cet ouvrage présente les bases de la syntaxe du langage, décrit les notions clés pour créer ses premières applications (tableur graphique, programme de compression de fichiers...), détaille la programmation orientée objet et étudie les mécanismes les plus importants de la STL, entre autres.


  • Éditeur(s)
  • Date
    • C 2024
  • Notes
    • La couv. porte en plus : "En téléchargement : exemples, code source"
    • La 4e de couv. indique : Sur www.editions-eni.fr : exemples de programmes, code source du tableur InCell et de l'interprète tiny-Misp, code source de l'utilitaire d'archivage minux et du grapheur de fractales 3D, code source du réseau de neurones et du démonstrateur de calculs"
    • Contient un "flashcode" permettant d'accéder à un contenu via Internet
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (466 p.) : ill. ; 22 cm
  • Collections
  • Sujet(s)
  • ISBN
    • 978-2-409-04514-1
  • Indice
  • Quatrième de couverture
    • C++

      Des fondamentaux du langage aux applications

      Ce livre s'adresse à tout développeur désireux d'apprendre le langage C++, dans le cadre de ses études ou pour consolider son expérience professionnelle.

      Le premier chapitre présente les bases de la syntaxe du langage ainsi que l'organisation des programmes. Le chapitre suivant explique les notions clés pour créer ses premières applications : gestion de la mémoire, pointeurs, bibliothèques standards... Le troisième chapitre détaille la structuration des données, conduisant à la programmation orientée objet et aux mécanismes spécifiques au langage (héritage, modèles de classes...). Vient ensuite l'étude de la STL (Standard Template Library), présentée à travers ses mécanismes les plus importants : les chaînes, les structures de données et les parcours de collection. Les évolutions du C++ moderne telles que les lambda-expressions, les smart-pointers et l'inférence de type sont étudiées en préalable à la bibliothèque boost. Un chapitre ouvre C++ sur ses univers, tels que l'environnement managé .NET C++ CLI et les applications Win32.

      Comme illustration des capacités de C++ à créer tout type d'applications, l'auteur propose un exemple complet de tableur graphique, un interprète du langage tiny-Lisp, un programme de compression de fichiers ou encore un réseau de neurones appliqué à un démonstrateur de calculs.

      L'ouvrage se termine par un chapitre appliquant des algorithmes essentiels en C++ traitant de la reconnaissance de motifs, la recherche dans un graphe et de compression de données.

      Le code source des exemples du livre est disponible en téléchargement sur . Les exemples sont réalisés avec Visual Studio Community Edition sous Windows et avec Eclipse sous Linux Ubuntu.


  • Tables des matières
      • C++

      • 4e édition

      • Des fondamentaux du langage aux applications

      • Brice-Arnaud Guérin

      • Éditions ENI

      • Avant-propos
      • 1. Objectifs de ce livre13
      • 2. Travaux pratiques15
      • Chapitre 1
      • Premiers pas en C++
      • 1. Notions clés17
      • 1.1 Principales caractéristiques du langage C++17
      • 1.2 Programmation orientée objet19
      • 1.3 Environnement de développement et fichier makefile22
      • 1.3.1 Choix d'un EDI22
      • 1.3.2 Construction d'un fichier makefile23
      • 1.4 Organisation d'un programme C++27
      • 1.4.1 Codes sources27
      • 1.4.2 Modules objets30
      • 1.4.3 Bibliothèques (librairies)33
      • 1.4.4 Exécutable35
      • 1.5 Préprocesseur36
      • 1.6 Choix d'un compilateur36
      • 1.7 Éditeur de liens38
      • 2. Les premiers programmes38
      • 2.1 Les commentaires39
      • 2.2 Déclaration de variables39
      • 2.2.1 Utilité des variables39
      • 2.2.2 Portée des variables41
      • 2.2.3 Syntaxe de déclaration43
      • 2.2.4 Types de données43
      • 2.2.5 Les types entiers44
      • 2.2.6 Les types décimaux48
      • 2.2.7 Le booléen50
      • 2.2.8 Les caractères et les chaînes50
      • 2.3 Instructions de tests et opérateurs52
      • 2.3.1 Instructions de tests52
      • 2.3.2 Opérateurs55
      • 2.3.3 Opérateurs booléens59
      • 2.3.4 Opérateurs d'incrémentation60
      • 2.3.5 Instructions de boucle61
      • 2.3.6 La boucle while61
      • 2.3.7 La boucle for62
      • 2.3.8 La boucle do63
      • 2.3.9 Les instructions de débranchement63
      • 3. Tableaux54
      • 3.1 Déclarer des tableaux66
      • 3.2 Tableaux dynamiques67
      • 4. Fonctions et prototypes68
      • 4.1 Déclaration d'une fonction69
      • 4.2 Fonctions et procédures70
      • 4.3 Appel des fonctions71
      • 4.4 Gestion des variables locales72
      • 4.5 Définition de fonctions homonymes (polymorphisme)73
      • 4.6 Fonctions à nombre variable d'arguments74
      • 4.7 Attribution de valeurs par défaut aux arguments75
      • 4.8 Fonctions en ligne76
      • 4.9 Fonctions externes de type C77
      • 4.10 Fonctions récursives77
      • 4.11 La fonction main()79
      • Chapitre 2
      • De la mémoire pour les programmes
      • 1. Pointeurs81
      • 1.1 Pointeurs sur des variables82
      • 1.2 Pointeurs et tableaux86
      • 1.3 Allocation de mémoire88
      • 1.3.1 Allocation par malloc()89
      • 1.3.2 Allocation par new90
      • 1.4 Arithmétique des pointeurs91
      • 1.5 Pointeurs de pointeurs92
      • 1.6 Pointeurs de fonctions93
      • 1.6.1 Utilisation pour rendre les algorithmes génériques94
      • 1.6.2 Fonctions callback99
      • 2. Références101
      • 2.1 Une plus grande sécurité103
      • 2.2 Les références constantes103
      • 2.3 Renvoyer une référence depuis une fonction103
      • 3. Constantes104
      • 3.1 Constantes symboliques104
      • 3.2 Le type void105
      • 3.3 Les alias de type : typedef106
      • 3.4 Constantes et énumérations106
      • 4. Exercices pratiques107
      • 4.1 Rechercher la valeur maximale dans un tableau107
      • 4.1.1 Déclaration du tableau107
      • 4.1.2 Implémentation de l'algorithme sous forme d'une fonction107
      • 4.1.3 Exécution de l'algorithme108
      • 4.2 Rechercher l'adresse de la valeur maximale dans un tableau108
      • 4.3 Utiliser les références pour rechercher l'index de la valeur maximale dans un tableau109
      • Chapitre 3
      • Structuration des données
      • 1. Programmation structurée111
      • 1.1 Structures112
      • 1.2 Constitution d'une structure113
      • 1.3 Instanciation de structures114
      • 1.4 Instanciation au moment de la définition114
      • 1.5 Instanciation par réservation de mémoire115
      • 1.6 Instanciation avec l'opérateur new116
      • 1.7 Pointeurs et structures116
      • 1.8 Organisation de la programmation118
      • 1.8.1 Inclusion à l'aide de #include118
      • 1.8.2 Protection contre les inclusions multiples118
      • 1.9 Unions119
      • 1.10 Copie de structures122
      • 1.11 Création d'alias de types de structures124
      • 2. Structures et fonctions125
      • 2.1 Passer comme paramètre une structure par valeur125
      • 2.2 Passer comme paramètre une structure par référence126
      • 2.3 Passer comme paramètre une structure par adresse127
      • 2.4 De la programmation fonctionnelle à la programmation objet127
      • 2.5 Gestion de la mémoire128
      • 2.5.1 Alignement des données129
      • 2.5.2 Allocation de mémoire interprocessus130
      • 3. La bibliothèque standard du C131
      • 3.1 Les fonctions communes du langage C <stdlib.h>131
      • 3.2 Chaînes <string.h>132
      • 3.3 Fichiers <stdio.h>135
      • 4. Exercices pratiques140
      • 4.1 Les structures140
      • 4.2 La fonction d'initialisation140
      • 4.3 Les fonctions d'affichage141
      • 4.4 Les fonctions d'entrées et de sorties142
      • 4.5 La fonction principale144
      • 4.6 Exécution du programme et tests145
      • Chapitre 4
      • La programmation orientée objet
      • 1. Classes et instances147
      • 1.1 Définition de classe148
      • 1.2 Les modificateurs d'accès149
      • 1.3 Organisation de la programmation des classes153
      • 1.4 Instanciation155
      • 1.5 Constructeur156
      • 1.6 Le pointeur this158
      • 1.7 Destructeur159
      • 1.8 Destructeur virtuel160
      • 1.9 Allocation dynamique161
      • 1.10 Constructeur de copie163
      • 2. Héritage164
      • 2.1 Dérivation de classe (héritage)164
      • 2.2 Exemple de dérivation de classe165
      • 2.3 Héritage public, protégé et privé169
      • 2.4 Appel des constructeurs170
      • 2.5 Polymorphisme171
      • 2.6 Méthodes polymorphes171
      • 2.7 Conversions d'objets172
      • 2.8 Méthodes virtuelles et méthodes virtuelles pures173
      • 2.9 Héritage multiple178
      • 2.10 Notations particulières pour l'héritage multiple179
      • 2.11 Conséquences de l'héritage multiple sur la programmation181
      • 3. Autres aspects de la POO183
      • 3.1 Conversion dynamique183
      • 3.1.1 Conversions depuis un autre type183
      • 3.1.2 Opérateurs de conversion185
      • 3.1.3 Conversions entre classes dérivées186
      • 3.2 Champs et méthodes statiques187
      • 3.2.1 Champs statiques187
      • 3.2.2 Méthodes statiques189
      • 3.3 Surcharge d'opérateurs193
      • 3.3.1 Syntaxe193
      • 3.3.2 Surcharge de l'opérateur d'indexation195
      • 3.3.3 Surcharge de l'opérateur d'affectation196
      • 3.3.4 Surcharge de l'opérateur de conversion196
      • 3.4 Fonctions amies197
      • 3.5 Adressage relatif et pointeurs de membres198
      • 3.5.1 Notations199
      • 3.5.2 Construction d'un middleware orienté objet200
      • 4. Les exceptions plus sûres que les erreurs206
      • 4.1 Propagation explicite208
      • 4.2 Types d'exceptions personnalisés209
      • 4.2.1 Définition de classes d'exception209
      • 4.2.2 Instanciation de classes210
      • 4.2.3 Classes d'exception dérivées211
      • 4.3 Prise en charge d'une exception et relance212
      • 4.4 Exceptions non interceptées213
      • 4.5 Acquisition de ressources213
      • 5. Programmation générique216
      • 5.1 Modèles de fonctions216
      • 5.2 Modèles de classes221
      • 6. Travaux pratiques225
      • 6.1 Utilisation de l'héritage de classes dans l'interprète tiny-lisp225
      • 6.2 Des pointeurs de membres pour des fonctions callback227
      • Chapitre 5
      • La librairie standard STL
      • 1. Introduction233
      • 2. Organisation des programmes234
      • 2.1 Espaces de noms234
      • 2.1.1 Utilisation complète d'un espace de noms236
      • 2.1.2 Espace de noms réparti sur plusieurs fichiers237
      • 2.1.3 Relation entre classe et espace de noms238
      • 2.1.4 Déclaration de sous-espaces de noms240
      • 2.2 Présentation de la librairie STL241
      • 3. Flux C + + (entrées-sorties)241
      • 3.1 Généralités242
      • 3.2 Flux intégrés243
      • 3.3 État d'un flux243
      • 3.4 Mise en forme244
      • 3.5 Flux de fichiers245
      • 3.6 Flux de chaînes247
      • 3.7 Paramètres locaux248
      • 4. Classe string pour la représentation des chaînes de caractères250
      • 4.1 Représentation des chaînes dans la librairie STL251
      • 4.2 Mode d'emploi de la classe string252
      • 4.2.1 Fonctions de base252
      • 4.2.2 Constructeurs252
      • 4.2.3 Itérateurs253
      • 4.2.4 Accès aux éléments253
      • 4.3 Intégration dans le langage C+ +254
      • 4.3.1 Affectations254
      • 4.3.2 Comparaisons254
      • 4.3.3 Conversion avec le C255
      • 4.4 Fonctions spécifiques aux chaînes256
      • 4.4.1 Insertion256
      • 4.4.2 Concaténation256
      • 4.4.3 Recherche et remplacement257
      • 4.4.4 Extraction de sous-chaîne258
      • 5. Conteneurs dynamiques258
      • 5.1 Conteneurs259
      • 5.1.1 Insertion d'éléments et parcours260
      • 5.1.2 Itérateurs260
      • 5.1.3 Opérations applicables à un vecteur261
      • 5.2 Conteneurs standard262
      • 5.2.1 Itérateurs263
      • 5.2.2 Accès aux éléments263
      • 5.2.3 Opérations sur pile et file263
      • 5.2.4 Opérations sur listes263
      • 5.2.5 Opérations associatives264
      • 5.3 La séquence list264
      • 5.4 La séquence deque266
      • 5.5 Adaptateurs de séquences266
      • 5.6 La pile stack266
      • 5.7 La file queue267
      • 5.8 La file d'attente à priorité270
      • 5.9 Le conteneur associatif map270
      • 5.10 Les conteneurs associatifs multimap, set et multiset271
      • 6. Algorithmes272
      • 6.1 Opérations de séquence sans modification272
      • 6.2 Opérations de séquence avec modification273
      • 6.3 Séquences triées274
      • 6.4 Algorithmes ensemblistes275
      • 6.5 Minimum et maximum275
      • 6.6 Calcul numérique276
      • 6.6.1 Limites des formats ordinaires276
      • 6.6.2 Fonctions de la bibliothèque277
      • 6.6.3 Fonctions de la bibliothèque standard et classe valarray278
      • 7. Des apports du C + + moderne279
      • 7.1 Les lambda-expressions279
      • 7.2 L'inférence de type281
      • 7.3 De nouveaux types de boucles283
      • 7.4 Des pointeurs intelligents285
      • 8. Introduction à la bibliothèque boost289
      • 8.1 Installation de la bibliothèque289
      • 8.2 Un premier exemple avec boost291
      • 8.3 Domaines d'application293
      • 9. Travaux pratiques294
      • 9.1 La classe Variant294
      • 9.2 La méthode to_string()296
      • 9.3 La traduction JSON297
      • 9.3.1 La méthode statique to_json_string()297
      • 9.3.2 La méthode statique fromJson_string()299
      • Chapitre 6
      • Les environnements de C++
      • 1. L'environnement Windows303
      • 1.1 Les programmes Win32303
      • 1.1.1 Choix du mode de compilation304
      • 1.1.2 Fonctionnement des applications fenêtrées Win32305
      • 1.1.3 Création d'un projet d'application fenêtrée306
      • 1.1.4 Les types de données Win32309
      • 1.1.5 Les handles et les messages310
      • 1.1.6 La boucle de message311
      • 1.1.7 Les fichiers de ressource312
      • 1.2 L'environnement .NET314
      • 1.2.1 Le code managé et la machine virtuelle CLR314
      • 1.2.2 Les adaptations du langage C+ + CLI315
      • 1.2.3 La norme CTS315
      • 1.2.4 La classe System : :String318
      • 1.2.5 Le garbage collector320
      • 1.2.6 Fonctionnement du ramasse-miettes321
      • 1.2.7 Les tableaux et les fonctions à nombre variable d'arguments330
      • 1.2.8 Les propriétés332
      • 1.2.9 Les délégués et les événements334
      • 1.2.10 Les méthodes virtuelles336
      • 1.2.11 Les classes abstraites et les interfaces338
      • 1.2.12 Le framework .NET339
      • 1.2.13 Les références d'assemblages340
      • 1.2.14 L'espace de noms System : :IO341
      • 1.2.15 L'espace de noms System : :Xml342
      • 1.2.16 L'espace de noms System : :Data343
      • 1.2.17 L'espace de noms System : :Collections344
      • 1.2.18 L'espace de noms System : :Collections : :Generic345
      • 1.3 Les relations avec les autres langages : exemple du C#346
      • 2. Applications348
      • 2.1 Réaliser une application de dessin Win32348
      • 2.2 Une application en C+ + pour .NET : le tableur InCell357
      • 2.2.1 Architecture du tableur357
      • 2.2.2 La feuille de calcul358
      • 2.2.3 L'ordonnanceur de calcul367
      • 2.2.4 Zoom sur l'évaluateur374
      • 2.2.5 L'interface graphique372
      • 2.3 Un module de gestion de données pour tiny-lisp373
      • 2.3.1 Création de listes persistantes db_create374
      • 2.3.2 Accès aux listes persistantes db_use375
      • 2.3.3 Insertion d'items db_insert376
      • 2.3.4 Enregistrement des listes persistantes db_save378
      • 2.3.5 Sélection d'items dans les listes persistantes db_select379
      • Chapitre 7
      • Programmer des algorithmes en C++
      • 1. Introduction383
      • 2. Reconnaissance de motifs textuels383
      • 2.1 Approche directe384
      • 2.2 Lecture avec déplacement : l'algorithme Boyer-Moore386
      • 2.3 Méthode pour les motifs auto répétitifs : l'algorithme KMP387
      • 3. Recherche du plus court chemin391
      • 3.1 Présentation des graphes392
      • 3.1.1 Incidence et adjacence394
      • 3.1.2 Chemin d'un graphe394
      • 3.1.3 Le parcours de graphe en largeur d'abord398
      • 3.2 L'algorithme de Dijkstra401
      • 3.3 Utilisation d'une méthode avec euristique : l'algorithme A*404
      • 4. Comprimer des fichiers415
      • 4.1 Approche par statistique : l'algorithme d'Huffman415
      • 4.1.1 Implémentation du codage416
      • 4.1.2 Compression du fichier420
      • 4.1.3 Décompression422
      • 4.2 Approche par dictionnaire : l'algorithme LZW423
      • 4.2.1 Fonctionnement de l'algorithme423
      • 4.2.2 Implémentation du dictionnaire424
      • 4.2.3 Dimensionnement et gestion du dictionnaire429
      • 4.2.4 Programme de compression429
      • 4.2.5 Programme de décompression431
      • 5. Implémenter un réseau de neurones en C++434
      • 5.1 Un réseau de neurones pour l'algorithmique ?434
      • 5.2 Implémentation d'un réseau de neurones en C+ +435
      • 5.3 Une classe abstraite pour piloter le réseau439
      • 5.4 Modéliser une porte logique440
      • 5.5 Un moteur d'inférence pour l'arithmétique entière442
      • 5.5.1 Apprentissage des symboles444
      • 5.5.2 Utilisation du réseau445
      • Index451

  • Origine de la notice:
    • BPI
  • Disponible - A partir du 25 août 2025 - 681.229 GUE