Licence CC BY-NC

La programmation en C++ moderne

Apprenez la programmation de zéro jusqu'à l'infini !

Dernière mise à jour :
Auteurs :
Catégorie :
Temps de lecture estimé : 1 jour et 8 heures

Bienvenue dans ce cours sur l’apprentissage de la programmation avec le langage C++. Vous débutez complètement et n’avez qu’une vague idée de ce que peut bien être la programmation ? On vous a dit d’en apprendre plus sur le C++ ? Alors ce tutoriel est fait pour vous.

Pour rendre ce cours pédagogique, nous alternerons entre théorie, explications et détails techniques d’un côté et exercices, travaux pratiques et questions-réponses de l’autre. L’accent sera mis sur la rigueur, la qualité et les bonnes pratiques. Le rythme sera progressif, chaque concept étant introduit en temps voulu et en lien avec ce que nous aurons déjà vu.

Prérequis

Prérequis
Lire cette introduction à la programmation afin d’avoir des bases pour aborder l’apprentissage du C++.

Objectifs
Vous former à la programmation en vous donnant des bases solides sur lesquelles continuer.
Vous former au C++ moderne.

Remerciements

Car ce cours n’aurait jamais pu voir le jour sans l’aide et le soutien de plusieurs personnes.

  • @Akulen pour sa participation à la rédaction dans ses débuts.
  • Un merci particulier à @gbdivers pour son cours Débuter en C++ moderne qui aura été une source d’inspiration pour l’écriture du présent cours et à qui j’ai piqué plusieurs passages très bien expliqués.
  • Tous les membres qui ont participé à la bêta et qui ont grandement aidé à améliorer la qualité de ce tutoriel. Je cite en particulier @lmghs pour tous les commentaires et idées qu’il a soulevés, ainsi que @gbdivers.
  • Toute l’équipe de Zeste de Savoir ; en particulier, un grand merci à @Taurre qui s’est chargé de la validation.
  • Et l’ensemble des lecteurs, pour avoir choisi ce cours.
À venir

Ce cours est toujours en rédaction. D’autres chapitres et sections suivront au fur et à mesure.

Le début du voyage

  1. Le C++, qu'est-ce que c'est ?

    1. Petite mise au point

    2. Tour d'horizon du C++

    3. La documentation

  2. Le minimum pour commencer

    1. Des outils en ligne

    2. Des outils plus poussés

    3. Un mot concernant Windows

    4. Un mot concernant GNU/Linux

  3. Rencontre avec le C++

    1. Compilons notre premier programme

    2. Démystification du code

    3. Les commentaires

  4. Une super mémoire

    1. Les littéraux

    2. Les variables

    3. Qu'en déduisez-vous ?

    4. Les entrées

  5. Le conditionnel conjugué en C++

    1. Les booléens

    2. if — Si, et seulement si…

    3. else — Sinon…

    4. else if — La combinaison des deux précédents

    5. Conditions imbriquées

    6. [T.P] Gérer les erreurs d'entrée — Partie I

    7. La logique booléenne

    8. Tester plusieurs expressions

    9. Exercices

  6. Des boucles qui se répètent, répètent, répètent…

    1. while — Tant que…

    2. Exercices

    3. do while — Répéter … tant que

    4. [T.P] Gérer les erreurs d'entrée — Partie II

    5. for — Une boucle condensée

    6. Boucles imbriquées

    7. Convention de nommage

    8. Contrôler plus finement l'exécution de la boucle

  7. Au tableau !

    1. Un tableau c'est quoi ?

    2. std::vector — Mais quel dynamisme !

    3. Exercices

    4. std::array — Le tableau statique

    5. std::string — Un type qui cache bien son jeu

  8. Déployons la toute puissance des conteneurs

    1. Le socle de base : les itérateurs

    2. Des algorithmes à gogo !

    3. Personnalisation à la demande

    4. Exercices

  9. Des flux dans tous les sens

    1. Avant-propos

    2. std::ofstream — Écrire dans un fichier

    3. std::ifstream — Lire dans un fichier

    4. Exercice

    5. Encore plus de flux !

On passe la deuxième !

  1. Découpons du code — Les fonctions

    1. Les éléments de base d'une fonction

    2. Exercices

    3. Quelles sont vos références ?

    4. Nos fonctions sont surchargées !

    5. [T.P] Gérer les erreurs d'entrée — Partie III

    6. Dessine-moi une fonction

  2. Erreur, erreur, erreur…

    1. L'utilisateur est un idiot

    2. À une condition… ou plusieurs

    3. Le développeur est un idiot

    4. Les tests unitaires à notre aide

    5. [T.P] Gérer les erreurs d'entrée — Partie IV

    6. L'exception à la règle

    7. [T.P] Gérer les erreurs d'entrée — Partie V

  3. Des fonctions somme toute lambdas

    1. Une lambda, c'est quoi ?

    2. Syntaxe

    3. Exercices

    4. On va stocker ça où ?

    5. Paramètres génériques

    6. [T.P] Gérer les erreurs d'entrée — Partie VI

    7. [T.P] Gérer les erreurs d'entrée — Partie VII

    8. Capture en cours…

  4. Envoyez le générique !

    1. Quel beau modèle !

    2. [T.P] Gérer les erreurs d'entrée - Partie VIII

    3. Instanciation explicite

    4. Ce type là, c'est un cas !

  5. De nouvelles structures de données

    1. struct — Un agrégat de données

    2. std::tuple — Une collection hétérogène

    3. std::unordered_map — Une table associative

    4. std::unordered_set — Représenter un ensemble

    5. Un peu d'ordre, voyons !

    6. Une longue énumération

  6. Reprendriez-vous un peu de sucre syntaxique ?

    1. Ce type est trop long !

    2. Décomposons tout ça

    3. La surcharge d'opérateurs

  7. [T.P] Un gestionnaire de discographie

    1. L'énoncé

    2. Guide de résolution

    3. Corrigé complet

    4. Conclusion et pistes d'améliorations

  8. Découpons du code — Les fichiers

    1. Le principe

    2. La sécurité, c'est important

    3. Découpons le TP !

    4. Les avantages du découpage en fichiers

    5. Le cas des templates

Interlude - Être un développeur

  1. Avant-propos

    1. Ce que nous avons appris

    2. Différents paradigmes

    3. Brancher le cerveau avant tout

    4. Savoir se débrouiller

  2. Mais où est la doc ?

    1. Lire une page de doc

    2. Exercices

    3. Documenter son code avec Doxygen

    4. Quelques bonnes pratiques

  3. Compilation en cours…

    1. Le préprocesseur

    2. La compilation

    3. Le linker

    4. Schéma récapitulatif

  4. Chasse aux bugs !

    1. Le principe

    2. Visual Studio

    3. Qt Creator

    4. En ligne de commande avec gdb

  5. Une foule de bibliothèques

    1. Quelles bibliothèques choisir ?

    2. Généralités

    3. Installer Boost

    4. Installer SFML

  6. Améliorer ses projets

    1. git — Sauvegarder et versionner son code

    2. GitHub — Partager son code

    3. CMake — Automatiser la compilation de nos programmes

    4. Aller plus loin



Ce cours s’achève ici, mais votre apprentissage du C++ est loin d’être terminé. Il reste encore beaucoup de choses à apprendre. Vous pouvez commencer par les contenus C++ disponibles sur Zeste de Savoir. Certains approfondissent des concepts que nous avons introduits dans ce tutoriel, d’autres vous présenteront des notions nouvelles. Enfin, pour continuer votre apprentissage, voici quelques derniers conseils.

  • Soyez curieux : fouillez sur Internet pour découvrir de nouvelles méthodes, approfondissez celles que vous connaissez, renseignez-vous, testez de nouveaux outils, etc.
  • Entrainez-vous : c’est le meilleur moyen de progresser. Faites des projets qui vous tiennent à cœur, mettez en œuvre des algorithmes connus, réalisez des exercices, etc.
  • Lisez des codes produits par d’autres personnes : découvrez comment elles procèdent, apprenez d’elles de nouvelles techniques ou façons de faire et progressez en suivant leurs conseils. Vous pouvez par exemple commencer en visitant les forums de ce site.
  • Enfin, le plus important : amusez-vous ! ;)

58 commentaires

Bonsoir!! Je viens de m’inscrire sur ce site. Je voulais savoir s’il est possible de telecharger les cours sur ce site, si oui comment proceder?, parce que je veux telecharger le cours de c++ mais je n’ai pas vu de coin pour le telechargement. Merci

+0 -0

salut il me semble qu’il y a une erreur sur cette partie du cours sur les itérateurs (peut être que je me trompe je suis encore un simple débutant) :

Accéder à l’élément pointé

Nous savons comment pointer vers le premier élément de la collection, ainsi que signaler sa fin, mais ça ne nous avance pas vraiment. Il nous manque l’accès aux éléments. Pour cela, il faut déréférencer l’itérateur, grâce à l’étoile * devant celui-ci. L’exemple suivant affiche la valeur sur laquelle pointe l’itérateur, c’est-à-dire le premier élément du tableau, ici -1.

#include <iostream> #include <string>

int main() { std::string tableau { "Tu texte." }; auto debut_tableau { std::begin(tableau) };

// On affiche le premier élément du tableau.
std::cout << *debut_tableau << std::endl;
// Et on peut même le modifier, comme ce qu'on fait avec les références, ou les crochets.
*debut_tableau = 'D';
// On vérifie.
std::cout << tableau << std::endl;

return 0;

}

"le premier élément du tableau, ici -1." le premier élément n’est il pas le "T" de "Tu" en l’occurence ? je pense qu’il y a confusion avec l’exemple précedent dans lequel le premier élément est bien -1. sinon le cours est super continuez comme ça !

+0 -0

Yo, je souhaiterais savoir quand sera publié la partie sur l’orienté objet qui est toujours en version Beta? Comme sa je saurais quand commencer ce cours, histoire d’organisation.

Et surtout merci pour vos cours bien expliqués, des cours gratuits d’une telle qualité c’est rare de nos jours.

Édité par AzzeddineAtr

+3 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte