QCM : Maîtrise des fonctions et paradigmes de programmation — 16 questions

Questions et réponses du QCM

1. Dans quel cas une déclaration de fonction est-elle nécessaire avant l’appel ?

Lorsque la définition n’a pas encore été vue par le compilateur
Lorsque la fonction est appelée depuis main uniquement
Lorsque la fonction est définie dans une librairie standard
Lorsque la fonction renvoie un type void

Lorsque la définition n’a pas encore été vue par le compilateur

Explication

La déclaration permet au compilateur de connaître le profil de la fonction avant sa définition. Si la définition précède déjà l’utilisation dans le fichier, la déclaration n’est pas nécessaire pour ce cas précis.

2. Quel est le rôle principal de la déclaration d’une fonction ?

Remplacer l’appel de fonction par une valeur constante
Indiquer le type de retour, le nom et le profil des arguments
Fournir le code exécuté par la fonction
Créer automatiquement une copie des paramètres

Indiquer le type de retour, le nom et le profil des arguments

Explication

La déclaration informe le compilateur sur le type de retour, le nom et les arguments attendus, ce qui permet les vérifications à la compilation. Le code effectif appartient à la définition, pas à la déclaration.

3. Quelle différence essentielle distingue une fonction d’une procédure ?

Une fonction renvoie une valeur, une procédure est de type void
Une fonction ne peut pas être déclarée avant son appel
Une fonction ne peut jamais avoir de paramètres
Une procédure doit obligatoirement être générique

Une fonction renvoie une valeur, une procédure est de type void

Explication

Une fonction produit une valeur de retour, tandis qu’une procédure n’en retourne pas et est généralement déclarée avec void. Les autres propositions ne correspondent pas à la distinction donnée.

4. Que désigne un paramètre effectif lors d’un appel de fonction ?

Le nom utilisé dans la définition de la fonction
Le type de retour de la fonction
La variable globale visible dans tout le programme
L’expression fournie au moment de l’appel

L’expression fournie au moment de l’appel

Explication

Les paramètres effectifs sont les expressions passées lors de l’appel. Ils sont ensuite recopiés vers les paramètres formels dans le cas d’un passage par copie.

5. Quel effet a un passage de paramètres par copie sur la variable de l’appelant ?

La variable de l’appelant est supprimée après l’appel
La variable de l’appelant est modifiée directement
La variable de l’appelant devient const
La variable de l’appelant reste inchangée

La variable de l’appelant reste inchangée

Explication

Avec la copie, la fonction travaille sur des valeurs dupliquées, donc une modification interne n’affecte pas la variable d’origine. C’est justement l’inverse du passage par référence.

6. Que garantit l’utilisation de const sur une référence passée à une fonction ?

La fonction peut modifier la variable originale sans copie
La fonction ne peut pas modifier l’argument référencé
La fonction reçoit une valeur temporaire modifiable
La fonction doit retourner une valeur

La fonction ne peut pas modifier l’argument référencé

Explication

Un paramètre passé par référence avec const devient en lecture seule dans la fonction. Toute affectation provoque alors une erreur à la compilation.

7. Où les valeurs par défaut des paramètres doivent-elles être précisées ?

Uniquement dans la définition de la fonction
Dans le corps de la fonction après return
Dans l’appel de fonction
Uniquement dans la déclaration de la fonction

Uniquement dans la déclaration de la fonction

Explication

Les arguments par défaut sont spécifiés au niveau de la déclaration uniquement. Cela permet de rendre certains paramètres optionnels à l’appel.

8. Sur quel critère le compilateur choisit-il entre plusieurs fonctions surchargées ?

La valeur de retour uniquement
L’ordre d’écriture des fonctions dans le programme
La signature, c’est-à-dire les types et le nombre d’arguments
Le nom du fichier source où elles sont définies

La signature, c’est-à-dire les types et le nombre d’arguments

Explication

La surcharge est résolue à partir de la signature, donc des types et du nombre d’arguments. Des conversions implicites peuvent parfois rendre le choix moins intuitif.

9. À quel moment une fonction générique est-elle concrètement créée par le compilateur ?

Lors de l’instanciation à la compilation
Après la fin de la compilation complète du programme
À l’exécution du programme
Seulement lors de l’inclusion d’un en-tête

Lors de l’instanciation à la compilation

Explication

Une fonction générique est générée à la compilation à partir du patron et des types utilisés. Elle n’est pas créée à l’exécution.

10. Pour surcharger un opérateur, que faut-il respecter en priorité ?

Définir l’opérateur dans main
Préserver la forme de l’opérateur, unitaire ou binaire
Utiliser uniquement des types primitifs
Changer librement le nombre d’opérandes

Préserver la forme de l’opérateur, unitaire ou binaire

Explication

La surcharge d’un opérateur doit respecter sa signature générale, par exemple unitaire ou binaire. On définit ainsi le comportement de l’opérateur pour un type utilisateur sans en changer la forme.

11. Quel est le rôle principal d’un fichier d’en-tête dans l’organisation d’une bibliothèque ou d’un type ?

Contenir uniquement le code exécuté par les fonctions
Définir les variables locales utilisées dans main
Remplacer automatiquement le fichier source lors de la compilation
Regrouper les déclarations publiques nécessaires à son utilisation

Regrouper les déclarations publiques nécessaires à son utilisation

Explication

Un fichier d’en-tête rassemble les déclarations publiques : types, constantes et fonctions accessibles aux autres fichiers. Le code effectif, lui, reste dans les fichiers source.

12. Dans un Makefile, comment sont généralement écrites les commandes associées à une règle de compilation ?

Elles sont placées entre accolades
Elles commencent par une tabulation
Elles commencent par un point-virgule
Elles doivent être écrites sur la même ligne que la cible

Elles commencent par une tabulation

Explication

Dans un Makefile, les commandes d’une règle doivent commencer par une tabulation. C’est une contrainte syntaxique classique, contrairement à l’idée d’un point-virgule ou d’accolades.

13. Dans une programmation procédurale, comment le problème est-il principalement organisé ?

En fonctionnalités structurées par fonctions selon un ordre descendant
En une suite d’instructions sans décomposition fonctionnelle
En entités indépendantes reliées par héritage
En objets dotés d’un état et de méthodes

En fonctionnalités structurées par fonctions selon un ordre descendant

Explication

La programmation procédurale décompose le problème en fonctionnalités organisées par fonctions, avec une structure descendante. L’approche par objets relève plutôt de la programmation objet.

14. Quelle affirmation décrit le mieux la programmation modulaire ?

Elle découpe le problème en sous-problèmes indépendants sous forme de modules
Elle repose d’abord sur des classes et sur l’héritage
Elle interdit toute interface publique entre les parties du programme
Elle impose une suite d’instructions exécutées pas à pas sans séparation

Elle découpe le problème en sous-problèmes indépendants sous forme de modules

Explication

La programmation modulaire vise à séparer le système en modules indépendants, chacun exposant une interface et cachant son implémentation. Elle ne se réduit pas à une simple exécution pas à pas.

15. En quoi le concept objet prolonge-t-il l’idée de module ?

En remplaçant l’interface par une suite d’instructions
En imposant que chaque objet soit défini uniquement dans le programme principal
En supprimant toute notion de type au profit de simples procédures
En introduisant un objet qui est à la fois une entité du monde réel et un type réutilisable

En introduisant un objet qui est à la fois une entité du monde réel et un type réutilisable

Explication

Le concept objet fait évoluer le module en lui donnant la nature d’un type réutilisable, et pas seulement d’une entité syntaxique. C’est ce qui renforce la réutilisabilité et l’extensibilité.

16. Quelle propriété signifie qu’un logiciel peut être exploité facilement par de nouvelles applications ?

La réutilisabilité
L’indépendance d’appel
La validité
L’extensibilité

La réutilisabilité

Explication

La réutilisabilité désigne la capacité d’un logiciel à être utilisé par de nouvelles applications. L’extensibilité concerne plutôt l’ajout de nouvelles spécifications.

Révisez avec les flashcards

Mémorisez les réponses avec 16 flashcards sur Maîtrise des fonctions et paradigmes de programmation.

Déclaration de fonction — rôle ?

Indique le type, nom et arguments pour la compilation

Définition de fonction — contenu ?

Contient le code effectif de la fonction

Appel de fonction — action ?

Exécute la fonction avec paramètres donnés

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Maîtrise des fonctions et paradigmes de programmation.

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