Durée: 5 demi-journées

Dates: du lundi 17 mai au vendredi 21 mai

Horaires: 14h00 - 17h30

Lieu: Visioconférence (un lien sera donné aux inscrits)

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

Cette formation a pour but de donner de solides bases en C++ dans sa version la plus moderne (C++ 14/17 - le C++ 20 n'est pas encore abordé mais le sera dans une version future de cette formation). 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

Les inscriptions sont closes.

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.

En raison de la crise sanitaire, le format est modifié cette année:

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