Descriptif
C++ moderne est une formation de 5 jours (35 heures), de niveau intermédiaire, rattachée au domaine « Développement logiciel, informatique et Web ». Programmer en C++ moderne. Conçue et animée par des praticiens en activité, elle alterne apports ciblés (30 %) et mises en pratique (70 %) sur des laboratoires cloud individuels, avec des cas inspirés des secteurs banque, assurance et services publics. Disponible en inter-entreprises, en intra sur catalogue et en version sur mesure adaptée au contexte de l'entreprise.
Objectifs pédagogiques
À l'issue de la formation, le participant sera capable de :
- Syntaxe
- Objets
- STL
- Gestion mémoire
- C++17 et C++20
Programme détaillé
| N° | Contenus et activités | Durée |
|---|---|---|
| Jour 1 | ||
| 1 | Cadrage : pratiques C++ des participants, versions et normes en production, prise en main de l'environnement de compilation accessible par navigateur — GCC, Clang et CMake préinstallés, aucun outil à installer sur le poste | 0,5 h |
| 2 | Chaîne de construction : unité de compilation, édition de liens, options de GCC et de Clang, projet CMake minimal, cibles et dépendances | 1,5 h |
| 3 | Travaux pratiques : créer le projet CMake du fil rouge « analyseur de journaux », compiler avec GCC puis avec Clang, activer les avertissements stricts et les sanitizers | 2 h |
| 4 | Types et expressions du C++ moderne : auto, références, const-correctness, enum class, liaisons structurées, initialisation uniforme | 1,5 h |
| 5 | Travaux pratiques : coder la lecture et le découpage d'un fichier de journal en enregistrements typés | 1,5 h |
| Jour 2 | ||
| 6 | Classes : constructeurs et destructeur, règle des cinq et règle du zéro, listes d'initialisation, surcharge d'opérateurs, agrégats | 1,5 h |
| 7 | Travaux pratiques : implémenter la classe LogEntry et un conteneur de statistiques copiable et déplaçable | 2 h |
| 8 | Sémantique de déplacement et durée de vie : lvalue et rvalue, std::move, élision de copie, coût réel des copies | 1,5 h |
| 9 | Travaux pratiques : mesurer les copies superflues de l'analyseur, les supprimer et comparer les temps d'exécution avant et après | 2 h |
| Jour 3 | ||
| 10 | La bibliothèque standard : conteneurs séquentiels et associatifs, itérateurs, complexités garanties, critères de choix du bon conteneur | 1,5 h |
| 11 | Travaux pratiques : indexer les événements par sévérité et par service avec vector, map et unordered_map, puis comparer empreinte mémoire et performances | 2 h |
| 12 | Algorithmes standards et lambdas : sort, transform, accumulate, find_if, puis les ranges et les vues de C++20 | 1,5 h |
| 13 | Travaux pratiques : réécrire les boucles de l'analyseur avec les algorithmes standards puis avec std::ranges, et arbitrer entre lisibilité et coût | 2 h |
| Jour 4 | ||
| 14 | Gestion mémoire : pile et tas, idiome RAII, unique_ptr, shared_ptr et weak_ptr, propriété exclusive ou partagée, cycles de références | 2 h |
| 15 | Travaux pratiques : remplacer les allocations brutes du fil rouge par des pointeurs intelligents et traquer les fuites avec AddressSanitizer | 2 h |
| 16 | Templates et généricité : fonctions et classes templates, déduction des arguments, spécialisation, concepts et contraintes de C++20 | 1,5 h |
| 17 | Travaux pratiques : rendre le moteur d'agrégation générique en contraignant les types agrégables par un concept | 1,5 h |
| Jour 5 | ||
| 18 | C++17 et C++20 en situation : optional, variant, string_view, filesystem, constexpr, modules et coroutines — usages pertinents et pièges | 2 h |
| 19 | Travaux pratiques : introduire string_view et optional dans l'analyseur et parcourir l'arborescence de journaux avec std::filesystem | 2 h |
| 20 | Concurrence : thread et jthread, mutex, variables atomiques, std::async, pièges de la mémoire partagée | 1,5 h |
| 21 | Travaux pratiques : paralléliser l'analyse de plusieurs fichiers et valider l'absence de course avec ThreadSanitizer | 1 h |
| 22 | Évaluation des acquis, revue croisée du code du fil rouge et plan de progression individuel | 0,5 h |
Méthodes pédagogiques
- Pédagogie active : 51 % du temps en pratique encadrée — laboratoires cloud provisionnés par participant, travaux pratiques guidés, fil rouge applicatif —, le reste en apports structurés, démonstrations commentées, cadrage et évaluation
- répartition calculée sur le déroulé détaillé de cette formation, et non annoncée de façon uniforme
- classe inversée avec prérequis sur le LMS
- apprentissage adaptatif selon le positionnement initial
- travaux en binômes
- classe virtuelle en séquences de 3 h 30 maximum sur Microsoft Teams
- support clair, complet et paginé remis à chaque participant
Technologies et outils mobilisés
C++20, CMake, GCC, Clang
Modalités d'évaluation et de validation
- Positionnement initial en ligne
- quiz de validation à chaque séquence
- évaluation finale des acquis (QCM et mise en situation)
- satisfaction à chaud
- questionnaire de transfert à 30 jours
- attestation de fin de formation
Plateforme, laboratoires et ressources
- LMS DATAROCKSTARS : parcours, supports numériques, quiz, évaluations, émargement par demi-journée
- laboratoires cloud individuels accessibles depuis un navigateur, sans installation, données fictives, détruits en fin de session
- bibliothèque O'Reilly (plus de 60 000 ressources)
- accès aux supports pendant 6 mois
