Formation C++ Programmation Avancée Expert

Public admis

  • Salarié en Poste
  • Demandeur d'emploi
  • Entreprise
  • Etudiant

Financements

Eligible CPF Votre OPCO Financement personnel

Objectifs de la formation

Cette formation C++ Programmation Avancée Expert vous donne les connaissances et compétences nécessaires pour :

  • Maîtriser les meilleures pratiques concernant l’utilisation des classes
  • Comprendre le besoin et les pièges des conversions (cast)
  • Comprendre l’intérêt du Run-time type information (RTTI)
  • Maîtriser l’utilisation des pointeurs (sur membres, smart pointers, etc.)
  • Savoir mettre en œuvre les expressions lambdas
  • Programmer efficacement les exceptions
  • Savoir programmer et utiliser les templates et certains idiomes
  • Savoir mettre en œuvre le multi-threading
  • Gérer un objet qui se comporte comme une fonction (foncteur)
  • Utiliser la puissance de la bibliothèque STL (Standard Template Library)
  • Connaître les dernières nouveautés du C++20/23

PLB CONSULTANT


Informatique et Management
Voir la fiche entreprise

Tarif

A partir de 2 360,00 €

Durée 4 jours (28h)
Modes
  • Centre
  • Entreprise
  • Distance
Sessions
Lieux Partout en France

PLB CONSULTANT


Informatique et Management
Voir la fiche

Tarif

A partir de 2 360,00 €

Durée 4 jours (28h)
Modes
  • Centre
  • Entreprise
  • Distance
Sessions
Lieux Partout en France

Description

Le C++ est un langage très technique et très riche. Il faut du temps pour le maîtriser car la syntaxe du C, conjuguée avec la mécanique des pointeurs mémoire, la programmation objet et les puissantes bibliothèques demandent une attention de tous les instants.

Cette formation C++ Programmation Avancée Expert vous permettra de maîtriser le langage C++, jusqu’à la version C++23

Programme

Rappels sur les classes en C++

Forme canonique d'une classe
Rôle du constructeur de copie
Surcharge de l'opérateur d’affectation
Constructeurs et allocation dynamique de mémoire
Intérêt d'un destructeur virtuel
Pièges à éviter

Travaux Pratiques :Exécution d'exemples pédagogiques illustrant les concepts présentés

Les pointeurs sur membres de classes

Syntaxe des pointeurs sur membres de classes
Mise en œuvre
Travaux Pratiques :Utilisation de pointeurs sur méthodes pour effectuer des calculs mathématiques

Utilisation avancée de l’héritage

Comparaison héritages public, privé et protégé
Héritages multiple et multiple répété
Héritage virtuel et conséquences
Principe de substitution de Liskov
Travaux Pratiques :Mise en œuvre d’un héritage multiple répété avec polymorphisme

L’identification de type à l'exécution (RTTI)

Principe et cas d'utilisation
Utilisation du dynamic_cast pour effectuer un downcast dans une hiérarchie de classes
Utilisation de l'opérateur typeid et de la classe type_info
Travaux Pratiques :Mise en œuvre de RTTI pour effectuer un affichage spécifique d'un objet faisant partie d'une hiérarchie de classes

Les conversions en C++

Présentation des conversions, syntaxe
Utilisation du const_cast pour enlever un caractère const
Utilisation du static_cast pour effectuer une conversion standard
Utilisation du reinterpret_cast pour effectuer une conversion forte
Utilisation du dynamic_cast dans une hiérarchie de classes
Conversion via constructeurs ou l’opérateur de conversion
Rôle du mot-clé explicit
Travaux Pratiques :Choix du type de cast et mise en œuvre dans différentes situations

Les templates

Rappels sur les templates
Avantages/inconvénients
Instanciation implicite vs explicite
Surcharge de fonctions templates
Paramètres templates par défaut
Spécialisation partielle ou totale des templates
Assertions statiques avec static_assert
Les variadic templates
Les variables templates
Les concepts et contraintes
Travaux Pratiques :Mise en œuvre d'une fonction template avec surcharge et spécialisation
Mise en œuvre d'une classe template avec spécialisation complète
Mise en œuvre d'une classe template template avec spécialisation partielle
Mise en œuvre des variadic templates
Mise en œuvre des concepts et contraintes sur un template

Les idiomes et la méta-programmation

Analyse de quelques idiomes :Traits, Policy, SFINAE, CRTP 
Méta-programmation : comment exécuter à la compilation
Les mot-clés constexpr et consteval
Avantages/inconvénients
Optimisations
Travaux Pratiques :Mise en œuvre de chacun des 4 idiomes étudiés
Mise en œuvre de la méta-programmation pour effectuer des calculs mathématiques par le compilateur

Les pointeurs intelligents (smart pointers)

Principe de la gestion RAII des ressources
Danger des pointeurs bruts
Intérêt des smart pointers
Mise en œuvre de unique_ptr, shared_ptr, weak_ptr
Utilisation de make_unique et make_shared
Mise en œuvre d’un destructeur personnalisé
Travaux Pratiques (à titre indicatif)Mise en œuvre, dans une petite application, de la technique RAII par remplacement des pointeurs bruts par des pointeurs intelligents.

La gestion des exceptions

Principe du traitement des anomalies
Utilisation des mots-clés try, catch et throw
Traiter les exceptions sur place
Propager les exceptions
Lever une exception
Créer ses propres classes d’exception
Le mot-clé noexcept
Échange d’exceptions entre threads avec std ::exception_ptr
Travaux Pratiques (à titre indicatif)Calcul de la somme des soldes mensuels d’un compte bancaire par lecture d’un fichier CSV avec mise en œuvre d’un traitement sur place d’exceptions puis en propageant les exceptions à la fonction appelante

Les fonctions et foncteurs

Retour de type auto d’une fonction
Rôle de decltype
Principe du copy ellision avec RVO (Return Value Optimization)
Utilisation d'adaptateurs de fonctions unaires et binaires
Principe et intérêt des foncteurs
Foncteurs prédéfinis dans la bibliothèque standard
Travaux Pratiques :Mise en œuvre du RVO dans une fonction
Mise en œuvre d'un foncteur avec l'algorithme for_each pour afficher le contenu d'un vector

La programmation fonctionnelle avec les expressions lambdas

Les lambda-expressions : syntaxe, typage, utilisation
La gestion des fermetures (closures) liées au contexte 
Les lambdas génériques
Travaux pratiques :Mise en œuvre des expressions lambda en remplacement des foncteurs
Mise en œuvre d’expressions lambdas simples, puis génériques

Utilisation des références rvalue

Comparaison lvalue/rvalue
Rappels sur les références lvalue
Utilité des adaptateurs de référence
Définition des rvalue références
Applications des rvalue références : move semantics et perfect forwarding
Bonne utilisation de std::move et std::forward
Les adaptateurs de référence std ::reference_wrapper
Les signature reference qualifiers
Travaux Pratiques :Mise en œuvre des références rvalue pour la création et la copie d'objet par déplacement

Utilisation des threads

Déclarer et exécuter un thread 
Cible d’un thread : fonction, foncteur, lambda
Passage de paramètres à la cible d’un thread
Détachement d’un thread
Fonctions gérant le thread courant : yield , get_id , sleep_for, sleep_until
Exclusion mutuelle : mutex, timed_mutex, shared_mutex, etc.
Obtention d’un verrou avec : try_lock, lock
RAII avec les mutex : lock_guard, unique_lock, shared_lock
Exécution unique avec once_flag, call_once
Les variables conditionnelles
Futures/Asynchronisme : promise, packaged_task, future, shared_future, async, etc.
Les objets de type std ::atomic
Rôle des smart pointers atomic_shared_ptr et atomic_weak_ptr
Le mot-clé thread_local
Travaux Pratiques :Refactoring d’un programme de calcul en multi-threading pour améliorer les performances
Mise en œuvre de mutex pour éviter la corruption de données dans l’accès à une multimap
Utilisation de promise et future pour communication asynchrone entre threads

Les coroutines

Comparaison fonction/coroutine
Mise en œuvre des opérateurs co_await, co_yield, co_return
Rôle de std ::coroutine_handle
Applications des coroutines
Travaux Pratiques :Mise en œuvre d’un générateur de nombres avec une coroutine

Évolutions dans la bibliothèque STL

Les nouveaux itérateurs cbegin et cend
Les tableaux à taille fixe avec std ::array
Les nouvelles collections associatives : unordered_map et unordered_set
Listes simplement chaînées
Le conteneur tuple
Adaptateurs d'itérateurs, stream itérateurs
Les nouveaux algorithmes ensemblistes
Travaux Pratiques :Mise en œuvre de quelques conteneurs, d'algorithmes

Autres nouveautés de C++20/23

Les modules et partitions
L’opérateur de comparaison spaceship
Initialisateurs désignés
Exceptions statiques
Pattern matching avec le mot-clé inspect
Le nouvel espace de noms std ::views
Le mot-clé constinit
Travaux Pratiques :Démonstration de ces nouveautés sur quelques exemples

Prérequis

Une expérience de développeur en programmation C++ est essentielle pour tirer pleinement profit de cette formation. Avoir suivi la formation C++ Programmation objet en C++ (DPOC) ou posséder un niveau équivalent est un minimum.

Public

Cette formation C++ s'adresse aux développeurs.

Ces formations pourraient vous intéresser

Objectifs de la formation

Résoudre les problèmes du développement logiciel et produire des applications performantes.

 Objectifs pédagogiques :

Concrètement, à l'issue de cette formation Design Patterns vous serez en mesure de :

  • Résoudre des problèmes de programmation complexes grâce aux design patterns standard
  • Produire un code sans erreur en utilisant le développement piloté par les tests et Visual Studio
  • Créer des architectures multicouches réutilisables et éliminer la duplication fonctionnelle
Tarif

A partir de 2 290,00 €

Durée

4j / 28h

Modes
  • Centre
  • Entreprise
  • Distance

Objectifs de la formation

  • Pendant la formation, le formateur évalue la progression pédagogique des participants via des QCM, des mises en situation et des travaux pratiques. Les participants passent un test de positionnement avant et après la formation pour valider leurs compétences acquises.
Tarif

Contacter l'organisme

Durée

5 jours (35 heures)

Modes
  • Entreprise
  • Distance
  • Centre

Objectifs de la formation

A l'issue de cette formation, vous serez capable de :

  • Développer des applications de Machine Learning et d'IA (Intelligence Artificielle) avec Spark et Python
  • Utiliser la programmation parallèle sur un cluster
  • Développer et optimiser des algorithmes standards de Machine Learning et d'IA
  • Utiliser les bibliothèques Python pour le Machine Learning et d'IA
  • Décrire le cycle de vie d'un projet Data Science.
Tarif

A partir de 3 800,00 €

Durée

5j / 35h

Modes
  • Centre
  • Distance

Objectifs de la formation

  • Disposer des ‘bonnes techniques’ pour programmer Excel (objets remarquables graphiques, TCD, filtres/fri, recherche, accès à d’autres bibliothèques, …)
  • Maîtriser la programmation des objets Excel
Tarif

A partir de 850,00 €

Durée

2j / 14h

Modes
  • Entreprise

Objectifs de la formation

A l'issue de cette formation, vous serez capable de :

  • Identifier les nouvelles fonctionnalités apportées par la version 12 en matière de développement, d'administration, de sauvegarde / restauration et de performance.
Tarif

A partir de 1 830,00 €

Durée

3j / 21h

Modes
  • Centre
  • Distance

Objectifs de la formation

Concrètement à l'issue de cette formation Jakarta EE / Java EE, vous serez en mesure de :

  • Comprendre le modèle de programmation JavaEE et le rôle d’un serveur applicatif
  • Savoir développer avec les APIs : JPA, EJB, Servlet, JAX-RS, JAX-WS
  • Savoir construire une interface web avec un framework MVC comme JSP, JSF
  • Savoir développer un service web SOAP ou RESTful
  • Comprendre les différents rôles des composants Java et des couches de l’architecture multi-tiers
  • Comprendre les différentes alternatives de déploiement et les enjeux de la scalabilité
  • Comprendre comment utiliser les outils d’automatisation de déploiement
  • Savoir utiliser l’API Java pour le monitoring des ressources mémoire et des processus
Tarif

A partir de 2 190,00 €

Durée

4j / 28h

Modes
  • Centre
  • Entreprise
  • Distance

Objectifs de la formation

  • Exécuter en toute sécurité des travaux électriques sur des installations et équipements électriques basse tension
  • Gérer et appliquer la réglementation selon la norme NF C 18-510
  • Maintenir son habilitation électrique initiale
Tarif

A partir de 1 390,00 €

Durée

2j / 11h

Modes
  • Centre
  • Entreprise
  • Distance

Objectifs de la formation

  • Apprendre à programmer en Shell sur Unix/Linux
  • Gérer la connexion
  • Comprendre les mécanismes essentiels
  • Gérer l'environnement
  • Maîtriser les bases de la programmation Shell, les expressions régulières
  • Gérer le script complet et les salariés
  • Connaître des aspects avancés de la programmation Shell
  • Connaître la commande sed et la commande awk
Tarif

A partir de 1 800,00 €

Durée

3 jours

Modes
  • Centre
  • Entreprise
  • Distance

Formation Photoshop Perfectionnement

Proposé par PLB CONSULTANT

Objectifs de la formation

A l'issue de cette formation Photoshop Perfectionnement vous donne les connaissances et compétences nécessaires pour : 

  • Maîtriser les différents modes de sélection
  • Créer des effets spéciaux et personnalisés (filtres dynamiques, dégradés, formes et textures)
  • Créer et modifier des objets dynamiques
  • Maîtriser les effets de calques avancés
  • Utiliser des techniques avancées (RAW et Camera RAW)
Tarif

A partir de 960,00 €

Durée

2j / 14h

Modes
  • Centre
  • Entreprise
  • Distance

Formation PostgreSQL : Développement

Proposé par PLB CONSULTANT

Objectifs de la formation

  • Déployer et paramétrer PostGreSQL
  • Réaliser une base de données optimale
  • Manipuler les logs de PostGreSQL
  • Appréhender la programmation côté serveur
Tarif

A partir de 1 300,00 €

Durée

2j / 14h

Modes
  • Centre
  • Entreprise
  • Distance

Je cherche à faire...