Résumé du cours de c++
Chap 0 – Programme Hello World
Ce premier chapitre présente la structure minimale d’un programme C++ et introduit les éléments indispensables pour commencer à programmer.
À travers l’exemple classique « Hello World », nous découvrons la
fonction main(), le rôle de la valeur retournée,
l’affichage dans la console avec std::cout ainsi que
l’utilisation des bibliothèques C++.
Le chapitre se termine par un programme capable de recevoir des arguments lors de son lancement, une première approche des tableaux de chaînes de caractères et des mécanismes qui seront approfondis dans les chapitres consacrés aux fonctions et aux pointeurs.
Chap 1 – Les variables et la mémoire en C++
Ce chapitre introduit une notion fondamentale du langage C++ : le lien entre les variables utilisées dans un programme et leur représentation en mémoire.
Nous découvrons ce qu’est réellement une variable, où elle est
stockée, et comment obtenir son adresse mémoire grâce à l’opérateur
&. Le mot-clé sizeof permet ensuite de
déterminer la quantité de mémoire occupée par un objet.
Ce chapitre présente également la représentation des adresses en hexadécimal, la différence entre le nom d’une variable et son emplacement mémoire, ainsi que les premières notions indispensables avant l’étude approfondie des pointeurs.
Chap 2 – Les références en C++
Ce chapitre présente une notion essentielle du langage C++ : les références. Une référence permet de créer un second nom pour un objet existant, sans effectuer de copie de sa valeur.
Nous découvrons le fonctionnement d’une référence comme alias,
son lien avec la mémoire, ainsi que l’utilisation des références
constantes avec le mot-clé const. Cette notion permet
notamment de transmettre efficacement des objets aux fonctions tout
en empêchant leur modification.
Le chapitre compare enfin les références et les pointeurs afin de mettre en évidence leurs différences fondamentales : une référence représente un alias permanent, tandis qu’un pointeur est une variable contenant une adresse mémoire pouvant être manipulée.
Chap 3 – Les pointeurs en C++
Ce chapitre présente l’un des mécanismes fondamentaux du langage C++ : les pointeurs. Un pointeur est une variable particulière dont la valeur est une adresse mémoire, ce qui permet d’accéder directement aux objets stockés en mémoire.
Nous découvrons la création d’un pointeur avec l’opérateur &,
l’accès à la valeur pointée grâce à l’opérateur de déréférencement
*, ainsi que la possibilité de modifier une variable à
travers son adresse. Le chapitre introduit également la notion de
pointeur nul avec nullptr.
La dernière partie compare les pointeurs et les références afin de comprendre leurs différences fondamentales : un pointeur possède sa propre mémoire, peut être réaffecté et peut ne désigner aucun objet, tandis qu’une référence reste un alias permanent d’un objet existant.
Chap 4 – Les fonctions en C++
Ce chapitre présente les fonctions, un mécanisme essentiel permettant de structurer un programme C++ en blocs indépendants réalisant chacun une tâche précise. Les fonctions évitent les répétitions, améliorent la lisibilité du code et facilitent la construction de programmes complexes.
Nous découvrons la définition et l’appel d’une fonction, ainsi que la
manière dont une fonction peut communiquer avec le programme grâce aux
paramètres, aux arguments et aux valeurs de retour. Le rôle de
l’instruction return est étudié à travers des exemples
de calculs réutilisables.
Le chapitre compare les trois modes de transmission des données : passage par valeur, passage par référence et passage par pointeur. Ces notions permettent de comprendre comment une fonction peut travailler sur une copie ou modifier directement une variable existante.
Enfin, nous abordons l’organisation des programmes avec les prototypes de fonctions, les paramètres par défaut et la surcharge des fonctions. Cette dernière notion illustre le typage fort du C++ et la capacité du compilateur à choisir automatiquement la fonction correspondant aux types des arguments fournis.
Chap 5 – La récursivité en C++
Ce chapitre présente une autre manière de répéter des opérations en C++ :
la récursivité. Contrairement aux boucles classiques comme
for ou while, une fonction récursive résout
un problème en s’appelant elle-même sur une version plus simple du
problème initial.
Nous découvrons les principes fondamentaux d’une fonction récursive : le cas de base indispensable qui permet l’arrêt des appels, ainsi que le mécanisme de la pile d’appels qui conserve les informations nécessaires lorsque plusieurs appels de la même fonction sont en attente.
À travers différents exemples, dont le compte à rebours, le calcul d’une somme et les célèbres Tours de Hanoï, nous observons comment un problème complexe peut être décomposé en sous-problèmes identiques mais plus petits. Cette approche permet d’obtenir des programmes souvent très élégants, tout en comprenant leurs limites en termes de nombre d’appels et de mémoire utilisée.
Chap 6 – Les espaces de noms en C++
Ce chapitre présente les espaces de noms (namespace),
un mécanisme essentiel du C++ permettant d’organiser un programme
et d’éviter les conflits entre des fonctions, variables ou classes
portant le même nom.
À travers plusieurs exemples, nous découvrons comment deux éléments
identiques peuvent coexister dans des espaces de noms différents
grâce à l’opérateur de résolution de portée ::.
Nous comprenons également la signification de la notation
std::cout et le rôle de l’espace de noms
std qui regroupe les éléments principaux de la bibliothèque
standard du C++.
Nous apprenons ensuite à créer nos propres espaces de noms afin de
regrouper logiquement les fonctions et les classes d’un projet.
Enfin, l’instruction using namespace est étudiée avec
ses avantages dans les petits programmes et ses limites dans les
projets plus importants.
Chap 7 – Les tableaux en C++
Ce chapitre présente les tableaux, une structure fondamentale du C++ permettant de regrouper plusieurs valeurs de même type sous un seul nom. Ils évitent de créer de nombreuses variables individuelles et permettent de traiter efficacement des ensembles de données.
Nous découvrons la déclaration d’un tableau, le rôle des indices et
l’accès aux différents éléments grâce à l’opérateur [].
Le chapitre explique également pourquoi le premier élément d’un tableau
porte l’indice 0 et comment lire ou modifier chaque valeur
comme une variable classique.
Les tableaux sont ensuite associés aux boucles afin de parcourir automatiquement leurs éléments. À travers plusieurs applications, nous apprenons à calculer une somme, une moyenne, rechercher une valeur maximale et réaliser différents traitements sur un ensemble de données.
Chap 8 – Les chaînes de caractères en C++
Ce chapitre présente le fonctionnement interne des chaînes de caractères
en C++. Contrairement à une idée courante, une chaîne de caractères
classique n’est pas un nouveau type de données : elle est simplement un
tableau de caractères char dont le dernier élément est le
caractère spécial '\0' indiquant la fin du texte.
Nous découvrons comment les caractères sont organisés en mémoire, le rôle des chaînes littérales et la différence entre la taille réelle d’un tableau et la longueur d’une chaîne. Le chapitre montre également comment parcourir une chaîne avec un indice puis avec un pointeur.
Plusieurs fonctions fondamentales sont ensuite développées sans utiliser les bibliothèques existantes : copier une chaîne, comparer deux textes et concaténer deux chaînes. Ces exemples permettent de comprendre concrètement le fonctionnement des tableaux de caractères et préparent l’étude de structures de données plus évoluées.
Chap 9 – Créer de nouveaux types de données en C++
Ce chapitre introduit les structures, qui permettent de regrouper plusieurs
variables liées entre elles au sein d’un nouveau type de données.
À travers l’exemple d’une date, nous découvrons comment créer une structure,
déclarer des variables de ce nouveau type et accéder à ses membres avec
l’opérateur ..
Nous étudions ensuite l’initialisation, la copie et l’affectation des structures, ainsi que leur transmission aux fonctions et leur retour comme valeur. Ces notions montrent qu’une structure se comporte comme un véritable type de données, comparable aux types fondamentaux du langage.
Le chapitre présente également les alias de types avec typedef
et using, ainsi que les énumérations permettant de définir des
ensembles de valeurs symboliques. Les structures constituent une étape
essentielle avant l’étude des classes et de la programmation orientée objet.
Chap 10 – Passage des paramètres à une fonction en C++
Ce chapitre présente les différentes manières de transmettre des paramètres
à une fonction en C++. À travers l’exemple d’une structure Date,
nous comparons le passage par valeur, le passage par référence, le passage
par référence constante et le passage par pointeur.
Le passage par valeur crée une copie indépendante de la variable originale, tandis que le passage par référence permet à une fonction de manipuler directement la variable du programme appelant. La référence constante permet de consulter un objet sans effectuer de copie tout en empêchant toute modification accidentelle.
Enfin, le passage par pointeur introduit l’utilisation explicite des adresses
mémoire avec les opérateurs & et ->. Le choix du
mode de transmission dépend du rôle du paramètre : copier une donnée,
modifier un objet, simplement le consulter ou manipuler directement son
adresse mémoire.