Générer un programme
Your native language: with Chrome, right-click on the page and select « Translate into … »
English version:
Un typage statique
Le langage C++ dispose d’un typage statique. Cela signifie que les types de toutes les variables sont déterminés au moment de la compilation, plutôt qu’à l’exécution. Ainsi, le type de chaque variable doit être soit:
déclaré explicitement par le programmeur
inféré par le compilateur (par exemple le résultat de 5+6.0 est un double)
Cela implique qu’aucune variable n’est autorisée à changer de type durant l’exécution du programme, d’où le terme de statique. De cette façon, aucun temps n’est perdu durant l’exécution du programme à effectuer des vérifications sur les types des variables, d’où un gain de performance.
Indiquez si les affirmations suivantes sont vraies ou fausses :
Si le langage utilise le typage statique, les variables ne peuvent pas changer de valeur.
Le typage statique permet de détecter toutes les erreurs dans un programme.
Le typage statique interdit à une variable d’avoir plusieurs types durant l’exécution.
Le typage statique permet de détecter des erreurs entre types incompatibles avant l’exécution du programme.
Le typage statique permet une efficacité accrue des programmes.
Les éléments présents dans le code C++
Nous précisons ci-dessous les principaux éléments de la structure du C++ :
Les commentaires
Les noms (identifiants)
Les mots-clefs
Les littéraux
Les signes
Les commentaires
Plusieurs possibilités :
Soit placés en fin de ligne et précédés par //
Soit sur plusieurs lignes et délimités par /* et */
Les noms
Le C++ permet au programmeur de nommer librement les variables, les tableaux, les fonctions, les structures et les classes. Ces noms (name) sont appelés aussi des identifiants (identifiers). Les identifiants doivent respecter les mêmes règles :
Un identifiant doit commencer par une lettre ou par un caractère _ de soulignement (underscore). En conséquence, aucun identifiant ne peut commencer par un chiffre.
Pas de caractères spéciaux ou d’espaces à l’intérieur d’un identifiant.
Pas de mots-clés.
Note
En C++, les caractères majuscules et minuscules ont des significations différentes. On dit que le langage est sensible à la casse. Ainsi, Total et total sont considérés comme deux identifiants différents, associés par exemple à deux variables distinctes.
Les mots-clefs
Un mot-clef (keyword) appelé aussi un mot réservé, représente un mot appartenant à la liste des mots réservés du langage. Cette liste est établie par la norme du langage qui évolue en fonction des versions du C++. Il est interdit d’utiliser ces mots-clefs comme identifiant. Dans le tableau ci-dessous, nous vous présentons les plus classiques qui vous seront sûrement déjà familiers.
Exemple de mots-clefs du C++
bool |
char |
class |
do |
double |
else |
false |
float |
for |
if |
int |
return |
unsigned |
this |
true |
void |
while |
- Les mots-clefs tiennent différents rôles :
true et false : correspondent à des constantes de type booléen.
bool, char, float, double, int, void : sont associés aux types du C++.
if, for, while : représentent des instructions du langage servant à gérer le flux de contrôle d’un programme.
Les littéraux
Un littéral (literal) désigne une valeur écrite dans le code source du programme. On trouve aussi le terme de constante (constant) utilisé de manière similaire dans la communauté. Ils sont divisés en sous-catégories :
- Les littéraux des nombres entiers
4897 : forme décimale
0b110101010 : forme binaire
0xFF23 : forme hexadécimale
- Les littéraux des nombres flottants
8.235 : nombre flottant de type double
- Les littéraux booléens
true/false : valeurs booléennes
- Les littéraux de tableau de caractères
"Bonjour" : tableau de caractères
Les signes
Il existe une liste de signes en C++ appelés Ponctuators (anglicisme) : ! % ^ & * ( ) - + = { } | ~ [ ] ; “ : » < > ? , . / regroupés en deux grandes catégories :
Les délimiteurs — signes qui structurent le code, par exemple : { }, ( ), ;, ,, : …
Les opérateurs — signes qui servent aux calculs ou aux manipulations, par exemple : +, -, *, /, =, <, > …
Chacun de ces signes, suivant le contexte où il est utilisé, peut prendre des significations différentes. Prenons le cas de la paire de parenthèses :
Dans l’écriture : a = fnt(), elles représentent un appel de fonction.
Dans l’écriture : 4/(5-a), elles indiquent l’ordre dans lequel un calcul sera effectué.
Dans l’écriture : void fnt(int a), elles permettent de lister les paramètres d’une fonction.
Vous pouvez retrouver pour chaque signe sa liste d’interprétations possibles.
Par exemple, les accolades { } sont des signes servant de délimiteurs pour isoler un bloc de code. Comme autres signes fréquemment utilisés, on trouve les opérateurs arithmétiques : + - /
Indiquez si les affirmations suivantes sont vraies ou fausses :
8.235 est un littéral.
for, while sont des mots-clefs du C++.
On peut choisir int comme nom de variable.
Le C++ est un langage non sensible à la casse.
Une paire de parenthèses correspond toujours à un appel de fonction.
Le développeur peut définir de nouveaux mots-clefs.
Les accolades sont des signes du langage C++.
La génération
Principe
La génération d’un programme (build en anglais) désigne le processus qui transforme les fichiers sources (texte) en programme exécutable sur une machine donnée. Ce processus repose deux étapes principales :
La compilation : chaque fichier source (.cpp) est traduit en un fichier objet avec l’extension .obj sous Windows et .o sous Linux. Chacun de ces fichiers représente une portion du programme final. L’utilitaire accomplissant cette tâche s’appelle un compilateur.
La liaison (ou link en anglais) : les différents fichiers objets sont fusionnés pour obtenir le programme exécutable final. L’utilitaire effectuant cette tâche s’appelle un éditeur de liens (linker en anglais).
Le compilateur et l’éditeur de liens peuvent être des programmes distincts ou intégrés dans un même outil, cela n’a pas d’importance pour le processus.
Avertissement
Dans l’usage courant, on emploie souvent l’expression compiler un programme à la place de générer un programme. Cette confusion s’explique par le fait qu’au cours du build, l’étape de compilation est généralement la plus longue et apparaît donc comme l’étape principale.
Voici un schéma qui représente le traitement des différents fichiers sources et des fichiers objets durant l’étape de Build :

Indépendance des fichiers sources
Chaque fichier source est compilé indépendamment : il n’a pas connaissance du contenu des autres fichiers. Cette approche permet de ne recompiler que les fichiers modifiés, ce qui accélère la génération du programme. En revanche, l’étape de liaison doit toujours être rejouée dans son intégralité.
Les erreurs
La compilation produit des erreurs de compilation, liées à la syntaxe et localisées précisément dans les fichiers sources.
L’étape de liaison produit des erreurs de liaison comme par exemple lorsqu’une fonction est utilisée dans le programme alors que son code n’existe dans aucun des fichiers sources.
Outils de build
Pour exécuter ce processus, plusieurs approches sont possibles :
Exécuter manuellement les commandes dans un terminal,
Utiliser un utilitaire (comme Make ou CMake) qui automatise le build à l’aide de fichiers de configuration,
Recourir à un environnement de développement (IDE) permettant de lancer le build en un clic.
Indiquez si les affirmations suivantes sont vraies ou fausses :
L’étape de compilation traduit un fichier objet en fichier exécutable.
Si vous avez 3 fichiers .cpp et un fichier .exe, vous aurez 4 fichiers objets.
L’étape de liaison a lieu avant l’étape de compilation.
Un fichier source est recompilé lorsqu’il est mis à jour.
Un build représente la traduction du code source en programme exécutable.