INFORMATIONS GÉNÉRALES :

OBJECTIFS ET COMPÉTENSES CLÉS DE LA FORMATION

  • Compréhension des principes de la programmation C++
  • Apprendre la programmation orientée Objet avec C++
  • Être capable de développer en autonomie avec C++

PUBLIC CONCERNÉ

  • Toutes personnes intéressées par apprendre la programmation orientée Objet avec C++ et de développer en autonomie.

PRÉ-REQUIS

  • Toutes personnes ayant des connaissances C ou d’un langage proche

MODALITÉS D’ÉVALUATION ET VALIDATION

  • Contrôle des connaissances acquises
  • Attestation de stage

MODALITÉS DE DISPENSE

  • Présentiel et distanciel

MODALITÉS DE LA FORMATION

  • Apports théoriques, méthodologiques et étude de cas pratiques
  • Mises en situation
  • Boite à outils
  • Moyens : vidéoprojecteur ou écran digital, salle, paperboard

CONTENU : C++ Initiation et perfectionnement

Introduction

1. Historique du C++

    • Origines et évolution
    • Principales versions et standardisation (C++98, C++03, C++11, C++14, C++17, C++20, C++23)

         2. C par rapport au C++

    • Différences et similitudes
    • Transition de C à C++
    •  Avantages du C++ sur le C

3. C++ et les autres langages

    • Comparaison avec Java, Python, etc.
    • Cas d’utilisation spécifiques

4. Environnement et outils

    • IDE et éditeurs de code (Visual Studio, CLion, Code::Blocks)
    • Compilateurs (GCC, Clang, MSVC)
    • Débogage et profiling (GDB, Valgrind)

Généralités et rappels

 1. La compilation

    • Processus de compilation (préprocesseur, compilation, assemblage, linkage)
    • Gestion des dépendances (make, CMake)

2. Organisation d’une application en C++

    • Structure des fichiers sources et en-têtes
    • Utilisation des bibliothèques

3. Grammaire locale

    • Variables, types de données, structures de contrôle (boucles, conditions)
    • Fonction main

4. Fonctions standards d’E/S

    • iostream (cin, cout, cerr)
    • Manipulation de fichiers

Spécificités du C++

1. Formats d’affichage

    • Manipulateurs de flux (std::setw, std::setprecision)

2. Définition et utilisation des variables

    • Types principaux (int, float, double, char, bool)
    • Environnement d’exécution et gestion de la mémoire
    • Constantes typées (const, constexpr)

3. Arithmétique et opérations diverses

    • Opérations mathématiques et logiques
    • Conditions et opérateurs ternaires

4. Structures conditionnelles

    • if, else if, else
    • switch et case

5. Boucles et traitement de données multiples

    • Boucles for, while, do-while
    • Itération sur des conteneurs

6. Transtypage

    • Casts en C++ (static_cast, dynamic_cast, const_cast, reinterpret_cast)

7. Tableaux

    • Déclaration et manipulation de tableaux
    • Tableaux dynamiques (std::vector)

8. Pointeurs et références

    • Pointeurs, allocation dynamique (new, delete)
    • Références et leur utilisation

9. Enumérations

    • Enums classiques et enum class

Les fonctions

1. Prototypage et définition

    • Syntaxe et conventions

2. Surcharge de fonctions

    • Fonctionnalité et exemples

3. Fonctions inline et récursivité

    • Avantages et inconvénients
    • Cas d’utilisation

4. Arguments et paramètres

    • Passage par valeur, par adresse, par référence
    • Valeurs de retour

5. Organisation des fichiers sources

    • Fichiers .h et .cpp
    • Inclusion guard (#ifndef, #define, #endif)

Les structures – introduction à la Programmation Orientée Objet (POO)

1. Définition et utilisation

    • Syntaxe et exemples

2. Déclaration de méthodes

    • Méthodes membres et statiques

3. Variables de structure et utilisation dans les fonctions

    • Passage de structures comme arguments

4. Mot clé « mutable »

    • Utilisation et implications

Programmation Orientée Objet (POO)

1. Apports de l’objet sur le procédural

    • Concepts de base (encapsulation, héritage, polymorphisme)

2. Définition et utilisation de classes

    • Constructeurs, destructeurs, méthodes
    • Attributs et méthodes d’instances

3. Relations entre classes

    • Agrégation, composition, héritage

4. Encapsulation des données

    • Accesseurs et mutateurs (getters et setters)

5. Fonctions et classes amies

    • Utilisation du mot clé friend

6. Héritage multiple

    • Possibilités, problèmes et solutions

7. Polymorphisme et abstraction des classes

    • Classes abstraites et interfaces
    • Polymorphisme dynamique

8. Surcharge des opérateurs

    • Syntaxe et utilisation

Programmation générique (Templates)

1. Intérêt et utilisation

    • Quand utiliser des templates

2. Templates de fonction et de classe

    • Syntaxe et exemples

3. Instanciation de templates

    • Compilation et utilisation

Les espaces de nommage en C++

1. Définition et utilisation

    • namespace et alias de namespace

2. Directives using et using namespace

    • Bonnes pratiques et pièges à éviter