Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. C++ - Des fondamentaux du langage aux applications (3e édition)

C++ Des fondamentaux du langage aux applications (3e édition)

C++ - Des fondamentaux du langage aux applications (3e édition)

Informations

Livraison possible dès le 11 décembre 2023
  • Livraison à partir de 0,01 €
  • Version en ligne offerte pendant 1 an
Livres rédigés par des auteurs francophones et imprimés à Nantes

Caractéristiques

  • Livre (broché) - 17 x 21 cm
  • ISBN : 978-2-409-03020-8
  • EAN : 9782409030208
  • Ref. ENI : RI3CPP

Informations

  • Consultable en ligne immédiatement après validation du paiement et pour une durée de 10 ans.
  • Version HTML
Livres rédigés par des auteurs francophones et imprimés à Nantes

Caractéristiques

  • HTML
  • ISBN : 978-2-409-03021-5
  • EAN : 9782409030215
  • Ref. ENI : LNRI3CPP
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 est une transition vers C++, il explique les notions clés pour créer ses premières applications : structures, pointeurs, bibliothèques standards…...
Consulter des extraits du livre en ligne Aperçu du livre papier
  • Niveau Initié à Confirmé
  • Nombre de pages 480 pages
  • Parution mai 2021
  • Niveau Initié à Confirmé
  • Parution mai 2021
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 est une transition vers C++, il explique les notions clés pour créer ses premières applications : structures, pointeurs, bibliothèques standards… Le troisième chapitre détaille la programmation orientée objet et les 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 également é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 ou encore un programme de compression de fichiers.

L'ouvrage se termine par un chapitre consacré à l'optimisation, aux méthodes de conception orientée objet UML et aux design patterns puis 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 www.editions-eni.fr. Les exemples sont réalisés avec Visual Studio Community Edition sous Windows et avec Eclipse sous Linux Ubuntu.

Téléchargements

Avant-propos
  1. Objectifs de ce livre
  2. Travaux pratiques
Introduction
  1. Notions clés
    1. 1. Principales caractéristiques du langage C++
    2. 2. Programmation orientée objet
    3. 3. Environnement de développement et fichier makefile
      1. a. Choix d’un EDI
      2. b. Construction d’un fichier makefile
    4. 4. Organisation d’un programme C++
      1. a. Codes sources
      2. b. Modules objets
      3. c. Bibliothèques (librairies)
      4. d. Exécutable
    5. 5. Préprocesseur
    6. 6. Choix d’un compilateur
    7. 7. Éditeur de liens
  2. Bases de la programmation C++
    1. 1. Déclaration de variables
      1. a. Utilité des variables
      2. b. Portée des variables
      3. c. Syntaxe de déclaration
      4. d. Types de données
    2. 2. Instructions de tests et opérateurs
      1. a. Instructions de tests
      2. b. Opérateurs
    3. 3. Instructions de boucle
      1. a. La boucle for
      2. b. La boucle while
      3. c. La boucle do
      4. d. Les instructions de débranchement
    4. 4. Tableaux
    5. 5. Fonctions et prototypes
      1. a. Déclaration d’une fonction
      2. b. Fonctions et procédures
      3. c. Appel des fonctions
      4. d. Gestion des variables locales
      5. e. Définition de fonctions homonymes (polymorphisme)
      6. f. Fonctions à nombre variable d’arguments
      7. g. Attribution de valeurs par défaut aux arguments
      8. h. Fonctions en ligne
      9. i. Fonctions externes de type C
      10. j. Fonctions récursives
      11. k. La fonction main()
    6. 6. Pointeurs
      1. a. Pointeurs sur des variables
      2. b. Pointeurs et tableaux
      3. c. Allocation de mémoire
      4. d. Arithmétique des pointeurs
      5. e. Pointeurs de pointeurs
      6. f. Pointeurs de fonctions
    7. 7. Références
    8. 8. Constantes
      1. a. Constantes symboliques
      2. b. Le type void
      3. c. Les alias de type : typedef
      4. d. Constantes et énumérations
  3. Exceptions
    1. 1. Les approches de bas niveau
      1. a. Drapeaux et interruptions
      2. b. Traitement des erreurs en langage C
    2. 2. Les exceptions plus sûres que les erreurs
    3. 3. Propagation explicite
    4. 4. Types d’exceptions personnalisés
      1. a. Définition de classes d’exception
      2. b. Instanciation de classes
      3. c. Classes d’exception dérivées
    5. 5. Prise en charge d’une exception et relance
    6. 6. Exceptions non interceptées
    7. 7. Acquisition de ressources
  4. Travaux pratiques
    1. 1. Prise en main de l’interprète tiny-lisp
      1. a. Structure de la solution
      2. b. Le dossier config
      3. c. Le dossier framework
      4. d. Le dossier jsonlib
      5. e. Le dossier langage
      6. f. Le dossier modules
      7. g. Le dossier scriptboxes
    2. 2. Utiliser l’interprète en mode interactif
    3. 3. Code de la boucle principale
      1. a. La fonction main()
      2. b. La boucle eval_loop()
      3. c. Utiliser le débogueur
    4. 4. Utiliser l’interprète depuis tinylisplab
De C à C++
  1. Programmation structurée
    1. 1. Structures
      1. a. Constitution d’une structure
      2. b. Instanciation de structures
      3. c. Instanciation avec l’opérateur new
      4. d. Pointeurs et structures
      5. e. Organisation de la programmation
    2. 2. Unions
    3. 3. Copie de structures
    4. 4. Création d’alias de types de structures
    5. 5. Structures et fonctions
      1. a. Passer une structure par valeur comme paramètre
      2. b. Passer une structure par référencecomme paramètre
      3. c. Passer une structure par adresse comme paramètre
      4. d. De la programmation fonctionnelle à la programmationobjet
  2. Gestion de la mémoire
    1. 1. Alignement des données
    2. 2. Allocation de mémoire interprocessus
  3. La bibliothèque standard du C
    1. 1. Les fonctions communes du langage C <stdlib.h></stdlib.h>
    2. 2. Chaînes <string.h></string.h>
    3. 3. Fichiers <stdio.h></stdio.h>
  4. Travaux pratiques
    1. 1. Chargement de scripts dans tiny-lisp
    2. 2. Supprimer les erreurs liées à lalibrairie non sécurisée
Programmation orientée objet
  1. Classes et instances
    1. 1. Définition de classe
      1. a. Les modificateurs d’accès
      2. b. Organisation de la programmation des classes
    2. 2. Instanciation
    3. 3. Constructeur et destructeur
      1. a. Constructeur
      2. b. Le pointeur this
      3. c. Destructeur
      4. d. Destructeur virtuel
    4. 4. Allocation dynamique
    5. 5. Constructeur de copie
  2. Héritage
    1. 1. Dérivation de classe (héritage)
      1. a. Exemple de dérivation de classe
      2. b. Héritage public, protégé etprivé
      3. c. Appel des constructeurs
    2. 2. Polymorphisme
      1. a. Méthodes polymorphes
      2. b. Conversions d’objets
    3. 3. Méthodes virtuelles et méthodesvirtuelles pures
    4. 4. Héritage multiple
      1. a. Notations particulières
      2. b. Conséquences sur la programmation
  3. Autres aspects de la POO
    1. 1. Conversion dynamique
      1. a. Conversions depuis un autre type
      2. b. Opérateurs de conversion
      3. c. Conversions entre classes dérivées
    2. 2. Champs et méthodes statiques
      1. a. Champs statiques
      2. b. Méthodes statiques
    3. 3. Surcharge d’opérateurs
      1. a. Syntaxe
      2. b. Surcharge de l’opérateur d’indexation
      3. c. Surcharge de l’opérateur d’affectation
      4. d. Surcharge de l’opérateur de conversion
    4. 4. Fonctions amies
    5. 5. Adressage relatif et pointeurs de membres
      1. a. Notations
      2. b. Construction d’un middleware orienté objet
    6. 6. Programmation générique
      1. a. Modèles de fonctions
      2. b. Modèles de classes
  4. Travaux pratiques
    1. 1. Utilisation de l’héritage de classes dansl’interprète tiny-lisp
    2. 2. Des pointeurs de membres pour des fonctions callback
La bibliothèque Standard Template Library
  1. Introduction
  2. Organisation des programmes
    1. 1. Espaces de noms
      1. a. Utilisation complète d’un espace de noms
      2. b. Espace de noms réparti sur plusieurs fichiers
      3. c. Relation entre classe et espace de noms
      4. d. Déclaration de sous-espaces de noms
    2. 2. Présentation de la STL
  3. Flux C++ (entrées-sorties)
    1. 1. Généralités
    2. 2. Flux intégrés
    3. 3. État d’un flux
    4. 4. Mise en forme
    5. 5. Flux de fichiers
    6. 6. Flux de chaînes
    7. 7. Paramètres locaux
  4. Classe string pour la représentation des chaînes de caractères
    1. 1. Représentation des chaînes dansla STL
    2. 2. Mode d’emploi de la classe string
      1. a. Fonctions de base
      2. b. Intégration dans le langage C++
      3. c. Fonctions spécifiques aux chaînes
  5. Conteneurs dynamiques
    1. 1. Conteneurs
      1. a. Insertion d’éléments et parcours
      2. b. Itérateurs
      3. c. Opérations applicables à un vecteur
    2. 2. Séquences
      1. a. Conteneurs standards
      2. b. Séquences
      3. c. Adaptateurs de séquences
      4. d. Conteneurs associatifs
    3. 3. Algorithmes
      1. a. Opérations de séquence sans modification
      2. b. Opérations de séquence avec modification
      3. c. Séquences triées
      4. d. Algorithmes de définition
      5. e. Minimum et maximum
    4. 4. Calcul numérique
      1. a. Limites des formats ordinaires
      2. b. Fonctions de la bibliothèque
      3. c. Fonctions de la bibliothèque standard etclasse valarray
    5. 5. Des apports du C++ moderne
      1. a. Les lambda-expressions
      2. b. L’inférence de type
      3. c. De nouveaux types de boucles
      4. d. Des pointeurs intelligents
    6. 6. Introduction à la bibliothèque boost
      1. a. Installation de la bibliothèque
      2. b. Un premier exemple avec boost
      3. c. Domaines d’application
  6. Travaux pratiques
    1. 1. La classe Variant
    2. 2. La méthode to_string()
    3. 3. La traduction JSON
      1. a. La méthode statique to_json_string()
      2. b. La méthode statique from_json_string()
Les univers de C++
  1. L'environnement Windows
    1. 1. Les programmes Win32
    2. 2. Choix du mode de compilation
    3. 3. Fonctionnement des applications fenêtréesWin32
      1. a. Création d’un projet d’application fenêtrée
      2. b. Les types de données Win32
      3. c. Les handles et les messages
      4. d. La boucle de message
      5. e. Les fichiers de ressource
  2. L'environnement .NET
    1. 1. Le code managé et la machine virtuelle CLR
    2. 2. Les adaptations du langage C++ CLI
      1. a. La norme CTS
      2. b. La classe System::String
      3. c. Le garbage collector
      4. d. Construction et destruction d’objets
      5. e. La référence de suivi % etle handle ^
      6. f. Le pointeur interne et les zones épinglées
      7. g. Les tableaux et les fonctions à nombre variabled’arguments
      8. h. Les propriétés
      9. i. Les délégués et les événements
      10. j. Les méthodes virtuelles
      11. k. Les classes abstraites et les interfaces
    3. 3. Le framework .NET
      1. a. Les références d’assemblages
      2. b. L’espace de noms System::IO
      3. c. L’espace de noms System::Xml
      4. d. L’espace de noms System::Data
      5. e. L’espace de noms System::Collections
      6. f. L’espace de noms System::Collections::Generic
      7. g. Le portage de la STL pour le C++ CLI
    4. 4. Les relations avec les autres langages : C#
  3. Travaux pratiques
    1. 1. Réaliser une application de dessin Win32
    2. 2. Une application en C++ pour .NET: le tableur InCell
      1. a. Architecture du tableur
      2. b. La feuille de calcul
      3. c. L’ordonnanceur de calcul
      4. d. Zoom sur l’évaluateur
      5. e. L’interface graphique
    3. 3. Un module de gestion de données pour tiny-lisp
      1. a. Création de listes persistantes db_create
      2. b. Accès aux listes persistantes db_use
      3. c. Insertion d’items db_insert
      4. d. Enregistrement des listes persistantes db_save
      5. e. Sélection d’items dans les listes persistantesdb_select
Des programmes C++ efficaces
  1. Dépasser ses programmes
    1. 1. Oublier les réflexes du langage C
    2. 2. Gestion de la mémoire
    3. 3. Concevoir des classes avec soin
    4. 4. Y voir plus clair parmi les possibilitésde l’héritage
    5. 5. Analyser l’exécution d’unprogramme C++
  2. La conception orientée objet (COO)
    1. 1. Relation entre la POO et la COO
      1. a. L’approche initiale de C++
      2. b. UML et C++
    2. 2. Les design patterns
  3. Travaux pratiques
    1. 1. L’objectif du programme
    2. 2. Le diagramme de classes
    3. 3. La fabrique SimpleFactory
    4. 4. L’injection de dépendances
Des algorithmes appliqués en C++
  1. Introduction
  2. Reconnaissance de motifs textuels
    1. 1. Approche directe
    2. 2. Lecture avec déplacement : l’algorithme BoyerMoore
    3. 3. Méthode pour les motifs auto répétitifs: l’algorithme KMP
    4. 4. Méthode pour des motifs variables
  3. Recherche du plus court chemin
    1. 1. Présentation des graphes
      1. a. Incidence et adjacence
      2. b. Chemin d’un graphe
      3. c. Implémentation des graphes orientéset non orientés
    2. 2. Le parcours de graphe en largeur d’abord
    3. 3. L’algorithme de Dijkstra
    4. 4. Utilisation d’une méthode avec heuristique: l’algorithme A*
      1. a. Implémentation en C++
      2. b. Exécution
  4. Comprimer des fichiers
    1. 1. Approche par statistique : l’algorithme d’Huffman
      1. a. Implémentation du codage
      2. b. Compression du fichier
      3. c. Décompression
    2. 2. Approche par dictionnaire : l’algorithme LZW
      1. a. Fonctionnement de l’algorithme
      2. b. Implémentation du dictionnaire
      3. c. Dimensionnement et gestion du dictionnaire
      4. d. Programme de compression
      5. e. Programme de décompression
Auteur : Brice-Arnaud GUÉRIN

Brice-Arnaud GUÉRIN

Ingénieur ESIEA, Brice-Arnaud GUERIN est Directeur de programmes chez Kantar et auteur aux Editions ENI depuis 2003. Ses compétences en développement et son désir de partager ses connaissances l'ont naturellement conduit à l'écriture d'ouvrages consacrés à la conduite de projets et à la réalisation d'applications (C++, .NET, PHP).
En savoir plus

Découvrir tous ses livres

  • PHP et MySQL : Cours et Exercices corrigés Maîtrisez le développement d'une application web collaborative (2e édition)
  • Passer à l'Agile Coffret de 2 livres : De la compréhension à la mise en place avec Scrum (2e édition)
  • ASP.NET avec C# sous Visual Studio 2022 Conception et développement d'applications web
  • Conduite de projets informatiques Développement, analyse et pilotage (5e édition)
  • PHP et MySQL Entraînez-vous à développer une application collaborative
  • C# 10 et ASP.NET Coffret de 2 livres : Développement d'applications web avec Visual Studio 2022

Nos nouveautés

voir plus