Durée: 5 demi-journées

Dates: du jeudi 13 octobre au mardi 18 octobre

Horaires: 9h30 - 17h30

Lieu: Inria Saclay - Bâtiment Turing - Salle Grace Hopper

Intervenants: Sébastien Gilles, Vincent Rouvreau et Laurent Steff (SED Saclay)

Cette formation a pour but de donner de solides bases en C++ dans sa version la plus moderne (C++ 14/17 avec quelques notions de C++20 - ce dernier est encore peu supporté par les compilateurs). A l'issue de la formation l'objectif est de:

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

Aucun pré-requis fort n'est requis: une version déployable sur BinderHub est disponible cette année.

Il est néanmoins conseillé de procéder à une installation locale de Xeus-cling (voir le README: le déploiement sur Binder prend quelques minutes).

Optionnellement, une image Docker est fournie au besoin pour les TP.

Inscriptions et format

Vous pouvez vous inscrire à la formation ici; merci de nous signaler en amont de la formation si vous vous êtes inscrits mais ne pouvez finalement pas y participer.

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:

  1. Programmation procédurale
    • Variables, initialisation, affectations
    • Conditions et boucles
    • Types prédéfinis
    • Fonctions
    • Allocation dynamique de la mémoire
    • Entrées et sorties
  2. Programmation objet
    • Introduction au concept de la programmation objet
    • Fonctions membres
    • Constructeurs (de base) et destructeur
    • Encapsulation
    • Attributs statiques
    • Héritage et polymorphisme
  3. 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
  4. 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
  5. 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
  6. 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