{"id":12874,"date":"2022-07-02T18:11:42","date_gmt":"2022-07-02T18:11:42","guid":{"rendered":"http:\/\/705consulting.com\/?page_id=12874"},"modified":"2023-02-21T00:38:09","modified_gmt":"2023-02-21T00:38:09","slug":"formation-c-et-c","status":"publish","type":"page","link":"https:\/\/705consulting.com\/index.php\/formation-c-et-c\/","title":{"rendered":"FORMATION C ET C++"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"12874\" class=\"elementor elementor-12874\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-f419774 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"f419774\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b7ddcf4\" data-id=\"b7ddcf4\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-258fa8e elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"258fa8e\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-1f15051\" data-id=\"1f15051\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-45b9f54 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"45b9f54\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a3cff03\" data-id=\"a3cff03\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-f3991e2 elementor-widget elementor-widget-witr_section_t_widget\" data-id=\"f3991e2\" data-element_type=\"widget\" data-widget_type=\"witr_section_t_widget.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t<!-- text widget center -->\n\t\t\t\t\t<div class=\"witr_text_widget\">\n\t\t\t\t\t\t<div class=\"witr_text_widget_inner\">\n\t\t\t\t\t\t\t<!-- text widget top -->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<!-- text widget middle -->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<!-- text widget bottom -->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<!-- content -->\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<p><p>Le C++ est un\u00a0<b>langage de programmation<\/b> : il permet d'\u00e9crire des programmes informatiques, pour cr\u00e9er des applications mobiles ou des jeux vid\u00e9o, par exemple. C++ est cr\u00e9\u00e9 \u00e0 partir du langage C, dont il \u00e9tend les fonctionnalit\u00e9s : C++ permet notamment de faire de la programmation orient\u00e9e objet (POO).<\/p><p>Le langage C est un\u00a0<b>langage de programmation qui appartient au paradigme de programmation imp\u00e9rative<\/b>. Invent\u00e9 au d\u00e9but des 1970 dans les Laboratoires Bell pour aider la programmation du syst\u00e8me Unix, C est devenu un des langages les plus utilis\u00e9s. Il n'est pas consacr\u00e9 qu'\u00e0 la programmation syst\u00e8me.<\/p><\/p>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t<!--- repeater content --->\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-476bc18 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"476bc18\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-224c9a9\" data-id=\"224c9a9\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-335bcc4 elementor-widget elementor-widget-toggle\" data-id=\"335bcc4\" data-element_type=\"widget\" data-widget_type=\"toggle.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.7.8 - 02-10-2022 *\/\n.elementor-toggle{text-align:left}.elementor-toggle .elementor-tab-title{font-weight:700;line-height:1;margin:0;padding:15px;border-bottom:1px solid #d4d4d4;cursor:pointer;outline:none}.elementor-toggle .elementor-tab-title .elementor-toggle-icon{display:inline-block;width:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon svg{-webkit-margin-start:-5px;margin-inline-start:-5px;width:1em;height:1em}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-right{float:right;text-align:right}.elementor-toggle .elementor-tab-title .elementor-toggle-icon.elementor-toggle-icon-left{float:left;text-align:left}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-closed{display:block}.elementor-toggle .elementor-tab-title .elementor-toggle-icon .elementor-toggle-icon-opened{display:none}.elementor-toggle .elementor-tab-title.elementor-active{border-bottom:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-closed{display:none}.elementor-toggle .elementor-tab-title.elementor-active .elementor-toggle-icon-opened{display:block}.elementor-toggle .elementor-tab-content{padding:15px;border-bottom:1px solid #d4d4d4;display:none}@media (max-width:767px){.elementor-toggle .elementor-tab-title{padding:12px}.elementor-toggle .elementor-tab-content{padding:12px 10px}}.e-container>.elementor-widget-toggle{width:var(--container-widget-width,100%)}<\/style>\t\t<div class=\"elementor-toggle\" role=\"tablist\">\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-5381\" class=\"elementor-tab-title\" data-tab=\"1\" role=\"tab\" aria-controls=\"elementor-tab-content-5381\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"\" class=\"elementor-toggle-title\">FORMATION LANGAGE C <\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-5381\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"1\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-5381\"><h2>Objectifs de la formation\u00a0<\/h2><p>Invent\u00e9 au d\u00e9but des ann\u00e9es 1970 pour r\u00e9\u00e9crire UNIX, le\u00a0<strong>langage C<\/strong>\u00a0est un langage de programmation toujours beaucoup utilis\u00e9 aujourd&#8217;hui. On peut le consid\u00e9rer comme un langage de haut niveau &#8220;classique&#8221; car il en propose tous les m\u00e9canismes standards (boucle, test, fonctions, types de base, etc.) et \u00e0 ce titre il est plut\u00f4t facile \u00e0 apprendre.<\/p><p><br \/>\u00c0 l&#8217;issue de cette formation, vous aurez acquis les connaissances et les comp\u00e9tences n\u00e9cessaires pour :<\/p><ul><li>Savoir utiliser le langage C afin d\u2019\u00e9crire des programmes robustes, portables et conformes \u00e0 la norme ANSI.<\/li><\/ul><ul><li>Comprendre le fonctionnement de la programmation structur\u00e9e \u00e0 travers l\u2019exemple du langage C<\/li><li>Ma\u00eetriser la syntaxe du Langage C et les principales fonctions du langage C<\/li><li>Savoir \u00e9crire un programme C modulaire, portable (ANSI) et facile \u00e0 maintenir<\/li><li>Ma\u00eetriser les m\u00e9canismes de gestion de la m\u00e9moire lors de la compilation et de l\u2019ex\u00e9cution (classes d\u2019allocation, pile, pointeurs, s\u00e9curit\u00e9)<\/li><\/ul><h2>\u00c0 qui s&#8217;adresse cette formation ?<\/h2><p><strong>Public :<\/strong><\/p><p>Cette formation s\u2019adresse aux d\u00e9veloppeurs, ing\u00e9nieurs et informaticiens cherchant \u00e0 acqu\u00e9rir une exp\u00e9rience pratique du langage C en vue de programmer des applications robustes, portables (ANSI) et performantes.<\/p><p><strong>Pr\u00e9requis :<\/strong><\/p><p>Pour suivre cette formation Langage C, il est n\u00e9cessaire de disposer d\u2019une culture minimum en programmation (variables, boucle, tests, fonction avec passage d\u2019arguments) m\u00eame si cette formation revient sur ces \u00e9l\u00e9ments \u00e0 travers l\u2019exemple du Langage C.<\/p><h2>Contenu du cours\u00a0<\/h2><ol><li><h3>Premi\u00e8re approche pratique<\/h3><p><strong>Organisation d&#8217;un programme structur\u00e9 en C<\/strong><\/p><p><strong>\u00a0<\/strong><\/p><p>Vue g\u00e9n\u00e9rale d\u2019un programme C basique (main)<br \/>Composants de base du langage<br \/>Types et constantes de base<br \/>Stockage et passage de param\u00e8tres<br \/>Variables globales et locales<br \/>Arguments de fonction : passage par valeur<br \/>Code de retour des fonctions\u00a0<br \/>Entr\u00e9es\/sorties format\u00e9es (scanf, printf)<br \/>Utilisation \u00e9l\u00e9mentaire de la cha\u00eene de production (compilation, build)<\/p><p>\u00a0<\/p><p><strong><em>Travaux pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em><u>Objectifs<\/u><\/em><\/strong><em>\u00a0<\/em><em>: Prendre en main son environnement et \u00e9crire un premier programme simple qui permet d\u2019introduire la syntaxe de base mais aussi un premier contact avec les aspects m\u00e9moires n\u00e9cessaire pour bien comprendre les pointeurs par la suite.<\/em><em><br \/><strong><u>Description<\/u><\/strong>\u00a0: On affiche la taille des diff\u00e9rents types de donn\u00e9es standards en m\u00e9moire (int, char, float, \u2026) en utilisant les \u00e9l\u00e9ments fondamentaux du langage (compilation, main, printf, \u2026) autour de probl\u00e9matique m\u00e9moire (sizeof, types de donn\u00e9es).<\/em><\/p><h3>Variables, adresses, pointeurs<\/h3><p>Sch\u00e9ma g\u00e9n\u00e9rale de la m\u00e9moire (diff\u00e9rentes zones)<br \/>Le r\u00f4le du compilateur par rapport \u00e0 la m\u00e9moire<br \/>Vie de la m\u00e9moire durant l\u2019ex\u00e9cution d\u2019un programme C (pile, tas, zone d\u2019allocation statique, appel fonction, etc.)<br \/>Op\u00e9rateurs d&#8217;adressage (&amp;)<br \/>Passage d&#8217;arguments par adresse<br \/>L\u2019exemple de scanf \u2026 et ses pi\u00e8ges<br \/>Ne pas confondre pointeur, adresse et entire<\/p><p>\u00a0<\/p><p><strong><em>Travaux pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em><u>Objectifs<\/u><\/em><\/strong><em>\u00a0<\/em><em>: Comprendre le fonctionnement de l\u2019allocation m\u00e9moire des variables dans la pile (locales, arguments) et le m\u00e9canisme d\u2019adressage pour introduire les pointeurs et la probl\u00e9matique du passage par valeur (variable non modifi\u00e9e)\u00a0<\/em><em><br \/><strong><u>Description<\/u><\/strong>\u00a0: \u00c9criture d\u2019une fonction permutant deux variables<\/em><\/p><p><strong>\u00a0<\/strong><\/p><ol><li>\u00a0<\/li><\/ol><h3>M\u00e9canismes et syntaxe du langage<\/h3><p><strong>Op\u00e9rateurs, expressions num\u00e9riques et op\u00e9rations sur les nombres<\/strong>Op\u00e9rateurs arithm\u00e9tiques<br \/>M\u00e9canismes d&#8217;\u00e9valuation des expressions<br \/>Post et pr\u00e9-incr\u00e9mentation de d\u00e9cr\u00e9mentation<br \/>Pr\u00e9c\u00e9dence et associativit\u00e9 des op\u00e9rateurs<\/p><p>\u00a0<\/p><p><strong>Op\u00e9rateurs de base et expressions logiques<\/strong>Affectations<br \/>Boucles (for, while)<br \/>M\u00e9canismes de fonctionnement des expressions logiques<br \/>Op\u00e9rateurs de comparaison<br \/>Gestion du flux d&#8217;entr\u00e9e\/sortie standard<br \/>Prototype de filtre<br \/>Instruction if<br \/>Op\u00e9rateurs logiques<\/p><p>\u00a0<\/p><p><strong>Compl\u00e9ments sur les types de donn\u00e9es<\/strong>Ma\u00eetrise des types complexes<br \/>Impl\u00e9mentation des types en m\u00e9moire selon les normes\u00a0<br \/>Conversion explicite de types : casting<br \/>Les types num\u00e9riques compos\u00e9s.<br \/>R\u00e8gle de conversion dans les expressions mixtes<br \/>Initialisation des variables<br \/>Formats d&#8217;entr\u00e9e\/sortie associ\u00e9s aux types num\u00e9riques<\/p><p>\u00a0<\/p><p><strong><em>Travaux pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em><u>Objectifs<\/u><\/em><\/strong><em>\u00a0<\/em><em>: Compl\u00e9ter sa ma\u00eetrise de la syntaxe. Ma\u00eetriser les r\u00e8gles d\u2019analyse syntaxique en C, les op\u00e9rateurs et les conversions de types implicites et explicites (cast).\u00a0<\/em><em><br \/><strong><u>Description<\/u><\/strong>\u00a0: \u00c9criture de fonctions de contr\u00f4les et de comparaisons de variables.\u00a0<br \/>Op\u00e9rations num\u00e9riques sur des variables de diff\u00e9rents types (moyenne, somme, etc.).<\/em><\/p><h3>Compl\u00e9ments sur les op\u00e9rateurs<\/h3><p>Op\u00e9rateurs binaires (ET, OU, OU exclusif, compl\u00e9ment \u00e0 1)<br \/>D\u00e9calages binaires<br \/>Op\u00e9rateur ternaire d&#8217;alternative<br \/>L&#8217;instruction switch<br \/>L&#8217;instruction do while<br \/>Instructions associ\u00e9es aux boucles<\/p><p><strong><em>Travaux pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em><u>Objectifs<\/u><\/em><\/strong><em>\u00a0<\/em><em>: Savoir manipuler les op\u00e9rateurs bas niveau. Traduire les normes de fa\u00e7on concr\u00e8te pour le d\u00e9veloppeur en insistant sur les diff\u00e9rences d\u2019impl\u00e9mentation entre les diff\u00e9rents types (int, float, etc.) et les probl\u00e8mes de bug ou de portabilit\u00e9 qui peuvent en d\u00e9couler<\/em><em><br \/><strong><u>Description<\/u><\/strong>\u00a0: Visualisation d\u00e9taill\u00e9e du format d\u2019un float 32 bits en m\u00e9moire selon la norme IEEE754 en affichant sa structure binaire (010100010\u2026.) gr\u00e2ce aux op\u00e9rateurs unaires combin\u00e9s dans des fonctions. \u00c9criture d\u2019une fonction de test de la valeur du bit x d\u2019une variable y. \u00c9criture de fonctions de calcul puissantes s\u2019appuyant sur les propri\u00e9t\u00e9s de d\u00e9calage binaire.<\/em><\/p><p><em>\u00a0<\/em><\/p><ol start=\"2\"><li>\u00a0<\/li><\/ol><h3>Tableaux, pointeurs et cha\u00eene de caract\u00e8res<\/h3><p><strong>\u00a0<\/strong><\/p><p><strong>Compl\u00e9ments sur les pointeurs<\/strong><\/p><p>Diff\u00e9rences entre pointeur et adresse d\u2019une variable<br \/>Manipulations de diff\u00e9rents types de pointeur (int*, char*, float*, \u2026)<br \/>A quoi correspond void* ?<br \/>Les pi\u00e8ges (oubli du &amp;, \u00e9criture dans une zone non allou\u00e9e, etc.)<br \/>L\u2019allocation dynamique de m\u00e9moire (malloc)<br \/>Les pointeurs vers des structures de donn\u00e9es\u00a0<br \/>Arithm\u00e9tiques sur les pointeurs<\/p><p><strong>\u00a0<\/strong><\/p><p><strong>Tableaux et cha\u00eenes de caract\u00e8res<\/strong><\/p><p>D\u00e9finition et utilisation classique des tableaux<br \/>\u00c9quivalences pointeurs\/tableaux<br \/>Cha\u00eenes de caract\u00e8res<br \/>Bien comprendre le sens et les diff\u00e9rences des symboles comme \u2018a\u2019, \u02baa\u02ba\u2019, \u2019\\0\u2019, 0, 1, \u20181\u2019,\u00a0<br \/>Initialisation des tableaux<br \/>Exemples de manipulation de cha\u00eenes de caract\u00e8res<\/p><p>\u00a0<\/p><p><strong><em>Travaux pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em><u>Objectifs<\/u><\/em><\/strong><em>\u00a0<\/em><em>: <\/em><\/p><p><em>Comprendre l\u2019impl\u00e9mentation des tableaux en m\u00e9moire et leur interpr\u00e9tation par le compilateur.<\/em><em><br \/>Savoir manipuler les tableaux et ma\u00eetriser la gestion des cha\u00eenes de caract\u00e8re (char*)<br \/><strong><u>Description<\/u><\/strong>\u00a0: (RE)\u00e9criture des fonctions standards de manipulations des cha\u00eenes de caract\u00e8res (strcpy, strlen, strcmp, strncmp). Fonction permettant de rendre \u00ab propre \u00bb une cha\u00eene de caract\u00e8res en terme de contenu (liste de caract\u00e8res interdits) et de longueur maximale. Fonction g\u00e9n\u00e9rant des mots de passe al\u00e9atoire \u00e0 partir de notre propre dictionnaire de symboles (tableau de caract\u00e8res), un niveau de complexit\u00e9 et une taille pass\u00e9e en argument.<\/em><\/p><h3>Les structures<\/h3><p>Philosophie<br \/>Acc\u00e8s aux \u00e9l\u00e9ments d\u2019une structure<br \/>Passage d\u2019une structure en argument de fonction<br \/>Adresse, m\u00e9moire, pointeurs et structures<br \/>Les structures embo\u00eet\u00e9es<br \/>Les structures anonymes (depuis C11)<br \/>Les champs de bits<br \/>Quand utiliser des unions ?<br \/>Liste de valeurs \u00ab ferm\u00e9es \u00bb et \u00ab num\u00e9risable \u00bb (enum)<br \/>La lib\u00e9ration de la m\u00e9moire<br \/>Introduction aux structures cha\u00een\u00e9es (listes, arbres, \u2026)<br \/>Comparaison des diff\u00e9rentes structures de donn\u00e9es (tableau de structures, tableau de pointeurs, liste cha\u00een\u00e9e) en terme d\u2019occupation m\u00e9moire, de performances et de complexit\u00e9<\/p><p>\u00a0<\/p><p><strong><em>Travaux pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em><u>Objectifs<\/u><\/em><\/strong><em>\u00a0<\/em><em>:<\/em><\/p><p><em>\u00a0Ma\u00eetriser l\u2019utilisation des structures de donn\u00e9es (initialisation, acc\u00e8s aux \u00e9l\u00e9ments, passage en argument \u00e0 une fonction, etc.)<\/em><em><br \/><strong><u>Description<\/u><\/strong>\u00a0: Cr\u00e9ation d\u2019une structure PERSONNE, \u00e9criture de fonctions de saisie et d\u2019affichage mono personne. Cr\u00e9ation d\u2019un tableau de PERSONNE et \u00e9criture de nouvelles fonctions pour manipuler ce type de tableau en r\u00e9utilisant les fonctions pr\u00e9c\u00e9dentes. Mise en \u0153uvre d\u2019une liste cha\u00een\u00e9e de PERSONNE.<br \/>Fonction de cryptage (et d\u00e9cryptage) utilisant des clefs stock\u00e9es dans des structures.<\/em><\/p><p><em>\u00a0<\/em><\/p><ol start=\"3\"><li>\u00a0<\/li><\/ol><h3>Industrialiser ses d\u00e9veloppements<\/h3><p><strong>\u00a0<\/strong><\/p><p><strong>Compilation s\u00e9par\u00e9e, classe d&#8217;allocation<\/strong><\/p><p>M\u00e9canisme de fonctionnement de la cha\u00eene de production<br \/>Utilisation de biblioth\u00e8que de sources<br \/>Diff\u00e9rents cas de figure de la compilation s\u00e9par\u00e9e<br \/>Notion d&#8217;objet externe<br \/>Cas des donn\u00e9es globales et statiques<br \/>Cas des donn\u00e9es locales<br \/>R\u00e8gle de visibilit\u00e9<br \/>Cas des fonctions<br \/>Compl\u00e9ments sur les fonctions et les initialisations<\/p><p>\u00a0<\/p><p><strong><em>Travaux pratiques (\u00e0 titre indicatif)<\/em><\/strong><em>Objectifs : Architecturer son code en modules et comprendre le r\u00f4le des fichiers d\u2019en t\u00eate (.h)<\/em><em><br \/>Description : Cr\u00e9ation d\u2019un module regroupant les fonctions de manipulations des cha\u00eenes de caract\u00e8res du TP d\u00e9j\u00e0 effectu\u00e9 (cha\u00eenes.h, cha\u00eenes.c) et compilations s\u00e9par\u00e9es des diff\u00e9rents modules<\/em><\/p><p><strong>Le macro processeur, la portabilit\u00e9<\/strong><\/p><p>Vue g\u00e9n\u00e9rale des directives de compilation\u00a0<br \/>Les constantes symboliques (#define)<br \/>Int\u00e9r\u00eats et limites des fonctions macros<br \/>Les inclusions de fichiers (#include)<br \/>La compilation conditionnelle (#ifdef, #ifndef, etc.)<br \/>Construction de surtypes : typedef<\/p><p><strong><em>\u00a0<\/em><\/strong><\/p><p><strong><em>Travaux pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em><u>Objectifs<\/u><\/em><\/strong><em>\u00a0<\/em><em>: Utiliser les possibilit\u00e9s du pr\u00e9compilateur pour faciliter la maintenance de son code et sa portabilit\u00e9<\/em><em><br \/><strong><u>Description<\/u><\/strong>\u00a0: Parcours comment\u00e9 des en-t\u00eates standard de la biblioth\u00e8que (stdio.h, stdlib.h, etc.). Ecriture de ses propres fichiers d\u2019en-t\u00eates pour se prot\u00e9ger de l\u2019inclusion multiple, d\u00e9finir ses pseudos constantes et ses prototypes de fonctions.<\/em><\/p><p><strong>\u00a0<\/strong><\/p><p><strong>Outils associ\u00e9s \u00e0 la cha\u00eene de production<\/strong>Principes de la gestion de version avec Git<br \/>Options de compilation<br \/>G\u00e9rer les briques logicielles et les d\u00e9pendances (makefile)<br \/>Construire une application avec Gradle (build)<\/p><p>\u00a0<\/p><p><strong><em>Travaux pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em><u>Objectifs<\/u><\/em><\/strong><em>\u00a0<\/em><em>: Comprendre en d\u00e9tail les m\u00e9canismes de compilation, build et automatisation dans la cr\u00e9ation d\u2019une application ou d\u2019une biblioth\u00e8que C.<\/em><em><br \/><strong><u>Description<\/u><\/strong>\u00a0: Mise en \u0153uvre de l\u2019automatisation avec Gradle et\/ou makefile en fonction de l\u2019environnement souhait\u00e9 par les participants.<\/em><\/p><p><em>\u00a0<\/em><\/p><ol start=\"4\"><li>\u00a0<\/li><\/ol><h3>Les entr\u00e9es \/sorties\u00a0<\/h3><p>Principes g\u00e9n\u00e9raux des I\/O<br \/>Ouverture et fermeture d\u2019un fichier ou d\u2019un p\u00e9riph\u00e9rique<br \/>\u00c9criture et lecture format\u00e9e (exemple avec fscanf et fprintf)<br \/>\u00c9criture et lecture d\u2019un caract\u00e8re (getc)<br \/>\u00c9criture et lecture d\u2019une cha\u00eene de caract\u00e8res<br \/>\u00c9criture et lecture d\u2019un format binaire (fread, fwrite)<br \/>Acc\u00e8s direct \u00e0 un endroit du fichier<br \/>Conseils sur la bufferisation des I\/O (performances)<\/p><p>\u00a0<\/p><p><strong><em>Travaux pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em><u>Objectifs<\/u><\/em><\/strong><em>\u00a0<\/em><em>: Ma\u00eetriser les diff\u00e9rents modes d\u2019acc\u00e8s aux donn\u00e9es en lecture et en \u00e9criture (caract\u00e8re, paragraphe, binaire) ainsi que les possibilit\u00e9s de formatage (%s, %c, etc.).<\/em><em><br \/><strong><u>Description<\/u><\/strong>\u00a0: Chargement d\u2019un fichier texte en m\u00e9moire, traitement, sauvegarde, rechargement (pour tester).<br \/>Chargement d\u2019un fichier texte pour remplir un tableau de pointeurs (char*) pour disposer d\u2019une structure souple de manipulation de texte (tableau de paragraphes). Passage d\u2019arguments sur la ligne de commande (nom du fichier \u00e0 charger). Manipulation de flux binaire sous la forme d\u2019enregistrement d\u2019un tableau de mesures (structures de l\u2019un des TP pr\u00e9c\u00e9dents) dans un fichier, chargement de ce fichier dans un autre tableau, tri, puis sauvegarde pour proposer un cycle complet d\u2019un flux : m\u00e9moire \/ traitement \/ disque. Manipulations de flux de donn\u00e9es format\u00e9es.<\/em><\/p><h3>Aspect avanc\u00e9s du langage C<\/h3><p>Quels traitements utilisent les tableaux multidimensionnels (matrices) ?<br \/>Tableau de pointeurs et structures d\u00e9riv\u00e9es<br \/>Passage d\u2019arguments en ligne de commandes (argc, argv)<br \/>Int\u00e9r\u00eat des pointeurs de fonctions<br \/>Fonctions \u00e0 nombre variable d\u2019arguments<br \/>Synth\u00e8se des diff\u00e9rences avec le C++ (au-del\u00e0 de la dimension objet)<\/p><p><strong><em>Travaux pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em><u>Objectifs<\/u><\/em><\/strong><em>\u00a0<\/em><em>: Comprendre l\u2019int\u00e9r\u00eat de passer une fonction en argument \u00e0 une autre fonction en mettant en \u0153uvre les pointeurs de fonction<\/em><em><br \/><strong><u>Description<\/u><\/strong>\u00a0: fonction de tri d\u2019un tableau de structures de PERSONNE avec passage en argument de la fonction de tri<\/em><\/p><\/li><\/ol><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-5382\" class=\"elementor-tab-title\" data-tab=\"2\" role=\"tab\" aria-controls=\"elementor-tab-content-5382\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"\" class=\"elementor-toggle-title\">FORMATION PERFECTIONNEMENT EN LANGAGE C<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-5382\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"2\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-5382\"><h2>Objectifs de la formation\u00a0<\/h2><p>Cette formation, vous permettra de compl\u00e9ter vos connaissances en langage C par une formation approfondie sur les m\u00e9canismes fondamentaux de fonctionnement.<\/p><h2>\u00c0 qui s&#8217;adresse cette formation ?<\/h2><p><strong>Public :<\/strong><\/p><p>Cette formation langage C s&#8217;adresse \u00e0 toute personne amen\u00e9e \u00e0 programmer, \u00e0 superviser ou \u00e0 modifier des logiciels \u00e9crits en langage C.<\/p><p><strong>Pr\u00e9requis :<\/strong><\/p><p>Afin de suivre ce stage il est demand\u00e9 aux participants de conna\u00eetre les bases du langage C.<\/p><h2>Contenu du cours\u00a0<\/h2><ol><li><h3>1.<\/h3><h3>Rappels sur le langage C<\/h3><p>Les diff\u00e9rentes variables, type statique<br \/>Variables statiques et variables registres<br \/>Les conversions implicites\/explicites<\/p><h3>Structures en langage C<\/h3><p>Pr\u00e9sentation, int\u00e9r\u00eat des structures<br \/>Syntaxe de d\u00e9finition, de d\u00e9claration et d&#8217;acc\u00e8s aux \u00e9l\u00e9ments des structures<br \/>Exemples : copie de structures<br \/>Structures avanc\u00e9es, unions, tableaux, champs binaires, drapeaux<\/p><h3>Fonctions de saisies, affichage (printf\/scanf)<\/h3><p>Options avanc\u00e9es de printf<br \/>Mise en forme param\u00e9tr\u00e9e<br \/>Saisie avanc\u00e9e<br \/>Rappel du principe : d\u00e9composition du flux d&#8217;entr\u00e9e<br \/>Les types &#8216;ensemble&#8217;<\/p><h3>Les op\u00e9rateurs<\/h3><p>Rappels sur les op\u00e9rateurs de calculs<br \/>Op\u00e9rateurs logiques, op\u00e9rateurs binaires<\/p><p><strong><em>Travaux pratiques :\u00a0<\/em><\/strong><\/p><p><em>Mise en oeuvre des op\u00e9rateurs de d\u00e9calage<\/em><em><br \/>Priorit\u00e9 des op\u00e9rateurs<\/em><\/p><h3>les fonctions aspects avanc\u00e9s\u00a0<\/h3><p>Pointeurs sur les fonctions<br \/>Applications aux interpr\u00e9teurs<\/p><h3>Allocation dynamique de la m\u00e9moire<\/h3><p>Principe d&#8217;allocation m\u00e9moire<br \/>Syntaxe de malloc et free<br \/>Les pi\u00e8ges classiques<br \/>Travaux pratiques de mise en oeuvre<br \/>Fonctions avanc\u00e9es (calloc et realloc) : int\u00e9r\u00eat et applications<\/p><h3>Autres aspects avanc\u00e9s<\/h3><p>Les listes cha\u00een\u00e9es, les arbres binaires<br \/>Applications \u00e0 l&#8217;organisation des donn\u00e9es<\/p><h3>Techniques de programmation prefectionnement<\/h3><p>Bien comprendre les diff\u00e9rents phases de compilation : pr\u00e9compilation , assemblage, \u00e9dition de liens<br \/>D\u00e9finition des constantes<br \/>Contr\u00f4le de compilation<br \/>Les macro-instructions<br \/>Conventions de nommage<br \/>Comparaison avec les fonctions<br \/>Les fichiers inclus : #include<\/p><h3>Biblioth\u00e8ques<\/h3><p>M\u00e9thode, syntaxe<br \/>Les biblioth\u00e8ques standards : libc.a, libm.a, libcur.a<br \/>Fonctions disponibles dans la biblioth\u00e8que math\u00e9matique<\/p><h3>Les entr\u00e9es\/sorties (I\/O)<\/h3><p>M\u00e9canisme de stockage des fichiers<br \/>M\u00e9thode d&#8217;acc\u00e8s, les descripteurs de fichiers<br \/>Fonctions open\/close<\/p><p><strong><em>Travaux pratiques :<\/em><\/strong><\/p><p><em>Ecriture d&#8217;une fonctions permettant de tester l&#8217;existence d&#8217;un fichier<\/em><em><br \/>Fonctions read\/write<br \/>Mise en oeuvre avec lecture\/\u00e9criture de structures<br \/>Modes d&#8217;ouvertures sp\u00e9cifiques : avec positionnement dans le fichier, avec cr\u00e9ation du fichier, &#8230;<br \/>Options : O_TRUNC, o_SYNC, O_NDELAY<br \/>Le type FILE : mise en oeuvre de fprintf, fscanf, fgets, fputs<\/em><\/p><\/li><\/ol><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-5383\" class=\"elementor-tab-title\" data-tab=\"3\" role=\"tab\" aria-controls=\"elementor-tab-content-5383\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"\" class=\"elementor-toggle-title\">FORMATION C++: PROGRAMMATION OBJET EN C++<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-5383\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"3\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-5383\"><h2>Objectifs de la formation\u00a0<\/h2><p>Cette\u00a0<strong>formation C++<\/strong>\u00a0vous permettra de mettre en \u0153uvre tous ces \u00e9l\u00e9ments en respectant la syntaxe, y compris celle de l\u2019importante norme C++ 11, afin de livrer un code portable et s\u00e9curis\u00e9. Vous apprendrez \u00e0 produire un code de qualit\u00e9 qui respecte les bonnes pratiques professionnelles en mati\u00e8re de conception et de d\u00e9veloppement objet.<\/p><p>\u00a0<\/p><p>\u00c0 l&#8217;issue de cette formation, vous aurez acquis les connaissances et les comp\u00e9tences n\u00e9cessaires pour :<\/p><ul><li>Concevoir et mettre en \u0153uvre une application C++ performante selon une approche objet.<\/li><\/ul><ul><li>Concevoir l\u2019architecture d\u2019une application C++ en utilisant ses propres classes ou des classes existantes<\/li><li>Savoir programmer objet en C++ (classe, m\u00e9thode, propri\u00e9t\u00e9s, constructeur, instance, etc.)<\/li><li>Ma\u00eetriser la syntaxe du C++<\/li><li>Ma\u00eetriser son environnement de d\u00e9veloppements (outils, compilation, build, etc.)<\/li><li>Conna\u00eetre la norme C++ 11 et les nouveaut\u00e9s introduites par cette version et les suivantes<\/li><\/ul><h2>\u00c0 qui s&#8217;adresse cette formation ?<\/h2><p><strong>Public :<\/strong><\/p><p>Ce cours C++ s\u2019adresse prioritairement \u00e0 un public technique comme les d\u00e9veloppeurs qui souhaitent d\u00e9velopper ou maintenir des applications ou modules \u00e9crits en C++.<\/p><p><strong>Pr\u00e9requis :<\/strong><\/p><p>Cette formation C++ demande de savoir d\u00e9velopper dans au moins un langage de programmation (C, PHP, Java, C#, Python, etc.)<\/p><h2>Contenu du cours\u00a0<\/h2><ol><li><h3>1.<\/h3><h3>Les concepts de la Programmation objet essentiels pour bien commencer en C++<\/h3><p>Les paradigmes de la P.O.O.<br \/>La classification<br \/>Contr\u00f4ler l\u2019acc\u00e8s aux donn\u00e9es (encapsulation)<br \/>Introduction aux diagrammes de classes UML2<br \/>Les associations entre classes : l\u2019association directe, l&#8217;agr\u00e9gation, la composition<br \/>L&#8217;h\u00e9ritage, la d\u00e9rivation<br \/>Fournir les informations essentielles (abstraction)<\/p><p>\u00a0<\/p><p><strong><em>Travaux pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em>Objectifs<\/em><\/strong><em>\u00a0<\/em><em>: Valider que les concepts objets fondamentaux sont ma\u00eetris\u00e9s par tout le monde<\/em><em><br \/>Pr\u00e9senter le mod\u00e8le objet que l\u2019on va utiliser en fil rouge dans la formation (il ne sera pas unique afin de bien comprendre les manipulations communes \u00e0 toutes les classes et ce qui est sp\u00e9cifique \u00e0 chacune)<br \/><strong>Description<\/strong>\u00a0: Quizz qui valide dans un premier temps que tout le monde dispose du vocabulaire objet, que ce vocabulaire est commun \u00e0 tous participants et au formateur, mais aussi que tout le monde a compris en profondeur chaque concept.<\/em><\/p><h3>C++, le langage<\/h3><p>Les types de donn\u00e9es, les op\u00e9rateurs<br \/>Les pointeurs bruts\u00a0<br \/>Le type r\u00e9f\u00e9rence lvalue\u00a0<br \/>Les structures de contr\u00f4les<br \/>Les fonctions et la surcharge<br \/>L&#8217;op\u00e9rateur de r\u00e9solution de port\u00e9e<br \/>Liaison C &#8211; C++<br \/>Les param\u00e8tres par d\u00e9faut des fonctions<br \/>Les fonctions &#8221; inline &#8220;<br \/>Les espaces de noms<br \/>Les \u00e9num\u00e9rations<\/p><p>\u00a0<\/p><p><strong><em>Travaux pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em>Objectifs<\/em><\/strong><em>\u00a0<\/em><em>: Valider que tout le monde est \u00e0 l\u2019aise avec son environnement de d\u00e9veloppement et prend en main la syntaxe de base du C++ (op\u00e9rateurs, types, tests, etc.).<\/em><em><br \/><strong>Description<\/strong>\u00a0: R\u00e9alisation du programme types.cpp, qui d\u00e9finit et initialise une variable de chacun des types primitifs disponibles (bool, char, int, etc\u2026). Chacune des variables est ensuite affich\u00e9e en utilisant l&#8217;objet cout<br \/>Saisie d&#8217;un nombre d\u00e9cimal, calcul, affichage du r\u00e9sultat<br \/>R\u00e9alisation du programme celcius.cpp qui demande la saisie au clavier d&#8217;une temp\u00e9rature en degr\u00e9s Fahrenheit, puis calcule et affiche la temp\u00e9rature correspondante en degr\u00e9s Celsius en interdisant les valeurs hors plage<\/em><\/p><p><em>\u00a0<\/em><\/p><ol><li><em>.<\/em><\/li><\/ol><h3>Les classes en C++<\/h3><p>D\u00e9finition d&#8217;une classe<br \/>Les qualificateurs &#8221; public &#8221; et &#8221; private &#8220;<br \/>Instanciation d\u2019une classe<br \/>Les constructeurs par d\u00e9faut<br \/>Les constructeurs surcharg\u00e9s<br \/>Le constructeur de copie<br \/>Surcharge de l&#8217;op\u00e9rateur d&#8217;affectation<br \/>Le destructeur<br \/>Le mot-cl\u00e9 this<br \/>Les m\u00e9thodes const<br \/>Les membres static<br \/>Fonctions amies<br \/>Surcharges d\u2019op\u00e9rateurs<\/p><p>\u00a0<\/p><p><strong><em>Travaux Pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em>Objectifs<\/em><\/strong><em>\u00a0<\/em><em>: Ma\u00eetriser la cr\u00e9ation de classe, l\u2019instanciation, les constructeurs et la surcharge des m\u00e9thodes<\/em><em><br \/><strong>Description<\/strong>\u00a0: Cr\u00e9ation d\u2019un classe \u00ab counter \u00bb permettant de cr\u00e9er un objet qui g\u00e9n\u00e8re une s\u00e9quence de nombres (incr\u00e9mentation, valeur actuelle, affichage, etc.)<br \/>Surcharges du constructeur en y passant un nombre ou un objet (pour s\u2019initialiser sur cet objet)<\/em><\/p><p><em>\u00a0<\/em><\/p><ol start=\"2\"><li>\u00a0<\/li><\/ol><h3>Relations entre classe (association, composition, h\u00e9ritage)<\/h3><p>Traduction en C++ d\u2019une association, d\u2019une composition<br \/>Importance de la liste d\u2019initialisation dans les constructeurs<br \/>L&#8217;h\u00e9ritage public simple<br \/>Ordre d&#8217;ex\u00e9cution des constructeurs et destructeurs<br \/>Les r\u00e8gles de conversion<br \/>Le qualificateur d&#8217;acc\u00e8s protected<br \/>Les h\u00e9ritages priv\u00e9 et prot\u00e9g\u00e9<br \/>L&#8217;h\u00e9ritage multiple r\u00e9p\u00e9t\u00e9 et ses difficult\u00e9s de mise en oeuvre<\/p><p>\u00a0<\/p><p><strong><em>Travaux Pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em>Objectifs<\/em><\/strong><em>\u00a0<\/em><em>: Comprendre comment mettre en \u0153uvre une association directe, puis une composition entre classes. Savoir sp\u00e9cialiser une classe existante par h\u00e9ritage pour ne pas tout r\u00e9\u00e9crire en ma\u00eetrisant l\u2019impact hi\u00e9rarchique dans la syntaxe (classe m\u00e8re et descendance.)<\/em><em><br \/><strong>Description<\/strong>\u00a0: Mise en \u0153uvre d&#8217;une relation d\u2019association puis de composition entre deux classes. Construction d&#8217;une hi\u00e9rarchie de classes \u00e0 trois niveaux. Manipulation d&#8217;objets de ces classes. Mise en \u0153uvre d&#8217;un h\u00e9ritage multiple r\u00e9p\u00e9t\u00e9<\/em><\/p><h3>Le polymorphisme<\/h3><p>Les m\u00e9thodes virtuelles<br \/>Int\u00e9r\u00eat du polymorphisme<br \/>Mise en \u0153uvre du polymorphisme<br \/>Les classes abstraites et les m\u00e9thodes virtuelles pures<br \/>Les destructeurs virtuels<\/p><p>\u00a0<\/p><p><strong><em>Travaux Pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em>Objectifs<\/em><\/strong><em>\u00a0<\/em><em>: Savoir mettre en \u0153uvre le polymorphisme,\u00a0<\/em><em><br \/><strong>Description<\/strong>\u00a0: Mise en \u0153uvre du polymorphisme dans le Design Pattern Factory Method : obtenir un objet d\u2019une sous-classe dans une hi\u00e9rarchie de classes avec h\u00e9ritage multiple comportant une classe abstraite pure<\/em><\/p><p><em>\u00a0<\/em><\/p><ol start=\"3\"><li>\u00a0<\/li><\/ol><h3>La gestion des exceptions<\/h3><p>Principe du traitement des anomalies<br \/>Utilisation des mot-cl\u00e9s try, catch et throw<br \/>Traiter les exceptions sur place<br \/>Propager les exceptions<br \/>Lever une exception<br \/>Cr\u00e9er ses propres classes d\u2019exception<\/p><p>\u00a0<\/p><p><strong><em>Travaux Pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em>Objectifs<\/em><\/strong><em>\u00a0<\/em><em>: comprendre comment g\u00e9rer les exceptions dans une application effectuant des entr\u00e9es-sorties<\/em><em><br \/><strong>Description<\/strong>\u00a0: Calcul de la somme des soldes mensuels d\u2019un compte bancaire par lecture d\u2019un fichier CSV avec mise en \u0153uvre d\u2019un traitement sur place d\u2019exceptions puis en propageant les exceptions \u00e0 la fonction appelante<\/em><\/p><h3>Les templates en C++<\/h3><p>Principe des templates<br \/>Avantages\/inconv\u00e9nients<br \/>Param\u00e8tres template<br \/>Syntaxe des templates de fonctions<br \/>Syntaxe des templates de classes<br \/>Syntaxe des templates de m\u00e9thodes<br \/>Instanciation des templates de fonctions<br \/>Instanciation des templates de classes<br \/>Instanciation implicite vs instanciation explicite<\/p><p>\u00a0<\/p><p><strong><em>Travaux Pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em>Objectifs<\/em><\/strong><em>\u00a0<\/em><em>: Comprendre et mettre en \u0153uvre la g\u00e9n\u00e9ricit\u00e9 des types dans une fonction gr\u00e2ce aux templates\u00a0<\/em><em><br \/><strong>Description<\/strong>\u00a0: Cr\u00e9ation d&#8217;un template de fonction (fonction rendant le \u00ab plus petit \u00bb de 2 objets pass\u00e9s en argument ind\u00e9pendamment de leur type). Cr\u00e9ation d&#8217;un template de classe (tableau redimensionnable automatiquement)<\/em><\/p><p><em>\u00a0<\/em><\/p><ol start=\"4\"><li>\u00a0<\/li><\/ol><h3>Les pointeurs intelligents (smart pointers C++11)<\/h3><p>Principe de la gestion RAII des ressources<br \/>Danger des pointeurs bruts<br \/>Int\u00e9r\u00eat des smart pointers<br \/>Raisons de l&#8217;obsolescence de auto_ptr<br \/>Mise en \u0153uvre de unique_ptr, shared_ptr, weak_ptr<br \/>Utilisation de make_unique et make_shared<\/p><p>\u00a0<\/p><p><strong><em>Travaux Pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em>Objectifs<\/em><\/strong><em>\u00a0<\/em><em>: Comprendre la mise en \u0153uvre des smart pointers pour la gestion des ressources<\/em><em><br \/><strong>Description<\/strong>\u00a0: Mise en oeuvre, dans une petite application, de la technique RAII par remplacement des pointeurs bruts par des pointeurs intelligents<\/em><\/p><h3>Outils de d\u00e9veloppement<\/h3><p>Pr\u00e9sentation des IDE courants<br \/>Options de compilation<br \/>Cross-compilateurs<br \/>G\u00e9n\u00e9ration d\u2019un ex\u00e9cutable, fichiers objets<br \/>Utilisation des fonctionnalit\u00e9s de debug<br \/>Commande make sous Linux, makefile<br \/>Utilisation de git<\/p><p><strong><em>Travaux Pratiques (\u00e0 titre indicatif)<\/em><\/strong><strong><em>Objectifs<\/em><\/strong><em>\u00a0<\/em><em>: Savoir debugguer une application et modifier les options de compilation. Savoir packager une application C++.<\/em><em><br \/><strong>Description<\/strong>\u00a0: Recherche de bugs dans une application et correction. Mise en \u0153uvre d\u2019une cha\u00eene de build automatis\u00e9e.<\/em><\/p><h3>Aper\u00e7u de la librairie STL<\/h3><p>Pr\u00e9sentation, documentation<br \/>Les conteneurs<br \/>Les it\u00e9rateurs<br \/>Les algorithmes<br \/>Les entr\u00e9es-sorties<br \/>L\u2019espace de noms chrono<\/p><p>\u00a0<\/p><p><strong><em>D\u00e9monstration (\u00e0 titre indicatif)<\/em><\/strong><strong><em>Objectifs<\/em><\/strong><em>\u00a0<\/em><em>: comprendre l\u2019int\u00e9r\u00eat d\u2019un conteneur pour y stocker des objets et le r\u00f4le d\u2019un it\u00e9rateur. Savoir lire-\u00e9crire dans un fichier texte<\/em><em><br \/><strong>Description<\/strong>\u00a0: lecture d\u2019un fichier texte ligne par ligne, cr\u00e9ation des objets repr\u00e9sent\u00e9s par les cha\u00eenes de caract\u00e8res, mise en \u0153uvre d\u2019un vector pour y stocker les objets et parcours \u00e0 l\u2019aide d\u2019un it\u00e9rateur pour supprimer certains objets, tri du vector \u00e0 l\u2019aide d\u2019un algorithme de tri et d\u2019un foncteur<\/em><\/p><h3>Pr\u00e9sentation des principales nouveaut\u00e9s apport\u00e9es par C++11\/14\/17\/20<\/h3><p>Mot-cl\u00e9 auto<br \/>Boucle for-each<br \/>Le mot-cl\u00e9 noexcept\u00a0<br \/>R\u00e9f\u00e9rences rvalue et applications<br \/>Expressions lambdas et applications<br \/>Initialisation uniforme<br \/>M\u00e9thodes par d\u00e9faut et supprim\u00e9es<br \/>Concepts et contraintes<br \/>Modules<strong><em>D\u00e9monstration (\u00e0 titre indicatif)<\/em><\/strong><strong><em>Objectifs<\/em><\/strong><em>\u00a0<\/em><em>: comprendre les simplifications apport\u00e9es par le mot-cl\u00e9 auto, la boucle for-each et les expressions lambdas<\/em><em><br \/><strong>Description<\/strong>\u00a0: r\u00e9-\u00e9criture de l\u2019exemple pr\u00e9c\u00e9dent en utilisant une boucle for-each et auto pour afficher le contenu du vector, utilisation d\u2019une expression lambda dans l\u2019algorithme de tri<\/em><\/p><\/li><\/ol><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-5384\" class=\"elementor-tab-title\" data-tab=\"4\" role=\"tab\" aria-controls=\"elementor-tab-content-5384\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"\" class=\"elementor-toggle-title\">FORMATION C++ APPROFONDISSEMENT <\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-5384\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"4\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-5384\"><h2>Objectifs de la formation\u00a0<\/h2><p>Cette formation C++ Approfondissement a pour objectif de consolider une formation de base en C++.<\/p><p>\u00c0 l&#8217;issue de cette formation, vous aurez acquis les connaissances et les comp\u00e9tences n\u00e9cessaires pour :<\/p><ul><li>R\u00e9actualiser ses connaissances sur C++ et en ma\u00eetriser les aspects les plus avanc\u00e9s.<\/li><\/ul><ul><li>Consolider vos connaissances sur la syntaxe de base de C++ (cr\u00e9ation et manipulation de classes&#8230;)<\/li><li>Mettre en \u0153uvre l&#8217;h\u00e9ritage et le polymorphisme<\/li><li>\u00c9laborer des pointeurs intelligents<\/li><li>G\u00e9rer les exceptions dans C++<\/li><li>Conna\u00eetre et cr\u00e9er des templates en C++<\/li><li>D\u00e9crire et mettre en \u0153uvre la biblioth\u00e8que STL<\/li><\/ul><h2>\u00c0 qui s&#8217;adresse cette formation ?<\/h2><p><strong>Public :<\/strong><\/p><p>Cette formation C++ s&#8217;adresse aux d\u00e9veloppeurs qui souhaitent revisiter les concepts cl\u00e9s du C++, approfondir la syntaxe du langage<\/p><p><strong>Pr\u00e9requis :<\/strong><\/p><p>Pour tirer pleinement profit de cette formation de pr\u00e9paration \u00e0 l&#8217;examen de certification, il est n\u00e9cessaire d&#8217;avoir au pr\u00e9alable de bonnes bases en programmation C++<\/p><h2>Contenu du cours\u00a0<\/h2><ol><li><h3>1<\/h3><h3>Rappels sur la syntaxe de base<\/h3><p>Cr\u00e9ation de tableaux<br \/>Anatomie d&#8217;une classe<br \/>Sp\u00e9cificateurs d&#8217;acc\u00e8s private et public<br \/>Cr\u00e9ation d&#8217;objets<br \/>Constructeurs, m\u00e9thodes d&#8217;instance, m\u00e9thodes static<br \/>Surcharge de fonctions et de m\u00e9thodes<br \/>Param\u00e8tres par d\u00e9faut<br \/>Passage d&#8217;arguments aux fonctions et aux m\u00e9thodes: par valeur, par adresse, par r\u00e9f\u00e9rence<br \/>Le constructeur de copie<br \/>Surcharge de l&#8217;op\u00e9rateur d&#8217;affectation<br \/>Le destructeur<br \/>Les m\u00e9thodes const<br \/>Les membres static<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Cr\u00e9ation de quelques classes avec constructeurs et m\u00e9thodes surcharg\u00e9s<\/em><em><br \/>Manipulation d&#8217;instances de ces classes<\/em><\/p><h3>Mise en \u0153uvre de l&#8217;h\u00e9ritage et du polymorphisme<\/h3><p>Usage du mot-cl\u00e9 protected<br \/>Distinction surcharge\/red\u00e9finition<br \/>Manipulation d&#8217;instances de sous-classes<br \/>Sp\u00e9cificateur protected<br \/>Types d&#8217;h\u00e9ritage : public, prot\u00e9g\u00e9, private<br \/>Utiliser les classes abstraites<br \/>D\u00e9claration de m\u00e9thodes virtuelles et virtuelles pures<br \/>D\u00e9velopper du code mettant en \u0153uvre le polymorphisme, red\u00e9finir des m\u00e9thodes<br \/>Mise en \u0153uvre de l&#8217;h\u00e9ritage multiple<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Parcours d&#8217;une hi\u00e9rarchie d&#8217;objets sans, puis avec polymorphisme<\/em><\/p><h3>Les pointeurs intelligents (smart pointers C++11)<\/h3><p>Danger des pointeurs nus<br \/>Principe de la gestion de ressources<br \/>Int\u00e9r\u00eat des smart pointers<br \/>Raisons de l&#8217;obsolescence de auto_ptr<br \/>Mise en \u0153uvre de unique_ptr, shared_ptr<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Remplacement, dans une application, de pointeurs nus par des pointeurs intelligents<\/em><\/p><h3>Gestion des exceptions<\/h3><p>D\u00e9crire les avantages de la gestion d&#8217;exceptions<br \/>Cr\u00e9er un bloc try-catch et d\u00e9terminer comment les exceptions modifient le d\u00e9roulement normal du programme<br \/>Lancer une exception<br \/>Propager une exception<br \/>Cr\u00e9er ses propres classes d&#8217;exception<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Mise en \u0153uvre d&#8217;une gestion d&#8217;exception dans une application, en remplacement d&#8217;un code d&#8217;erreur<\/em><\/p><h3>Les templates en C++<\/h3><p>Principe des templates<br \/>Avantages\/inconv\u00e9nients<br \/>Syntaxe des templates de fonctions<br \/>Syntaxe des templates de classes<br \/>Instanciation des templates de fonctions<br \/>Instanciation des templates de classes<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Cr\u00e9ation d&#8217;un template de fonction<\/em><em><br \/>Cr\u00e9ation d&#8217;un template de classe<\/em><\/p><h3>La biblioth\u00e8que STL<\/h3><p>Pr\u00e9sentation de la Standard Template Library<br \/>Les conteneurs<br \/>Les it\u00e9rateurs<br \/>Les algorithmes<br \/>Les entr\u00e9es-sorties<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Mise en \u0153uvre de quelques conteneurs, d&#8217;algorithmes et template d&#8217;entr\u00e9es-sorties<\/em><\/p><\/li><\/ol><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-5385\" class=\"elementor-tab-title\" data-tab=\"5\" role=\"tab\" aria-controls=\"elementor-tab-content-5385\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"\" class=\"elementor-toggle-title\">FORMATION C++ PROGRAMMATION AVANC\u00c9 EXPERT <\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-5385\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"5\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-5385\"><h2>Objectifs de la formation\u00a0<\/h2><p>Cette\u00a0<strong>formation C++ Programmation Avanc\u00e9e Expert<\/strong>\u00a0vous permettra de ma\u00eetriser le langage C++ .<\/p><p>\u00a0<\/p><p>\u00a0\u00c0 l&#8217;issue de cette formation, vous aurez acquis les connaissances et les comp\u00e9tences n\u00e9cessaires pour :<\/p><ul><li>Savoir ma\u00eetriser le langage C++.<\/li><\/ul><ul><li>Ma\u00eetriser les meilleures pratiques concernant l\u2019utilisation des classes<\/li><li>Comprendre le besoin et les pi\u00e8ges des conversions (cast)<\/li><li>Comprendre l\u2019int\u00e9r\u00eat du Run-time type information (RTTI)<\/li><li>Ma\u00eetriser l\u2019utilisation des pointeurs (sur membres, smart pointers, etc.)<\/li><li>Programmer efficacement les exceptions<\/li><li>Savoir utiliser les templates et les design patterns<\/li><li>G\u00e9rer un objet qui se comporte comme une fonction (foncteur)<\/li><li>Utiliser la puissance de la biblioth\u00e8que STL (Standard Template Library)<\/li><li>Savoir construire des idiomes<\/li><li>D\u00e9couvrir les possibilit\u00e9s de la biblioth\u00e8que Boost<\/li><\/ul><p>Conna\u00eetre les principales nouveaut\u00e9s du C++11<\/p><h2>\u00c0 qui s&#8217;adresse cette formation ?<\/h2><p><strong>Public :<\/strong><\/p><p>Cette formation C++ s&#8217;adresse aux d\u00e9veloppeurs.<\/p><p><strong>Pr\u00e9requis :<\/strong><\/p><p>Une exp\u00e9rience de d\u00e9veloppeur en programmation C++ est essentielle pour tirer pleinement profit de cette formation<\/p><h2>Contenu du cours\u00a0<\/h2><ol><li><h3>1.<\/h3><h3>Les classes en C++<\/h3><p>Constructeurs et allocation m\u00e9moire<br \/>Forme canonique d&#8217;une classe<br \/>R\u00f4le du constructeur de copie<br \/>Surcharge de l&#8217;op\u00e9rateur d\u2019affectation<br \/>Int\u00e9r\u00eat d&#8217;un destructeur virtuel<br \/>Pi\u00e8ges \u00e0 \u00e9viter<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Ex\u00e9cution d&#8217;exemples p\u00e9dagogiques illustrant les concepts pr\u00e9sent\u00e9s<\/em><\/p><h3>Les conversions en C++<\/h3><p>Pr\u00e9sentation des conversions, syntaxe<br \/>Utilisation du const_cast pour enlever un caract\u00e8re const<br \/>Utilisation du static_cast pour effectuer une conversion standard<br \/>Utilisation du reinterpret_cast pour effectuer une conversion forte<br \/>Utilisation du dynamic_cast dans une hi\u00e9rarchie de classes<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Choix du type de cast et mise en \u0153uvre dans diff\u00e9rentes situations\u00a0<\/em><\/p><h3>L\u2019identification de type \u00e0 l&#8217;ex\u00e9cution (RTTI)<\/h3><p>Principe et cas d&#8217;utilisation<br \/>Utilisation du dynamic_cast pour effectuer un downcast dans une hi\u00e9rarchie de classes<br \/>Utilisation de l&#8217;op\u00e9rateur typeid et de la classe type_info<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Mise en \u0153uvre de RTTI pour effectuer un affichage sp\u00e9cifique d&#8217;un objet faisant partie d&#8217;une hi\u00e9archie de classes<\/em><\/p><h3>Les pointeurs sur membres de classes<\/h3><p>Syntaxe des pointeurs sur membres de classes<br \/>Mise en \u0153uvre<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Utilisation de pointeurs sur m\u00e9thodes pour effectuer des calculs math\u00e9matiques<\/em><\/p><h3>Les pointeurs intelligents (smart pointers C++11)<\/h3><p>Danger des pointeurs nus<br \/>Principe de la gestion de ressources<br \/>Int\u00e9r\u00eat des smart pointers<br \/>Raisons de l&#8217;obsolescence de auto_ptr<br \/>Mise en \u0153uvre de unique_ptr, shared_ptr et weak_ptr<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Remplacement, dans une application, de pointeurs nus par des pointeurs intelligents<\/em><\/p><h3>La gestion des exceptions<\/h3><p>Principe des exceptions<br \/>Les classes d&#8217;exceptions<br \/>Comment lever une exception<br \/>Gestionnaires d&#8217;exceptions<br \/>Liste d&#8217;exceptions<br \/>Hi\u00e9rarchies d&#8217;exceptions<br \/>Classes d&#8217;exceptions standards<br \/>Constructeurs et exceptions<br \/>Exceptions et gestion des ressources<br \/>Bonnes pratiques<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Mise en place d&#8217;une gestion d&#8217;exceptions dans une application effectuant des entr\u00e9es-sorties<\/em><\/p><h3>Les templates<\/h3><p>Pr\u00e9sentation<br \/>Avantages\/inconv\u00e9nients<br \/>Syntaxe des templates de fonctions<br \/>Syntaxe des templates de classes<br \/>Syntaxe des templates de m\u00e9thodes<br \/>Instanciation des templates de fonctions<br \/>Instanciation des templates de classes<br \/>Sp\u00e9cialisation partielle ou totale des templates<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Mise en \u0153uvre d&#8217;une fonction template<\/em><em><br \/>Mise en \u0153uvre d&#8217;une classe template<br \/>Mise en \u0153uvre d&#8217;une classe template template<\/em><\/p><h3>Introduction aux Design Patterns (avec zoom sur certains)<\/h3><p>Pr\u00e9sentation des patterns du GoF<br \/>Patterns de cr\u00e9ation<br \/>Patterns de structure<br \/>Patterns de comportement<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Mise en \u0153uvre des patterns Singleton, Factory Method, Abstract Factory<\/em><em><br \/>Mise en \u0153uvre des patterns Visitor, Proxy<\/em><\/p><h3>Les foncteurs<\/h3><p>Pr\u00e9sentation<br \/>Int\u00e9r\u00eat des foncteurs<br \/>Foncteurs pr\u00e9d\u00e9finis dans la biblioth\u00e8que standard<br \/>Utilisation d&#8217;adaptateurs de fonctions unaires et binaires<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Mise en \u0153uvre d&#8217;un foncteur avec l&#8217;algorithme for_each pour afficher le contenu d&#8217;un vector<\/em><\/p><h3>La biblioth\u00e8que STL<\/h3><p>Pr\u00e9sentation de la Standard Template Library<br \/>Les conteneurs<br \/>Les allocateurs<br \/>Les it\u00e9rateurs<br \/>Les algorithmes<br \/>Les entr\u00e9es-sorties<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Mise en \u0153uvre de quelques conteneurs, d&#8217;algorithmes et template d&#8217;entr\u00e9es-sorties<\/em><\/p><h3>Les idiomes<\/h3><p>Traits<br \/>Policy<br \/>SFINAE (Substitution Failure Is Not An Error)<br \/>CRTP (Curiously Recurring Template Pattern) : pour le polymorphisme statique<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Mise en \u0153uvre de chacun des idiomes<\/em><\/p><h3>La m\u00e9ta-programmation<\/h3><p>Comment ex\u00e9cuter \u00e0 la compilation<br \/>Avantages\/inconv\u00e9nients<br \/>Optimisations<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Mise en \u0153uvre de la m\u00e9ta-programmation pour effectuer des calculs math\u00e9matiques par le compilateur<\/em><\/p><h3>La biblioth\u00e8que Boost<\/h3><p>Pr\u00e9sentation<br \/>static_assert<br \/>property_map<br \/>smart_ptr<br \/>tuple<br \/>any<br \/>variant<br \/>threads<br \/>interprocess<br \/>mpl (m\u00e9ta programming language)<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Mise en \u0153uvre de quelques templates de Boost<\/em><\/p><h3>Nouveaut\u00e9s essentielles du C++11\u00a0<\/h3><p>Mot-cl\u00e9s auto, decltype et constexpr<br \/>D\u00e9finition des rvalue r\u00e9f\u00e9rences<br \/>Application des rvalue r\u00e9f\u00e9rences : d\u00e9placement et transfert parfait<br \/>Bonne utilisation de std::move et std::forward<br \/>Les fonctions lambda<br \/>Les variadic templates<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Mise en \u0153uvre des mot-cl\u00e9s auto, decltype et constexpr<\/em><em><br \/>Mise en \u0153uvre des r\u00e9f\u00e9rences rvalue pour la cr\u00e9ation et la copie d&#8217;objet par d\u00e9placement<br \/>Mise en \u0153uvre des expressions lambda en remplacement des foncteurs<br \/>Mise en \u0153uvre des variadic templates<\/em><\/p><h3>Autres nouveaut\u00e9s du C++11\u00a0<\/h3><p>Initialisation des donn\u00e9es membres non-statiques<br \/>Alias de template<br \/>Constructeurs d\u00e9l\u00e9gu\u00e9s<br \/>D\u00e9clarations \u00e9tendues de l\u2019amiti\u00e9<br \/>Surcharge explicite de la virtualit\u00e9<br \/>La constante nullptr<br \/>\u00ab Range-based \u00bb for<br \/>D\u00e9finition des rvalue r\u00e9f\u00e9rences<br \/>Les op\u00e9rateurs de conversion explicites<br \/>Les types POD (Plain Old Data) revisit\u00e9s<br \/>Les types locaux et non nomm\u00e9s comme arguments template<br \/>Les \u00e9num\u00e9rations \u00e0 typage fort<br \/>Les fonctions par d\u00e9faut et supprim\u00e9es (=default, =delete)<br \/>Les espaces de nom inline<br \/>La propagation des exceptions (dans le cadre du multithreading)<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Mise en \u0153uvre d&#8217;une partie de ces nouveaut\u00e9s dans une application existante<\/em><\/p><h3>Performances<\/h3><p>Introduction<br \/>R\u00e9sum\u00e9 des bonnes pratiques<\/p><\/li><\/ol><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-5386\" class=\"elementor-tab-title\" data-tab=\"6\" role=\"tab\" aria-controls=\"elementor-tab-content-5386\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"\" class=\"elementor-toggle-title\">FORMATION C++ 11\/C++17 POUR DEVELOPPEUR C++<\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-5386\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"6\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-5386\"><h2>Objectifs de la formation\u00a0<\/h2><p>Cette formation\u00a0 vous pr\u00e9sentera sous un angle conceptuel et op\u00e9rationnel les nouveaut\u00e9s du langage C++ depuis la version 2011 et plus g\u00e9n\u00e9ralement, au-del\u00e0 des nouveaut\u00e9s, vous disposerez d\u2019une vue compl\u00e8te sur le langage C++.<\/p><p>\u00c0 l&#8217;issue de cette formation, vous aurez acquis les connaissances et les comp\u00e9tences n\u00e9cessaires pour :<\/p><ul><li>Mettre en \u0153uvre les nombreuses nouveaut\u00e9s du C++ 11 au C++ 17<\/li><\/ul><ul><li>Maitriser les nouveaux mots-cl\u00e9s du langage<\/li><li>Mettre en oeuvre les pointeurs intelligents<\/li><li>Connaitre la s\u00e9mantique de mouvement<\/li><li>Comprendre la notion de transfert parfait<\/li><li>Maitriser les expressions lambdas<\/li><li>Mettre en oeuvre les threads<\/li><li>Connaitre les nouvelles API de la STL<\/li><\/ul><h2>\u00c0 qui s&#8217;adresse cette formation ?<\/h2><p><strong>Public :<\/strong><\/p><p>Cette formation C++ s&#8217;adresse aux d\u00e9veloppeurs d&#8217;applications.<\/p><p><strong>Pr\u00e9requis :<\/strong><\/p><p>Bonnes connaissances du langage C++.<\/p><h2>Contenu du cours\u00a0<\/h2><ol><li><h3>1.<\/h3><h3>Bref historique des versions de C++ pass\u00e9es, pr\u00e9sentes, futures<\/h3><p>C++98, C++03, C++0x, C++11, C++14, C++17<\/p><h3>Les outils de d\u00e9veloppement<\/h3><p>Les versions de GCC<br \/>Les versions d\u2019Eclipse<br \/>Les versions de Visual Studio<br \/>Les librairies BOOST et STL : convergence ?<\/p><p><strong><em>Travaux pratiques :\u00a0<\/em><\/strong><\/p><p><em>Test de la version install\u00e9e<\/em><\/p><h3>Les nouveaut\u00e9s du langage C++ 11\/C++ 17<\/h3><p>Les espaces de nom inline<br \/>Les cha\u00eenes lit\u00e9rales brutes et Unicode<br \/>Les types POD (Plain Old Data) revisit\u00e9s<br \/>La constantes nullptr<br \/>Les expressions constantes g\u00e9n\u00e9ralis\u00e9es (constexpr)<br \/>Le \u00ab range-based \u00bb for<br \/>Les d\u00e9clarations \u00e9tendues de l\u2019amiti\u00e9<br \/>Les lit\u00e9raux d\u00e9finis par l\u2019utilisateur<br \/>Les \u00e9num\u00e9rations fortement typ\u00e9es<br \/>L\u2019inf\u00e9rence de type : auto et decltype<br \/>Tableaux statiques : std ::array<br \/>Nouvelle syntaxe pour le type de retour des fonctions<br \/>Le mot-cl\u00e9 noexcept en remplacement de throw<\/p><p><strong><em>Travaux pratiques :\u00a0<\/em><\/strong><\/p><p><em>Mise en \u0153uvre des nouveaut\u00e9s<\/em><\/p><h3>Les nouveaut\u00e9s au niveau des classes en C++11\/C++ 17<\/h3><p>Initialisation des donn\u00e9es membres non-statiques<br \/>Constructeurs d\u00e9l\u00e9gu\u00e9s<br \/>Les initialiseurs de conteneurs et de donn\u00e9es membres<br \/>Les rvalues-reference et la s\u00e9mantique de d\u00e9placement (move constructeur et surcharge de l\u2019op\u00e9rateur d\u2019affectation par d\u00e9placement)<br \/>Les directives =delete et =default<br \/>La surcharge explicite de la virtualit\u00e9 (override)<br \/>Les m\u00e9thodes et les classes \u00ab final \u00bb<\/p><p><strong><em>Travaux pratiques :<\/em><\/strong><\/p><p><em>Forme canonique d\u2019une classe avec la s\u00e9mantique de d\u00e9placement<\/em><\/p><h3>Vers la programmation fonctionnelle en C++11\/C++ 17<\/h3><p>Les lambda-expressions : syntaxe, typage, utilisation<br \/>Int\u00e9r\u00eat de \u00ab auto \u00bb et \u00ab decltype \u00bb avec les lambda-expressions<br \/>La gestion des fermetures (closures) li\u00e9es au contexte<\/p><p><strong><em>Travaux pratiques :\u00a0<\/em><\/strong><\/p><p><em>Mise en \u0153uvre des lambda-expressions<\/em><\/p><h3>Nouveaut\u00e9s dans les templates avec C++11\/C++ 17<\/h3><p>Alias de template (using)<br \/>Nombre d\u2019arguments variables (variadic template)<br \/>Les types locaux et non nomm\u00e9s comme arguments template<\/p><h3>Nouveaut\u00e9s dans la STL<\/h3><p>Nouveaux conteneurs : unordered_XXX, forward_list, array<br \/>Nouveaux algorithmes \u00a0<\/p><h3>Gestion m\u00e9moire et STL<\/h3><p>Les pointeurs intelligents : unique_ptr (auto_ptr est obsol\u00e8te) , weak_ptr, shared_ptr.<br \/>Utilisation avec la STL<\/p><p><strong><em>Travaux pratiques :\u00a0<\/em><\/strong><\/p><p><em>Mise en \u0153uvre des pointeurs intelligents<\/em><\/p><h3>Le namespace chrono<\/h3><p>Les classes duration et time_point<br \/>Les horloges system_clock, steady_clock et high_resolution_clock<br \/>Les traits : treat_as_floating_point, duration_values, common_type (duration)<br \/>Les fonctions duration_cast et time_point_cast<br \/>Les typedefs d\u2019instantiation de la classe duration : hour, minute, etc.<\/p><p><strong><em>Travaux pratiques :\u00a0<\/em><\/strong><\/p><p><em>Mise en \u0153uvre<\/em><\/p><h3>Utilisation des threads<\/h3><p>Le mot-cl\u00e9 thread_local<br \/>D\u00e9clarer et ex\u00e9cuter un thread. Utilisation de join<br \/>Fonctions g\u00e9rant le thread courant : yield , get_id , sleep_for, sleep_until<br \/>Exclusion mutuelle : mutex, timed_mutex, etc.<br \/>Gestion des mutex : lock_guard, unique_lock, etc.<br \/>Algorithmes g\u00e9n\u00e9riques de verrou : try_lock, lock<br \/>Appel de fonction unique : once_flag, call_once<br \/>Les variables conditionnelles<br \/>Futures\/Asynchronisme : promise, packaged_task, future, shared_future, async, etc.<br \/>Future errors<br \/>La fonction hardware_concurrency<\/p><p><strong><em>Travaux pratiques :\u00a0<\/em><\/strong><\/p><p><em>Mise en \u0153uvre des threads<\/em><\/p><\/li><\/ol><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-5387\" class=\"elementor-tab-title\" data-tab=\"7\" role=\"tab\" aria-controls=\"elementor-tab-content-5387\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"\" class=\"elementor-toggle-title\">FORMATION DU C++ 11 AU C++20 POUR DEVELOPPEUR C++ <\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-5387\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"7\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-5387\"><h2>Objectifs de la formation\u00a0<\/h2><p>Cette\u00a0<strong>formation C++11\/C++20<\/strong>\u00a0vous pr\u00e9sente sous un angle conceptuel et op\u00e9rationnel les nouveaut\u00e9s du langage C++ depuis la version 2011. Plus g\u00e9n\u00e9ralement, au-del\u00e0 des nouveaut\u00e9s, vous disposerez d\u2019une vue compl\u00e8te sur le langage C++.<\/p><p>\u00c0 l&#8217;issue de cette\u00a0<strong>formation C++11\/C++20<\/strong>, vous serez en mesure de :<\/p><ul><li>Conna\u00eetre les nouveaux mots-cl\u00e9s du langage<\/li><li>Mettre en \u0153uvre les pointeurs intelligents<\/li><li>Ma\u00eetriser la s\u00e9mantique de mouvement<\/li><li>Comprendre la notion de transfert parfait<\/li><li>Conna\u00eetre les expressions lambdas<\/li><li>Mettre en \u0153uvre les threads et les coroutines<\/li><li>Conna\u00eetre les nouvelles API de la STL<\/li><\/ul><h2>\u00c0 qui s&#8217;adresse cette formation ?<\/h2><p><strong>Public :<\/strong><\/p><p>Ce cours C++11\/C++20 s&#8217;adresse principalement aux d\u00e9veloppeurs d&#8217;applications.<\/p><p><strong>Pr\u00e9requis :<\/strong><\/p><p>Pour suivre cette formation C++11\/C++20, il est n\u00e9cessaire d&#8217;avoir de bonnes connaissances en langage C++.<\/p><h2>Contenu du cours\u00a0<\/h2><ol><li><h3>1.<\/h3><p><strong>Bref historique des versions de C++ pass\u00e9es, pr\u00e9sentes et futures<\/strong><\/p><p>C++98, C++03, C++0x, C++11, C++14, C++17, C++20<\/p><p><strong>Les outils de d\u00e9veloppement<\/strong><\/p><p>Les versions de GCC<br \/>Les versions d\u2019Eclipse<br \/>Les versions de Visual Studio<\/p><p><strong><em>Travaux pratiques<\/em><\/strong><\/p><p><em>Test de la version install\u00e9e<\/em><\/p><p><strong>Les nouveaut\u00e9s du langage C++11\/C++17<\/strong><\/p><p>Les espaces de nom inline<br \/>Les cha\u00eenes litt\u00e9rales brutes et Unicode<br \/>Les types POD (Plain Old Data) revisit\u00e9s<br \/>La constantes nullptr<br \/>Les expressions constantes g\u00e9n\u00e9ralis\u00e9es (constexpr)<br \/>Le \u00ab range-based \u00bb for<br \/>Les d\u00e9clarations \u00e9tendues de l\u2019amiti\u00e9<br \/>Les litt\u00e9raux d\u00e9finis par l\u2019utilisateur<br \/>Les \u00e9num\u00e9rations fortement typ\u00e9es<br \/>L\u2019inf\u00e9rence de type : auto et decltype<br \/>Tableaux statiques : std :array<br \/>Nouvelle syntaxe pour le type de retour des fonctions<br \/>Le mot-cl\u00e9 noexcept en remplacement de throw<\/p><p><strong><em>Travaux pratiques :<\/em><\/strong><\/p><p><em>Mise en \u0153uvre des nouveaut\u00e9s<\/em><\/p><p><strong>Les nouveaut\u00e9s au niveau des classes en C++11\/C++17<\/strong><\/p><p>Initialisation des donn\u00e9es membres non-statiques<br \/>Constructeurs d\u00e9l\u00e9gu\u00e9s<br \/>Les initialiseurs de conteneurs et de donn\u00e9es membres<br \/>Les rvalues-reference et la s\u00e9mantique de d\u00e9placement (move constructeur et surcharge de l\u2019op\u00e9rateur d\u2019affectation par d\u00e9placement)<br \/>Les directives =delete et =default<br \/>La surcharge explicite de la virtualit\u00e9 (override)<br \/>Les m\u00e9thodes et les classes \u00ab final \u00bb<\/p><p><strong>Travaux pratiques<\/strong><\/p><p><em>Forme canonique d\u2019une classe avec la s\u00e9mantique de d\u00e9placement<\/em><\/p><p><strong>Vers la programmation fonctionnelle en C++11\/C++17<\/strong><\/p><p>Les lambda-expressions : syntaxe, typage, utilisation<br \/>Int\u00e9r\u00eat de \u00ab auto \u00bb et \u00ab decltype \u00bb avec les lambda-expressions<br \/>La gestion des fermetures (closures) li\u00e9es au contexte<\/p><p><strong><em>Travaux pratiques<\/em><\/strong><\/p><p><em>Mise en \u0153uvre des lambda-expressions<\/em><\/p><p><strong>Nouveaut\u00e9s dans les templates avec C++11\/C++17<\/strong><\/p><p>Alias de template (using)<br \/>Nombre d\u2019arguments variables (variadic template)<br \/>Les types locaux et non nomm\u00e9s comme arguments template<\/p><p><strong>Nouveaut\u00e9s dans la STL<\/strong><\/p><p>Nouveaux conteneurs : unordered_XXX, forward_list, array<br \/>Nouveaux algorithmes \u00a0<\/p><p><strong>Gestion m\u00e9moire et STL<\/strong><\/p><p>Les pointeurs intelligents : unique_ptr (auto_ptr est obsol\u00e8te) , weak_ptr, shared_ptr.<br \/>Utilisation avec la STL<\/p><p><strong><em>Travaux pratiques<\/em><\/strong><\/p><p><em>Mise en \u0153uvre des pointeurs intelligents<\/em><\/p><p><strong>Le namespace chrono<\/strong><\/p><p>Les classes duration et time_point<br \/>Les horloges system_clock, steady_clock et high_resolution_clock<br \/>Les traits : treat_as_floating_point, duration_values, common_type (duration)<br \/>Les fonctions duration_cast et time_point_cast<br \/>Les typedefs d\u2019instanciation de la classe duration : hour, minute, etc.<\/p><p><strong><em>Travaux pratiques<\/em><\/strong><\/p><p><em>Mise en \u0153uvre<\/em><\/p><p><strong>Utilisation des threads<\/strong><\/p><p>Le mot-cl\u00e9 thread_local<br \/>D\u00e9clarer et ex\u00e9cuter un thread. Utilisation de join<br \/>Fonctions g\u00e9rant le thread courant : yield , get_id , sleep_for, sleep_until<br \/>Exclusion mutuelle : mutex, timed_mutex, etc.<br \/>Gestion des mutex : lock_guard, unique_lock, etc.<br \/>Algorithmes g\u00e9n\u00e9riques de verrou : try_lock, lock<br \/>Appel de fonction unique : once_flag, call_once<br \/>Les variables conditionnelles<br \/>Futures\/Asynchronisme : promise, packaged_task, future, shared_future, async, etc.<br \/>Future errors<\/p><p><strong><em>Travaux pratiques<\/em><\/strong><\/p><p><em>Mise en \u0153uvre des threads<\/em><\/p><p><strong>Les nouveaut\u00e9s du langage C++20<\/strong><\/p><p>Coroutines<br \/>Modules<br \/>Contraintes et Concepts<br \/>Nouvel op\u00e9rateur de comparaison<br \/>Initialiseurs d\u00e9sign\u00e9s<br \/>Mots-cl\u00e9s consteval et constinit<br \/>Mots-cl\u00e9s no_unique_adress, likely et unlikely<br \/>Nouveaut\u00e9s dans la librairie STL<\/p><p><strong><em>Travaux pratiques<\/em><\/strong><\/p><p><em>Mise en \u0153uvre des co-routines<br \/>Mise en \u0153uvre des modules<\/em><\/p><\/li><\/ol><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-toggle-item\">\n\t\t\t\t\t<div id=\"elementor-tab-title-5388\" class=\"elementor-tab-title\" data-tab=\"8\" role=\"tab\" aria-controls=\"elementor-tab-content-5388\" aria-expanded=\"false\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon elementor-toggle-icon-left\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-closed\"><i class=\"fas fa-caret-right\"><\/i><\/span>\n\t\t\t\t\t\t\t\t<span class=\"elementor-toggle-icon-opened\"><i class=\"elementor-toggle-icon-opened fas fa-caret-up\"><\/i><\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"\" class=\"elementor-toggle-title\">FORMATION QT: CONCEPTION D\u2019INTERFACES GRAPHIQUES EN C++ <\/a>\n\t\t\t\t\t<\/div>\n\n\t\t\t\t\t<div id=\"elementor-tab-content-5388\" class=\"elementor-tab-content elementor-clearfix\" data-tab=\"8\" role=\"tabpanel\" aria-labelledby=\"elementor-tab-title-5388\"><h2>Objectifs de la formation\u00a0<\/h2><p>Qt5 est un Framework destin\u00e9 au d\u00e9veloppement d&#8217;applications graphiques en C++. Sa facilit\u00e9 de mise en \u0153uvre et sa polyvalence le rendent incontournable.<\/p><p>Qt5 permet de cr\u00e9er des applications compatibles sur Windows, Mac OS et Linux, mais aussi sur Android et IOS, en s\u2019appuyant sur les \u00e9l\u00e9ments graphiques de tous ces syst\u00e8mes.<\/p><p>\u00c0 l&#8217;issue de cette formation, vous aurez acquis les connaissances et les comp\u00e9tences n\u00e9cessaires pour :<\/p><ul><li>Cr\u00e9er des \u00e9crans et g\u00e9rer les \u00e9v\u00e8nements<\/li><li>Cr\u00e9er des widgets personnalis\u00e9s<\/li><li>Utiliser l&#8217;\u00e9diteur graphique QtCreator pour concevoir une application<\/li><li>Conna\u00eetre les notions avanc\u00e9es de Qt<\/li><\/ul><h2>\u00c0 qui s&#8217;adresse cette formation ?<\/h2><p><strong>Public :<\/strong><\/p><p>Cette formation Qt s\u2019adresse principalement aux d\u00e9veloppeurs.<\/p><p><strong>Pr\u00e9requis :<\/strong><\/p><p>Une exp\u00e9rience de d\u00e9veloppement en programmation C++, m\u00eame l\u00e9g\u00e8re, est souhaitable pour tirer pleinement profit de cette formation.<\/p><h2>Contenu du cours\u00a0<\/h2><ol><li><h3>1.<\/h3><h3>C++ et Qt<\/h3><p>Historique de Qt<br \/>\u00c9volution des versions jusqu&#8217;\u00e0 Qt 5<br \/>Plateformes support\u00e9es<br \/>Qt Widgets vs QML<br \/>Gestion des licences<\/p><h3>Premiers pas avec Qt<\/h3><p>Pr\u00e9sentation de l&#8217;IDE QtCreator et QtDesigner<br \/>Le mod\u00e8le objet particulier de Qt<br \/>R\u00f4le du pr\u00e9-processeur MOC (Meta Object Compiler)<br \/>Classes principales : QMainWindow, QDialog, types, conversions\u2026<br \/>Bo\u00eetes de messages<br \/>Principaux composants graphiques, menus et barres d&#8217;outils<br \/>Gestion du positionnement avec les layouts<br \/>Zones d&#8217;affichage et d&#8217;impression<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Cr\u00e9ation d&#8217;une IHM simple avec champs de texte, menus et bo\u00eetes de dialogues<\/em><\/p><h3>Gestion d&#8217;\u00e9v\u00e8nements<\/h3><p>Principe des signaux et slots<br \/>R\u00f4le de la macro Q_OBJECT<br \/>Filtres d&#8217;\u00e9v\u00e8nements<br \/>Utilisation de QSignalMapper<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Ajout d&#8217;une gestion d&#8217;\u00e9v\u00e8nements \u00e0 l&#8217;application d\u00e9j\u00e0 d\u00e9velopp\u00e9e<\/em><\/p><h3>Cr\u00e9ation de widgets personnalis\u00e9s<\/h3><p>H\u00e9riter de QWidget<br \/>Structure, \u00e9v\u00e8nements<br \/>Int\u00e9gration de widgets dans QtDesigner<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Cr\u00e9ation d&#8217;un widget repr\u00e9sentant un formulaire<\/em><\/p><h3>QtQuick et QML<\/h3><p>Pr\u00e9sentation<br \/>Syntaxe du langage et principaux concepts<br \/>Diff\u00e9rences cl\u00e9s avec les widgets<br \/>Pr\u00e9sentation des principaux composants textuels et graphiques<br \/>Cr\u00e9er des composants r\u00e9utilisables<br \/>Positionner ses \u00e9l\u00e9ments<br \/>Fonctionnement du property binding<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Cr\u00e9ation en QML d&#8217;une IHM simple avec champs de texte, menus et bo\u00eetes de dialogues<\/em><\/p><h3>Autres API Qt<\/h3><p>Collections: conteneurs et algorithmes<br \/>Manipulation de fichiers<br \/>Connexions aux bases de donn\u00e9es<br \/>Mise en \u0153uvre du multi-threading<br \/>Communication entre threads<br \/>Connexions r\u00e9seau en TCP, HTTP, FTP<br \/>Manipulation de flux XML<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Ajout d&#8217;un acc\u00e8s base de donn\u00e9es \u00e0 l&#8217;application, ainsi qu&#8217;un m\u00e9canisme de log dans un fichier<\/em><em><br \/>Ajout d&#8217;un acc\u00e8s r\u00e9seau pour transmettre les donn\u00e9es de l&#8217;application \u00e0 un serveur distant<\/em><\/p><h3>Notions avanc\u00e9es<\/h3><p>Mise en \u0153uvre du Drag &amp; Drop<br \/>Personnalisation du Look &amp; Feel<br \/>Gestion des graphismes 2D et 3D<br \/>Internationalisation<br \/>Cr\u00e9ation de plugins<br \/>Scripting avec JavaScript<\/p><p><strong><em>Travaux Pratiques :<\/em><\/strong><\/p><p><em>Mise en \u0153uvre de l&#8217;internationalisation de l&#8217;application<\/em><\/p><\/li><\/ol><\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Le C++ est un&nbsp;langage de programmation : il permet d&#8217;\u00e9crire des programmes informatiques, pour cr\u00e9er des applications mobiles ou des jeux vid\u00e9o, par exemple. C++ est cr\u00e9\u00e9 \u00e0 partir du langage C, dont il \u00e9tend les fonctionnalit\u00e9s : C++ permet notamment de faire de la programmation orient\u00e9e objet (POO). Le langage C est un&nbsp;langage de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-12874","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/705consulting.com\/index.php\/wp-json\/wp\/v2\/pages\/12874","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/705consulting.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/705consulting.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/705consulting.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/705consulting.com\/index.php\/wp-json\/wp\/v2\/comments?post=12874"}],"version-history":[{"count":11,"href":"https:\/\/705consulting.com\/index.php\/wp-json\/wp\/v2\/pages\/12874\/revisions"}],"predecessor-version":[{"id":13507,"href":"https:\/\/705consulting.com\/index.php\/wp-json\/wp\/v2\/pages\/12874\/revisions\/13507"}],"wp:attachment":[{"href":"https:\/\/705consulting.com\/index.php\/wp-json\/wp\/v2\/media?parent=12874"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}