Cette formation a pour but de donner de solides bases en C++ dans sa version la plus moderne (C++ 14/17). A l'issue de la formation l'objectif est de:
- Comprendre les mécanismes de base et la syntaxe du C++ 14/17.
- Connaître les différents paradigmes de programmation en C++.
- Connaître et être en mesure d'utiliser les fonctionnalités les plus courantes de la bibliothèque standard.
- Connaître nombre de bonnes pratiques de programmation C++.
La présentation est disponible ici et s'appuie sur les notebooks Jupyter avec le noyau Xeus-cling. Le README indique comment installer facilement Xeus-cling sur votre portable, qui sera indispensable car la formation alterne présentations et TP.
Pré-requis sur votre portable
- Xeus-cling installé (voir le README).
- Avoir le wifi correctement configuré, idéalement avec eduroam actif (des identifiants de connexion temporaires seront sinon fournis).
- (optionnel) Avoir Docker installé.
Les inscriptions sont ouvertes sur cet Evento (MAJ: le lien a été changé; les inscriptions sur le précédent Evento sont bien prises en compte); la formation est gratuite et accessible à tous. Il est possible de ne pas assister à une des sessions mais il faut avoir conscience qu'elles ne sont pas complètement indépendantes et suivent une progression logique.
Contenu de la formation:
- Programmation procédurale
- Variables, initialisation, affectations
- Conditions et boucles
- Types prédéfinis
- Fonctions
- Allocation dynamique de la mémoire
- Entrées et sorties
- Programmation objet
- Introduction au concept de la programmation objet
- Fonctions membres
- Constructeurs (de base) et destructeur
- Encapsulation
- Attributs statiques
- Héritage et polymorphisme
- Opérateurs
- Introduction au concept de surcharge d'opérateurs
- Opérateurs de comparaison
- Opérateurs de flux (entrée/sortie)
- Opérateur d'affectation et forme canonique d'une classe
- Foncteurs
- Templates
- Introduction au concept de template
- Spécialisation
- Les syntaxes spéciales: mots-clés typename, template et this obligatoire
- Métaprogrammation
- Tease pour des concepts plus avancés avec les templates
- Concepts utiles et librairie standard (STL)
- Gestion des erreurs
- Idiome RAII
- Conteneurs
- Conteneurs associatifs
- La "move semantics"
- Les smart pointers
- Les algorithmes de la STL
- C++ en environnement réel
- Mise en place d'un environnement minimal
- La structure des fichiers pour un programme C++
- Compilateurs
- Librairies tierces: comment les inclure sans récupérer leurs warnings de compilation
- Les namespace
- Outils divers