QCM : Introduction aux fonctions en programmation C — 14 questions

Questions et réponses du QCM

1. Quel est le principe central de la programmation modulaire ?

Limiter le programme à des instructions conditionnelles
Remplacer les fonctions par des variables globales
Découper un problème complexe en modules simples traités séparément
Rédiger tout le programme dans une seule fonction principale

Découper un problème complexe en modules simples traités séparément

Explication

La programmation modulaire consiste à décomposer un problème complexe en sous-parties plus simples, traitées séparément. Cela facilite la compréhension, la réutilisation et la maintenance du programme.

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

Une fonction est obligatoirement récursive, contrairement à une procédure
Une fonction renvoie une valeur, alors qu’une procédure n’en renvoie pas
Une fonction ne prend jamais de paramètres, contrairement à une procédure
Une procédure doit toujours contenir une boucle, contrairement à une fonction

Une fonction renvoie une valeur, alors qu’une procédure n’en renvoie pas

Explication

Une fonction retourne une valeur et peut être utilisée dans une expression, tandis qu’une procédure exécute une action sans renvoyer de valeur. En C, une procédure a généralement le type void.

3. À quoi sert un prototype de fonction ?

À annoncer l’interface d’une fonction avant son utilisation
À remplacer le corps de la fonction par une déclaration vide
À empêcher toute vérification des types par le compilateur
À exécuter automatiquement la fonction dès la compilation

À annoncer l’interface d’une fonction avant son utilisation

Explication

Un prototype permet au compilateur de connaître le nom, les types de retour et de paramètres d’une fonction avant son appel. Cela facilite la vérification des types et l’organisation du code.

4. Quelle forme correspond à une procédure en C ?

void nom_procédure() { return une_valeur; }
nom_procédure(liste_des_paramètres) = void { return; }
int nom_procédure(liste_des_paramètres) { return une_valeur; }
void nom_procédure(liste_des_paramètres) { corps sans valeur renvoyée }

void nom_procédure(liste_des_paramètres) { corps sans valeur renvoyée }

Explication

Une procédure utilise void, possède un nom et une liste de paramètres, puis exécute un corps sans renvoyer de valeur. Une fonction non void, au contraire, doit retourner une valeur.

5. Que signifie le passage par valeur lorsqu’une fonction reçoit un argument ?

La fonction reçoit un pointeur obligatoirement
La fonction reçoit une copie de l’argument
La fonction modifie toujours la variable d’origine
La fonction reçoit directement l’adresse de l’argument

La fonction reçoit une copie de l’argument

Explication

Le passage par valeur transmet une copie des arguments, donc les modifications dans la fonction n’affectent pas les variables originales. En C, c’est le mode de passage par défaut.

6. Quel effet a le passage par adresse sur une variable passée à une fonction ?

Il permet à la fonction de modifier directement la variable originale
Il transforme la variable en constante pendant l’appel
Il transmet seulement une copie temporaire de la variable
Il empêche tout accès à la valeur de la variable

Il permet à la fonction de modifier directement la variable originale

Explication

Le passage par adresse transmet l’adresse de la variable, ce qui permet d’agir directement sur l’original via un pointeur. C’est utile pour modifier des données dans la fonction appelante.

7. Quelle instruction caractérise une fonction itérative ?

Elle renvoie toujours une adresse mémoire
Elle utilise uniquement un prototype
Elle répète un traitement à l’aide d’une boucle
Elle s’appelle elle-même sans condition d’arrêt

Elle répète un traitement à l’aide d’une boucle

Explication

Une fonction itérative repose sur une boucle comme for, while ou do while pour répéter un traitement. Elle n’utilise pas d’appel à elle-même comme une fonction récursive.

8. Comment se déroule une boucle do while ?

Elle exécute d’abord le corps puis teste la condition
Elle remplace obligatoirement une fonction récursive
Elle teste la condition avant toute exécution du corps
Elle ne peut s’exécuter qu’une seule fois

Elle exécute d’abord le corps puis teste la condition

Explication

Dans une boucle do while, le corps est exécuté au moins une fois, puis la condition est testée pour décider de continuer. C’est ce qui la distingue d’une boucle while.

9. Quel élément est indispensable pour qu’une fonction récursive s’arrête correctement ?

Un prototype de procédure
Un pointeur sur fonction
Une variable globale
Un cas de base

Un cas de base

Explication

Le cas de base est la condition d’arrêt qui évite une récursion infinie. Sans lui, la fonction continue à s’appeler elle-même sans fin.

10. Quelle forme correspond à la factorielle récursive ?

Appeler la fonction avec n + 1 jusqu’à atteindre 0
Si n vaut 0, renvoyer 1, sinon renvoyer n multiplié par la factorielle de n-1
Renvoyer toujours n + 1 pour chaque appel
Initialiser le résultat à 1 puis multiplier de 1 à n dans une boucle

Si n vaut 0, renvoyer 1, sinon renvoyer n multiplié par la factorielle de n-1

Explication

La factorielle récursive repose sur un cas de base à 0, où le résultat vaut 1, puis sur la réduction n vers n-1. L’option avec une boucle décrit au contraire une version itérative.

11. Que représente l’écriture « type_retour (*nom_pointeur)(types des paramètres) » en C ?

Un tableau de fonctions
Un prototype de variable entière
Un pointeur sur fonction
Une procédure sans paramètre

Un pointeur sur fonction

Explication

Cette écriture décrit un pointeur sur fonction, c’est-à-dire une variable capable de référencer une fonction pour l’appeler indirectement. Ce n’est ni un prototype de variable ni un tableau de fonctions.

12. Dans une procédure d’échange utilisant des pointeurs, quelle suite d’affectations réalise correctement la permutation des deux valeurs pointées ?

temp = *a ; *b = *a ; *a = temp
temp = *a ; *a = *b ; *b = temp
temp = &a ; *a = *b ; *b = temp
temp = a ; a = b ; b = temp

temp = *a ; *a = *b ; *b = temp

Explication

La permutation correcte lit d’abord la valeur pointée par a dans temp, puis copie la valeur pointée par b vers *a, avant de remettre temp dans *b. Les autres propositions confondent adresse et valeur ou écrasent une des deux valeurs avant de la conserver.

13. Dans quel cas privilégie-t-on plutôt une solution itérative qu’une solution récursive ?

Lors d’un parcours séquentiel de tableau
Lors du parcours d’un arbre
Lors d’un calcul de factorielle
Lors d’un problème qui se redéfinit en sous-problèmes

Lors d’un parcours séquentiel de tableau

Explication

L’itératif est particulièrement adapté aux traitements répétitifs sur une suite simple, comme un parcours de tableau. La factorielle, le parcours d’arbre et les problèmes en sous-problèmes sont au contraire des cas typiques de récursivité.

14. Pourquoi l’approche récursive est-elle souvent bien adaptée aux structures arborescentes ?

Parce qu’elle évite toute condition d’arrêt
Parce qu’elle remplace automatiquement les boucles for
Parce qu’elle ne consomme jamais de mémoire supplémentaire
Parce que chaque nœud peut être vu comme la racine d’un sous-arbre

Parce que chaque nœud peut être vu comme la racine d’un sous-arbre

Explication

Une structure arborescente se prête naturellement à la récursivité, car chaque nœud peut être traité comme la racine d’un sous-arbre. Une récursion correcte exige au contraire un cas de base, et elle ne supprime pas la mémoire utilisée par les appels imbriqués.

Révisez avec les flashcards

Mémorisez les réponses avec 14 flashcards sur Introduction aux fonctions en programmation C.

Programmation modulaire — définition ?

Découpage d’un problème en modules séparés

Fonction — rôle ?

Effectuer un traitement réutilisable

Procédure — rôle ?

Exécuter une action sans valeur de retour

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Introduction aux fonctions en 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