QCM : Initiation à la programmation C++ — 23 questions

Questions et réponses du QCM

1. Quelle distinction décrit correctement le rapport entre le C et le C++ ?

Le C est associé à la programmation structurée, tandis que le C++ ajoute la programmation orientée objet.
Le C++ a créé UNIX, tandis que le C a dérivé sa syntaxe de celle du C++.
Le C est orienté objet, tandis que le C++ se limite à la programmation structurée.
Le C et le C++ sont deux langages orientés objet conçus indépendamment l’un de l’autre.

Le C est associé à la programmation structurée, tandis que le C++ ajoute la programmation orientée objet.

Explication

Le C est associé à la programmation structurée et le C++ a été conçu par B. Stroustrup comme un langage orienté objet dérivé de la syntaxe du C. Confondre les deux paradigmes inverse précisément leur distinction dans cette description.

2. Quelle liste présente les principales normes C++ citées dans l’ordre chronologique ?

C++98, C++03, C++11, C++14, C++17, C++20 et C++23
C++98, C++11, C++03, C++17, C++14, C++23 et C++20
C++03, C++98, C++14, C++11, C++20, C++17 et C++23
C++11, C++14, C++17, C++20, C++23, C++98 et C++03

C++98, C++03, C++11, C++14, C++17, C++20 et C++23

Explication

La succession citée est C++98, C++03, C++11, C++14, C++17, C++20 et C++23. Les autres listes mélangent l’ordre des normes ou placent les normes anciennes après les plus récentes.

3. Qu’est-ce qu’un programme source en C++ ?

Un ensemble de bibliothèques déjà compilées sans structure syntaxique particulière
Un fichier numérique directement interprété par les circuits du microprocesseur
Une suite de commentaires destinée à expliquer les choix du programmeur
Un texte dont la structure respecte celle imposée par le langage C++

Un texte dont la structure respecte celle imposée par le langage C++

Explication

Un programme source est un texte organisé selon la structure et les règles du langage C++. Un fichier directement exploitable par le microprocesseur appartient à une forme numérique produite après la traduction.

4. Dans le code C++, quel élément termine une instruction et quel élément délimite un bloc ?

Le point-virgule termine une instruction et les accolades délimitent un bloc.
Les deux-points terminent une instruction et les parenthèses délimitent un bloc.
Les parenthèses terminent une instruction et les crochets délimitent un bloc.
Les accolades terminent une instruction et le point-virgule délimite un bloc.

Le point-virgule termine une instruction et les accolades délimitent un bloc.

Explication

En C++, le point-virgule marque la fin d’une instruction, tandis que les accolades regroupent plusieurs instructions dans un bloc. Les accolades ne remplacent donc pas le point-virgule pour terminer chaque instruction.

5. Quelle différence oppose correctement un interpréteur et un compilateur ?

L’interpréteur traduit progressivement, tandis que le compilateur traduit l’ensemble avant l’exécution.
L’interpréteur produit un fichier complet, tandis que le compilateur exécute chaque ligne avant la suivante.
L’interpréteur traduit le programme en une fois, tandis que le compilateur avance instruction par instruction.
L’interpréteur et le compilateur traduisent progressivement puis exécutent chaque partie immédiatement.

L’interpréteur traduit progressivement, tandis que le compilateur traduit l’ensemble avant l’exécution.

Explication

L’interpréteur traduit progressivement le programme et exécute les parties traduites au fur et à mesure, alors que le compilateur traduit l’intégralité du programme avant son exécution. La production préalable d’un fichier complet caractérise donc ici le compilateur, pas l’interpréteur.

6. Pourquoi un programme source doit-il être traduit avant d’être exécuté par un microprocesseur ?

Parce que le microprocesseur attend des instructions sous une forme numérique codée adaptée à son architecture.
Parce que le microprocesseur ne peut traiter que des commentaires écrits dans le langage du programmeur.
Parce que le programme source contient déjà des instructions numériques propres à chaque architecture matérielle.
Parce que la traduction transforme automatiquement chaque instruction en commentaire lisible par l’être humain.

Parce que le microprocesseur attend des instructions sous une forme numérique codée adaptée à son architecture.

Explication

Le microprocesseur reçoit des instructions numériques codées, dont la forme dépend notamment de son architecture, comme Intel ou ARM. Le programme source est au contraire un texte lisible par l’humain et ne constitue pas directement ce codage matériel.

7. Quelles étapes composent la transformation complète d’un programme C++ avant l’obtention de l’exécutable ?

La compilation, l’édition de liens, le débogage puis l’installation
Le préprocessing, la compilation, l’assemblage puis l’édition de liens
Le préprocessing, l’interprétation, l’assemblage puis l’exécution
L’assemblage, l’exécution, la compilation puis le préprocessing

Le préprocessing, la compilation, l’assemblage puis l’édition de liens

Explication

La transformation complète enchaîne le préprocessing, la compilation proprement dite, l’assemblage et l’édition de liens. Les trois premières étapes sont souvent regroupées sous le terme compilation, mais l’édition de liens intervient ensuite pour produire l’exécutable.

8. Quel fichier est produit par la commande `g++ -Wall -Wfatal-errors -c HelloWorld.cpp` ?

Le fichier objet HelloWorld.o
Le fichier source HelloWorld.cpp
Le fichier d’en-tête HelloWorld.h
L’exécutable HelloWorld.exe

Le fichier objet HelloWorld.o

Explication

L’option `-c` arrête le processus après la compilation et l’assemblage, ce qui produit le fichier objet HelloWorld.o. L’exécutable est obtenu ultérieurement par l’édition de liens.

9. Quelle distinction décrit correctement une erreur de compilation et un warning ?

L’erreur empêche généralement le fichier objet, tandis que le warning permet de terminer avec un signalement
L’erreur apparaît après l’exécution, tandis que le warning concerne la syntaxe du programme
L’erreur est une suggestion facultative, tandis que le warning bloque généralement la compilation
L’erreur produit un exécutable incorrect, tandis que le warning empêche la création du fichier objet

L’erreur empêche généralement le fichier objet, tandis que le warning permet de terminer avec un signalement

Explication

Une erreur de compilation empêche généralement la production du fichier objet, alors qu’un warning permet à la compilation de se terminer tout en signalant une correction nécessaire. Un warning ne constitue donc pas, dans ce contexte, un blocage de la compilation.

10. Quelle démarche suit-on pour déboguer progressivement un programme qui comporte plusieurs erreurs visibles ?

Ignorer les premières erreurs, puis corriger celle qui apparaît pendant l’exécution
Corriger la première erreur, puis relancer compilation, édition de liens et exécution
Modifier plusieurs lignes au hasard, puis relancer directement l’exécution
Réécrire le programme entier avant de vérifier la première erreur détectée

Corriger la première erreur, puis relancer compilation, édition de liens et exécution

Explication

Le débogage consiste à corriger la première erreur détectée, puis à recommencer la compilation, l’édition de liens et l’exécution jusqu’à faire disparaître les erreurs visibles. Les erreurs suivantes peuvent être des conséquences de la première et doivent être réévaluées après chaque correction.

11. Qu’est-ce qu’une variable en programmation ?

Un fichier intermédiaire créé pendant l’édition de liens
Un espace mémoire qui conserve une valeur pour un usage ultérieur
Une constante dont la valeur change lors de chaque compilation
Une instruction qui transforme automatiquement chaque valeur du programme

Un espace mémoire qui conserve une valeur pour un usage ultérieur

Explication

Une variable est un espace de la mémoire de l’ordinateur destiné à conserver une valeur pour un usage ultérieur. Elle se distingue d’une constante parce que sa valeur peut être modifiée après sa création.

12. Lors de la création d’une variable, quelle séquence décrit correctement les opérations à effectuer ?

Déclarer un nom avec un espace, puis laisser le compilateur choisir la valeur initiale
Choisir le type et le nom, initialiser avec une valeur adaptée, puis affecter si nécessaire
Choisir une valeur, exécuter le programme, puis déterminer le type et le nom
Choisir le type, lancer l’exécution, puis créer la variable après sa première utilisation

Choisir le type et le nom, initialiser avec une valeur adaptée, puis affecter si nécessaire

Explication

La création d’une variable demande de choisir son type et un nom valide, puis de lui attribuer une première valeur du bon type; sa valeur peut ensuite être modifiée par affectation. L’initialisation correspond à cette première valeur, tandis qu’une affectation ultérieure remplace une valeur existante.

13. Une variable entière contient la valeur 55. Quel est son contenu après l’instruction `x += 3` ?

33, car la valeur de droite remplace le contenu existant
1515, car l’opérateur multiplie les deux valeurs
55, car l’opérateur ne modifie pas une variable entière
88, car la valeur de droite est ajoutée au contenu existant

$$8$$, car la valeur de droite est ajoutée au contenu existant

Explication

L’opérateur `+=` ajoute la valeur située à droite à celle qui se trouve déjà dans la variable, donc 5+3=85+3=8. À l’inverse, l’opérateur `=` remplacerait le contenu de la variable par 33.

14. Quelle affirmation décrit correctement les constantes déclarées avec `const` en C++ ?

Elles reçoivent une valeur initiale facultative et peuvent être modifiées par affectation
Elles sont créées sans valeur et reçoivent leur contenu lors de la première lecture
Elles doivent être initialisées à leur création et leur valeur ne peut ensuite être modifiée
Elles doivent utiliser le type `string` et changent automatiquement pendant l’exécution

Elles doivent être initialisées à leur création et leur valeur ne peut ensuite être modifiée

Explication

Une constante `const` doit recevoir une valeur au moment de sa déclaration, puis cette valeur ne peut plus être modifiée. Une variable ordinaire peut, elle, être réaffectée après son initialisation.

15. Qu’est-ce qu’une expression en programmation ?

Une formule dont l’évaluation produit une valeur et un type
Une condition qui interrompt l’exécution d’une boucle
Une procédure qui regroupe plusieurs fonctions indépendantes
Une instruction qui réserve une zone mémoire pour une variable

Une formule dont l’évaluation produit une valeur et un type

Explication

Une expression combine des opérateurs et des opérandes, puis son évaluation fournit une valeur ainsi qu’un type. Une instruction de déclaration concerne la création ou la réservation d’une variable, et ne définit pas une expression.

16. Quelle opération réalise l’opérateur == dans une expression ?

Il compare deux valeurs et produit un résultat booléen
Il convertit une valeur entière en valeur décimale
Il affecte la valeur de droite à la variable de gauche
Il combine deux entiers par une opération bit à bit

Il compare deux valeurs et produit un résultat booléen

Explication

L’opérateur == teste l’égalité entre deux valeurs et renvoie un booléen. L’affectation d’une valeur à une variable est réalisée par l’opérateur =, ce qui constitue la confusion la plus courante.

17. Quel ensemble d’opérateurs s’applique à des valeurs booléennes plutôt qu’à des entiers bit à bit ?

&, |, ^ et ~
options
&&, ||, ^^, !, == et !=
<<, >>, + et -

&&, ||, ^^, !, == et !=

Explication

Les opérateurs &&, ||, ^^, !, == et != travaillent sur des valeurs booléennes. Les opérateurs &, |, ^ et ~ agissent bit à bit sur des entiers, tandis que les décalages et les opérateurs arithmétiques ont d’autres fonctions.

18. Comment les parenthèses influencent-elles l’évaluation d’une expression ?

Elles permettent de forcer ou de clarifier l’ordre d’évaluation
Elles remplacent les opérateurs ayant la priorité la plus élevée
Elles rendent prioritaire l’opérateur placé le plus à droite
Elles transforment automatiquement chaque opérande en valeur booléenne

Elles permettent de forcer ou de clarifier l’ordre d’évaluation

Explication

Les parenthèses imposent ou rendent explicite l’ordre dans lequel les opérations sont évaluées. Sans elles, les opérateurs placés plus haut dans la table des priorités sont traités avant ceux des lignes plus basses.

19. Quel flux standard est destiné à l’affichage normal, par opposition à la lecture et aux erreurs ?

cerr
ifstream
cout
cin

cout

Explication

cout représente le flux standard de sortie utilisé pour l’affichage normal. cin sert à l’entrée standard, cerr à la sortie standard d’erreur, et ifstream concerne la lecture dans un fichier.

20. Dans l’instruction cin >> valeur, que fait l’opérateur >> ?

Il lit une donnée depuis le flux d’entrée
Il ouvre un fichier destiné à la lecture
Il vérifie l’état d’échec du flux
Il écrit une donnée dans le flux de sortie

Il lit une donnée depuis le flux d’entrée

Explication

L’opérateur >> extrait une donnée d’un flux d’entrée tel que cin. L’opérateur << sert à écrire vers un flux de sortie comme cout, tandis que l’ouverture d’un fichier relève d’un flux de fichier.

21. Quel type de flux faut-il utiliser pour écrire des valeurs dans un fichier ?

ofstream
cerr
ifstream
cin

ofstream

Explication

Le type ofstream est conçu pour écrire des valeurs dans un fichier. Le type ifstream sert à lire depuis un fichier, alors que cin et cerr sont des flux standards associés à l’entrée et aux erreurs.

22. Que désigne la portée d’une variable ?

La valeur initiale attribuée à la variable lors de sa déclaration
La zone du programme où la variable peut être utilisée
La durée nécessaire pour calculer la valeur de la variable
Le type de données que la variable peut conserver en mémoire

La zone du programme où la variable peut être utilisée

Explication

La portée correspond à la région du programme dans laquelle le nom de la variable est utilisable. Elle ne décrit ni sa valeur initiale, ni son type, ni le temps requis pour son calcul.

23. Que se passe-t-il lorsqu’une variable locale porte le même nom qu’une variable extérieure ?

La variable locale masque la variable extérieure dans son bloc
La variable extérieure remplace la variable locale dans son bloc
Les deux variables sont automatiquement fusionnées en une seule
La variable locale est supprimée dès l’entrée dans son bloc

La variable locale masque la variable extérieure dans son bloc

Explication

Dans un bloc, la variable locale homonyme est la plus proche et masque donc la variable extérieure. Les deux variables ne sont pas fusionnées : la variable extérieure reste présente, mais son nom n’est plus directement sélectionné dans ce bloc.

Révisez avec les flashcards

Mémorisez les réponses avec 47 flashcards sur Initiation à la programmation C++.

Qui a associé le langage C à UNIX en 1973 ?

B. Kernighan et D. Ritchie.

Quel type de langage est le C++ conçu par B. Stroustrup ?

Un langage orienté objet dérivé du C.

Quelles sont les principales normes du C++ depuis 1998 ?

C++98, C++03, C++11, C++14, C++17, C++20 et C++23.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Initiation à la programmation C++.

Voir la fiche →

Cours similaires

Crée tes propres QCM

Importe ton cours et l'IA génère des QCM avec corrections en 30 secondes.

Générateur de QCM