QCM : Programmation C++ sur Arduino — 30 questions

Questions et réponses du QCM

1. Quelle opération caractérise le fonctionnement d’un langage compilé ?

Le code source est transformé en binaire avant son exécution
Le programme est exécuté directement par l’éditeur sans transformation
Les données d’entrée sont converties en texte avant chaque instruction
Le code source est traduit par un interpréteur pendant son exécution

Le code source est transformé en binaire avant son exécution

Explication

Un langage compilé produit d’abord un code binaire au moyen d’un compilateur, que le système d’exploitation peut ensuite exécuter. L’exécution par un interpréteur correspond plutôt au fonctionnement d’un langage interprété.

2. Sur une machine dépourvue de l’outil nécessaire, quelle contrainte concerne un programme écrit dans un langage interprété ?

Un interpréteur doit être présent pour exécuter le code source
Le système d’exploitation exécute le code source sans logiciel intermédiaire
Un compilateur transforme le programme avant chaque lancement
Un fichier binaire autonome suffit pour lancer directement le programme

Un interpréteur doit être présent pour exécuter le code source

Explication

Un langage interprété s’appuie sur un interpréteur qui traite le code source lors de l’exécution. Un exécutable compilé peut, lui, être lancé directement par le système d’exploitation après compilation.

3. Quel est le rôle principal de l’IDE Arduino dans un projet utilisant un microcontrôleur compatible ?

Remplacer les composants électroniques par des modules logiciels
Écrire, compiler et téléverser le programme
Exécuter le programme à la place du microcontrôleur
Mesurer la tension et alimenter directement le circuit

Écrire, compiler et téléverser le programme

Explication

L’IDE Arduino fournit l’environnement nécessaire pour écrire le code, le compiler et le téléverser vers le microcontrôleur. Après ce transfert, c’est le microcontrôleur qui exécute le programme.

4. Quelle association décrit correctement deux éléments de l’interface de l’IDE Arduino ?

La barre d’outils rédige le sketch et l’éditeur affiche les erreurs
La zone de messages compile le sketch et la barre d’outils l’exécute
L’éditeur téléverse le sketch et la zone de messages alimente la carte
L’éditeur rédige le sketch et la zone de messages affiche erreurs et résultats

L’éditeur rédige le sketch et la zone de messages affiche erreurs et résultats

Explication

L’éditeur de texte sert à rédiger le sketch, tandis que la zone de messages présente notamment les résultats et les erreurs. La barre d’outils constitue un autre élément de l’interface, mais elle n’a pas ces deux fonctions.

5. Lorsqu’un nouveau sketch Arduino démarre, comment s’enchaînent setup() et loop() ?

Les deux fonctions se répètent ensemble après chaque téléversement
Les deux fonctions s’exécutent une fois dans un ordre quelconque
setup() se répète en boucle, puis loop() s’exécute une fois
setup() s’exécute une fois, puis loop() se répète en boucle

setup() s’exécute une fois, puis loop() se répète en boucle

Explication

La fonction setup() initialise le programme une seule fois au démarrage du contrôleur, puis loop() est répétée. Confondre leurs rôles inverse le comportement prévu d’un sketch Arduino.

6. Lequel de ces ensembles correspond aux composants mentionnés dans le boîtier électronique ?

Un écran TFT couleur, huit LED, deux boutons et un moteur pas à pas
Un écran monochrome, deux LED, six boutons et un capteur infrarouge
Un écran TFT couleur, quatre LED, quatre boutons et un joystick
Un écran tactile, quatre LED, quatre boutons et une caméra

Un écran TFT couleur, quatre LED, quatre boutons et un joystick

Explication

Le boîtier comprend notamment un écran TFT couleur de 2,8 pouces, quatre LED, quatre boutons poussoirs et un joystick, ainsi que d’autres composants. Les autres ensembles modifient plusieurs éléments de cette composition.

7. Quelle caractéristique distingue l’ESP32 Dev Module de l’Arduino Mega 2560 Pro Mini présentés dans le boîtier ?

L’Arduino Mega possède une architecture double cœur 32 bits et 520 kB de SRAM
L’ESP32 possède une architecture double cœur 32 bits et 520 kB de SRAM
L’Arduino Mega fonctionne à 240 MHz avec 4 MB de mémoire Flash
L’ESP32 possède une architecture 8 bits et 8 kB de SRAM

L’ESP32 possède une architecture double cœur 32 bits et 520 kB de SRAM

Explication

L’ESP32 est décrit comme un microcontrôleur Xtensa LX6 double cœur 32 bits disposant de 520 kB de SRAM. L’Arduino Mega cité repose sur une architecture AVR 8 bits et dispose de 8 kB de SRAM.

8. Quelle propriété distingue une variable d’une constante en programmation ?

La variable conserve sa valeur, tandis que la constante peut être modifiée
La variable peut changer de valeur pendant l’exécution, contrairement à la constante
La variable est stockée dans le programme, tandis que la constante est calculée à l’exécution
La variable désigne un type, tandis que la constante désigne une instruction

La variable peut changer de valeur pendant l’exécution, contrairement à la constante

Explication

Une variable représente une zone mémoire dont la valeur peut évoluer pendant l’exécution. La constante, elle, conserve une valeur fixe, ce qui rend la deuxième proposition incorrecte.

9. Dans un programme, quelle donnée est une constante ?

Un identifiant utilisé pour désigner une instruction
Une donnée dont la valeur dépend d’une saisie utilisateur
Une donnée dont la valeur reste fixe pendant l’exécution
Une zone mémoire dont le contenu change à chaque calcul

Une donnée dont la valeur reste fixe pendant l’exécution

Explication

Une constante est définie par une valeur qui ne change pas pendant l’exécution du programme. Une donnée dépendant d’une saisie peut évoluer et correspond donc plutôt à une variable.

10. Que risque-t-il d’arriver lorsqu’une variable C est utilisée sans avoir été initialisée ?

Elle peut contenir une valeur imprévisible
Elle reçoit automatiquement la valeur zéro
Elle devient automatiquement une constante
Elle provoque toujours une conversion en chaîne

Elle peut contenir une valeur imprévisible

Explication

Une variable C non initialisée peut contenir une valeur imprévisible, car aucun contenu fiable ne lui a encore été attribué. Elle ne reçoit donc pas automatiquement zéro dans la règle considérée.

11. Quel identifiant peut être déclaré en C ?

2total
_total2
total-prix
int

_total2

Explication

Un identifiant C peut contenir des lettres, des chiffres et le souligné, à condition de commencer par une lettre ou un souligné et de ne pas être un mot réservé. « 2total » commence par un chiffre, tandis que « int » est un mot réservé.

12. Quel résultat produit l’expression C 7/27 / 2 lorsque ses deux opérandes sont entiers ?

Le quotient entier 33
Le reste entier 11
Le quotient réel 3,53{,}5
Une valeur booléenne indiquant l’égalité

Le quotient entier $$3$$

Explication

Avec deux opérandes entiers, la division est entière et tronque la partie décimale, ce qui donne 33. Le résultat 3,53{,}5 correspondrait à une division réelle, tandis que 11 est le reste obtenu avec le modulo.

13. Que calcule l’opérateur modulo % en C ?

Le reste d’une division entière entre deux opérandes entiers
La comparaison logique de deux expressions numériques
Le quotient décimal d’une division entre deux nombres réels
La conversion d’un caractère en valeur ASCII

Le reste d’une division entière entre deux opérandes entiers

Explication

Le modulo calcule le reste d’une division entière et requiert deux opérandes entiers. Il ne fournit donc ni le quotient décimal ni une comparaison logique.

14. Quelle affirmation compare correctement une chaîne C de type char[] et un objet String ?

La chaîne char[] ne possède pas de caractère terminal, tandis que String se termine par 0\\0
La chaîne char[] est plus simple à manipuler et consomme davantage de mémoire que String
La chaîne char[] se termine par 0\\0 et consomme moins de mémoire, tandis que String est plus simple à manipuler
La chaîne char[] et String ont la même gestion mémoire et les mêmes facilités de manipulation

La chaîne char[] se termine par $$\\0$$ et consomme moins de mémoire, tandis que String est plus simple à manipuler

Explication

Une chaîne C de type char[] se termine par le caractère nul 0\\0 et utilise moins de mémoire, alors qu’un objet String est plus pratique à manipuler mais plus coûteux en mémoire. L’absence de caractère terminal attribuée à char[] contredit son fonctionnement.

15. Quel est le rôle d’une alternative dans un programme ?

Attribuer une valeur à une variable sans examiner une condition
Exécuter des séquences différentes selon qu’un état vaut true ou false
Transformer automatiquement une valeur numérique en caractère
Répéter une même séquence jusqu’à ce qu’une variable soit déclarée

Exécuter des séquences différentes selon qu’un état vaut true ou false

Explication

Une alternative choisit une séquence d’instructions en fonction d’un état booléen, vrai ou faux. Une répétition relève d’une structure itérative et ne décrit pas le rôle d’une alternative.

16. Quelle opération réalise l’expression C x==5x == 5 ?

Elle vérifie si xx peut être utilisé comme identifiant
Elle compare xx à 55 et produit un résultat booléen
Elle additionne xx et 55 puis conserve le résultat
Elle affecte 55 à xx sans effectuer de comparaison

Elle compare $$x$$ à $$5$$ et produit un résultat booléen

Explication

L’opérateur ==== compare deux valeurs et produit un résultat booléen. L’affectation de 55 à xx utiliserait l’opérateur ==, ce qui constitue la confusion courante entre ces deux opérateurs.

17. Quelle condition est vraie lorsque aa et bb sont toutes deux vraies dans l’expression a \\&\\& b ?

L’expression est fausse, car l’opérateur ET inverse les deux conditions
L’expression est vraie, car l’opérateur ET exige deux conditions vraies
L’expression est vraie dès qu’une seule des deux conditions est vraie
L’expression affecte la valeur de bb à la variable aa

L’expression est vraie, car l’opérateur ET exige deux conditions vraies

Explication

L’opérateur logique \\&\\& correspond au ET et exige que les deux conditions soient vraies. Le fait qu’une seule condition suffise correspond au OU inclusif, noté ∣∣||.

18. Quelle caractéristique définit une variable locale en programmation ?

Elle est déclarée dans une fonction et accessible dans cette fonction
Elle est déclarée hors des fonctions et accessible dans le programme
Elle est déclarée dans une fonction et conservée entre ses appels
Elle est déclarée entre des accolades et accessible dans tout le programme

Elle est déclarée dans une fonction et accessible dans cette fonction

Explication

Une variable locale appartient à la fonction où elle est déclarée et sa portée s’y limite. Une variable globale, elle, est déclarée hors des fonctions et peut être accessible dans tout le programme.

19. Quelle affirmation décrit correctement une variable globale ?

Elle est déclarée dans une fonction et disparaît après son exécution
Elle est déclarée entre des accolades et limitée à ce bloc
Elle est déclarée dans une fonction et conservée entre ses appels
Elle est déclarée hors des fonctions et persiste pendant l’exécution

Elle est déclarée hors des fonctions et persiste pendant l’exécution

Explication

Une variable globale est déclarée en dehors des fonctions, reste accessible dans le programme et persiste pendant son exécution. Une variable locale est au contraire liée à la fonction qui la contient.

20. Une variable déclarée entre deux accolades peut-elle être utilisée après la fin de ce bloc ?

Oui, si elle est utilisée par une autre fonction du programme
Non, car une variable de bloc n’est jamais utilisable dans son bloc
Oui, car toute variable de bloc devient globale après sa déclaration
Non, sa portée reste limitée au bloc délimité par les accolades

Non, sa portée reste limitée au bloc délimité par les accolades

Explication

Une variable de bloc est accessible à l’intérieur du bloc formé par les accolades qui l’entourent. Elle ne devient pas globale et ne peut pas être utilisée après la fin de ce bloc.

21. Quelle différence essentielle distingue une boucle while d’une boucle do while ?

while teste sa condition après le bloc, tandis que do while la teste avant
while exécute son bloc au moins une fois, tandis que do while peut le sauter
while peut ne pas exécuter son bloc, tandis que do while l’exécute au moins une fois
while ne possède pas de condition, tandis que do while en possède une

while peut ne pas exécuter son bloc, tandis que do while l’exécute au moins une fois

Explication

La boucle while teste sa condition avant d’entrer dans le bloc, ce qui permet zéro exécution. La boucle do while teste la condition après le bloc et exécute donc celui-ci au moins une fois.

22. Dans quel ordre une boucle for organise-t-elle généralement ses éléments de contrôle ?

Initialisation, test de la condition, puis incrémentation après chaque itération
Test de la condition, incrémentation, puis initialisation après chaque itération
Initialisation, incrémentation, puis test de la condition avant chaque itération
Incrémentation, initialisation, puis exécution du bloc sans test de condition

Initialisation, test de la condition, puis incrémentation après chaque itération

Explication

Une boucle for regroupe une initialisation, une condition évaluée avant chaque itération et une incrémentation exécutée à la fin de chaque itération. L’incrémentation ne remplace donc pas le test de condition.

23. Quelle pratique réduit le risque de créer une boucle infinie ?

Déclarer la variable de test après la boucle et conserver sa valeur inchangée
Initialiser la variable de test, vérifier une condition claire et la mettre à jour
Exécuter le bloc plusieurs fois avant de définir la condition de sortie
Placer une condition complexe dans la boucle sans modifier la variable testée

Initialiser la variable de test, vérifier une condition claire et la mettre à jour

Explication

Une boucle contrôlée doit disposer d’une variable de test initialisée, d’une condition claire et d’une mise à jour permettant de progresser vers la sortie. Une variable jamais modifiée peut maintenir la condition vraie indéfiniment.

24. Pourquoi une boucle do while exécute-t-elle son bloc au moins une fois ?

Parce que son bloc est exécuté avant même que la boucle soit déclarée
Parce que sa condition est évaluée avant le bloc et devient vraie automatiquement
Parce qu’elle ignore la condition lors de toutes les itérations suivantes
Parce que sa condition est évaluée après la première exécution du bloc

Parce que sa condition est évaluée après la première exécution du bloc

Explication

La boucle do while place le test à la fin du bloc, après sa première exécution. Une boucle while effectue le test avant le bloc et peut donc ne rien exécuter.

25. Quel est le rôle principal d’une fonction dans un programme ?

Déclarer une variable accessible pendant toute l’exécution du programme
Répéter automatiquement un bloc jusqu’à ce qu’une condition devienne fausse
Regrouper des instructions sous un nom pour favoriser réutilisation et maintenance
Stocker plusieurs valeurs de même type sous des indices numériques

Regrouper des instructions sous un nom pour favoriser réutilisation et maintenance

Explication

Une fonction regroupe un bloc d’instructions sous un nom, ce qui améliore la réutilisation, la lisibilité et la maintenance. Le stockage de plusieurs valeurs indexées correspond plutôt au rôle d’un tableau.

26. Quel type de retour convient à une fonction qui renvoie un entier avec return ?

Aucun type de retour, car une fonction ne peut pas renvoyer une valeur
Un type incompatible avec l’entier, puisque return convertit toujours la valeur
Le type void, car toute fonction utilisant return ne renvoie rien
Un type compatible avec une valeur entière renvoyée par return

Un type compatible avec une valeur entière renvoyée par return

Explication

Le type de retour doit correspondre à la valeur fournie par l’instruction return, ici une valeur entière. Le type void est réservé aux fonctions qui ne renvoient aucune valeur.

27. Quelle structure permet de stocker plusieurs valeurs du même type en les repérant par des indices ?

Un tableau, dont chaque élément est identifié par un indice
Une fonction, dont chaque instruction est identifiée par un indice
Une variable globale, qui associe automatiquement chaque valeur à un indice
Une variable simple, qui contient plusieurs valeurs indépendantes

Un tableau, dont chaque élément est identifié par un indice

Explication

Un tableau rassemble en mémoire plusieurs valeurs de même type et permet d’accéder à chacune grâce à un indice. Une variable simple ne stocke pas plusieurs éléments indexés.

28. Quels indices permettent d’accéder aux cinq éléments d’un tableau Arduino ?

Les indices de 1 à 5
Les indices de 1 à 4
Les indices de 0 à 4
Les indices de 0 à 5

Les indices de 0 à 4

Explication

Les tableaux Arduino commencent à l’indice 0, donc cinq éléments occupent les indices 0, 1, 2, 3 et 4. L’indice 5 dépasserait la dernière position de ce tableau.

29. Quelle distinction caractérise le mieux le Clean Code ?

Il privilégie un code compilable, même si sa structure reste difficile à comprendre pour les lecteurs.
Il privilégie la réduction du nombre de fichiers, même si le code devient plus difficile à faire évoluer.
Il privilégie une exécution rapide, même si les noms et l’organisation du code sont peu explicites.
Il privilégie un code clair, lisible et maintenable par les humains comme par le compilateur.

Il privilégie un code clair, lisible et maintenable par les humains comme par le compilateur.

Explication

Le Clean Code cherche à rendre le code clair, lisible et facile à maintenir pour les humains comme pour le compilateur. Un programme qui compile peut néanmoins rester difficile à lire, ce qui ne suffit pas à en faire du code propre.

30. Quelle pratique applique le principe du lieu de modification unique lors d’une évolution du programme ?

Rassembler plusieurs traitements différents dans une longue fonction afin de réduire le nombre de déclarations.
Multiplier les variantes d’une fonction pour adapter chaque appel à un contexte particulier du programme.
Remplacer les valeurs répétées par des constantes symboliques et regrouper les traitements dans des fonctions réutilisables.
Copier le même traitement dans chaque emplacement afin de conserver une logique locale facilement visible.

Remplacer les valeurs répétées par des constantes symboliques et regrouper les traitements dans des fonctions réutilisables.

Explication

Le lieu de modification unique vise à réduire le nombre de lignes à changer, notamment grâce aux constantes symboliques et aux fonctions réutilisables. Le copier-coller produit au contraire plusieurs occurrences qu’il faut modifier séparément lors d’une évolution.

Révisez avec les flashcards

Mémorisez les réponses avec 60 flashcards sur Programmation C++ sur Arduino.

Comment un langage compilé exécute-t-il un programme ?

Le code source est transformé en code binaire puis exécuté directement par le système d'exploitation.

Comment un langage interprété exécute-t-il un programme ?

Un interpréteur exécute le code source en temps réel à chaque exécution.

Quels langages sont cités comme compilés ?

Le C, le C++ et le Pascal.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Programmation C++ sur Arduino.

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