Objectifs du cours
Quand l’apprentissage du C++ se fait “sur le tas”, on paie vite le prix : styles hétérogènes, bugs mémoire et temps de relecture perdu. Cette session d’initiation structurée aligne vos équipes sur une base commune, claire et moderne : syntaxe, contrôles, fonctions, POO d’intro et organisation du code en .h/.cpp. On privilégie les réflexes utiles (usage de std::string/std::vector, trois algorithmes STL incontournables, gestion d’erreurs simple) et des exercices concrets pour transférer immédiatement dans vos projets. Sans noyer les débutants, on ouvre les portes des pratiques pro (aperçu RAII/smart pointers, CMake minimal) pour préparer la montée en puissance.
Résultat : des premiers programmes lisibles et maintenables, moins d’écueils, et une courbe d’apprentissage sous contrôle.
Les participants apprendront à :
- Comprendre la syntaxe C++ et les structures de contrôle principales.
- Écrire et organiser des fonctions ; manipuler types, références et pointeurs de base.
- Structurer un projet simple : séparation .h/.cpp, namespace, compilation sans warnings.
- S’initier à la POO : classes, encapsulation, constructeurs/destructeur, invariants élémentaires.
- Utiliser std::string, std::vector et 3 algorithmes STL clés (std::sort, std::find, std::accumulate).
- Mettre en place une gestion d’erreurs simple (assertions, exceptions basiques).
- Découvrir (aperçu) RAII/smart pointers et un CMake minimal pour standardiser le build.
Public
- Débutants en programmation, Étudiants, Développeurs souhaitant apprendre le C++
Prérequis
- Notions d’algorithmique (conditions, boucles, fonctions) et aisance avec un environnement de développement.
Contenu du cours
Partie 1 : Découverte du langage C++
- Structure d’un programme C++ et point d’entrée main().
- Utilisation de la console : flux d’entrée/sortie (cin, cout).
- Types de données, initialisation uniforme (C++11).
- Inférence automatique des types (auto, C++11).
- Structures de contrôle : if, switch, for, while, évolutions C++17/20.
- Enumérations traditionnelles et modernes (C++11/20).
- Fonctions : paramètres, retour, spécificateurs (inline, constexpr).
Partie 2 : Notions avancées de base
- Fonctions lambda (C++11/14/17).
- Tableaux et la classe std::array (C++11).
- Présentation de la bibliothèque standard (STL).
- Mémoire : data segment, stack, heap.
- Pointeurs, références, constantes.
- Manipulation de std::string.
- Allocation/désallocation dynamique.
- Utilisation des espaces de noms (namespace).
- Organisation du code : headers et implémentations.
Partie 3 : Programmation orientée objet (POO)
- Définition de classes et création d’objets.
- Cycle de vie des objets et principes de modélisation UML.
- Encapsulation, visibilité (public, private, protected).
- Méthodes, constructeurs, destructeurs.
- Initialisation des membres (ZIM).
- Mécanismes friend, surcharge des méthodes et opérateurs.
- Membres static, agrégation vs composition.
- Spécificateurs modernes (default, delete, override, final).
- Héritage simple, polymorphisme, interfaces.
- Destructeurs virtuels, héritage privé/protégé.
- Clonage d’objets : constructeur de recopie, opérateur d’affectation.
Partie 4 : Gestion des erreurs et robustesse dynamique
- Assertions et gestion des erreurs.
- Lancement, propagation, interception d’exceptions (try/catch).
- Création de classes d’exception personnalisées.
- Utilisation de noexcept (C++11) pour contrôler les exceptions.