QCM : Introduction aux Types de Données Abstraits — 20 questions

Questions et réponses du QCM

1. Quelle affirmation décrit le mieux le rôle central d’un TDA dans le chapitre ?

Il désigne uniquement un tableau de valeurs homogènes
Il correspond à une variable qui ne prend qu’une seule valeur
Il décrit les opérations possibles sans imposer le stockage interne
Il impose la manière exacte de stocker les valeurs en mémoire

Il décrit les opérations possibles sans imposer le stockage interne

Explication

Un TDA est une spécification centrée sur ce qu’on peut faire avec le type, sans fixer sa représentation interne. La description du stockage relève plutôt d’une structure de données.

2. Comment un TD est-il caractérisé dans ce chapitre ?

Comme une liste d’opérations indépendantes de toute valeur
Comme un type concret dont les variables prennent des valeurs d’un domaine défini
Comme un mécanisme d’accès à un objet par adresse
Comme une spécification des actions autorisées sur un objet

Comme un type concret dont les variables prennent des valeurs d’un domaine défini

Explication

Un TD est présenté comme un type concret, associé à des valeurs issues d’un domaine défini. Cela le distingue d’un TDA, qui est une spécification d’opérations.

3. Quelle est l’ordre correct de la démarche de résolution d’un problème ?

Spécifier, comprendre, programmer, construire l’algorithme
Construire l’algorithme, comprendre, programmer, spécifier
Programmer, spécifier, comprendre, construire l’algorithme
Comprendre, spécifier, construire l’algorithme, programmer

Comprendre, spécifier, construire l’algorithme, programmer

Explication

La démarche suit l’enchaînement compréhension du problème, formalisation en spécification, mise en œuvre de l’algorithme, puis traduction en langage de programmation. La spécification sert de pont entre l’énoncé et l’algorithme.

4. Quel rôle joue la spécification dans la résolution d’un problème ?

Elle relie l’énoncé initial à la construction de l’algorithme
Elle décrit le stockage interne des données
Elle remplace directement le programme exécutable
Elle correspond à la phase finale de traduction du code

Elle relie l’énoncé initial à la construction de l’algorithme

Explication

La spécification formalise le problème de façon exploitable et sert d’intermédiaire entre l’énoncé et l’algorithme. Elle n’est pas encore le programme exécutable.

5. Quelle différence distingue le mieux un algorithme d’un programme ?

Le programme est une suite d’opérations abstraites, l’algorithme un fichier compilé
L’algorithme est toujours écrit en C, le programme non
L’algorithme est indépendant du langage, le programme est sa traduction dans un langage
Le programme décrit le traitement, l’algorithme décrit seulement les données

L’algorithme est indépendant du langage, le programme est sa traduction dans un langage

Explication

Un algorithme est une suite d’instructions abstraite, indépendante du langage, tandis qu’un programme est cet algorithme traduit dans un langage donné. Les autres propositions inversent ou mélangent les rôles.

6. Quelle formulation correspond à un algorithme ?

Une représentation du stockage interne des données
Un ensemble d’en-têtes de fonctions pour un type abstrait
Un fichier source écrit dans un langage précis
Une suite d’instructions exécutées dans un ordre séquentiel pour réaliser un traitement

Une suite d’instructions exécutées dans un ordre séquentiel pour réaliser un traitement

Explication

Un algorithme est défini comme une suite d’instructions ordonnées qui réalisent un traitement. Le programme est la version traduite dans un langage de programmation.

7. Quelle est la meilleure définition d’une description fonctionnelle d’un TDA ?

Une collection de variables concrètes et de leurs valeurs
Une description de l’organisation mémoire du type
Une liste d’axiomes qui donnent la signification des opérations
Une présentation des opérations avec leurs signatures et types d’entrée et de sortie

Une présentation des opérations avec leurs signatures et types d’entrée et de sortie

Explication

La description fonctionnelle précise les opérations d’un TDA par leurs signatures, avec les ensembles de départ et d’arrivée. La description axiomatique, elle, donne la sémantique.

8. Que fournit principalement une description axiomatique d’un TDA ?

La représentation mémoire exacte du type
Les fichiers d’en-tête nécessaires à l’implémentation
Les valeurs concrètes prises par les variables
La sémantique des opérations à l’aide d’axiomes

La sémantique des opérations à l’aide d’axiomes

Explication

La description axiomatique exprime la signification des opérations par des axiomes. Elle ne fixe pas le stockage ni les fichiers d’implémentation.

9. Dans une signature d’opération, que signifie généralement une forme du type {} → Booléen ?

Une opération qui modifie une structure de données en place
Une opération qui renvoie nécessairement un ensemble
Une opération réservée aux types composés uniquement
Une opération sans argument qui renvoie une valeur logique

Une opération sans argument qui renvoie une valeur logique

Explication

Une signature {} → Booléen indique une opération sans entrée qui produit un résultat logique, comme estVide. Le booléen sert ici à tester une propriété.

10. Quel est le rôle des axiomes de PEANO dans ce chapitre ?

Spécifier les tableaux comme structure dynamique
Exposer uniquement des signatures d’opérations sans sémantique
Définir la structure des entiers naturels et certaines opérations associées
Décrire la mémoire d’une pile en C

Définir la structure des entiers naturels et certaines opérations associées

Explication

Les axiomes de PEANO sont donnés comme un ensemble d’axiomes définissant les entiers naturels et leurs opérations. Ils relèvent de la description axiomatique, pas de la représentation mémoire.

11. Quelle affirmation caractérise un TD simple ?

Une variable y contient plusieurs champs de types différents
Il sert à organiser la mémoire d’une collection
Une variable n’y prend qu’une seule valeur à la fois
Il correspond à une opération logique sur un ensemble

Une variable n’y prend qu’une seule valeur à la fois

Explication

Un TD simple est primitif : chaque variable ne prend qu’une valeur à la fois dans son domaine. Le tableau et l’enregistrement relèvent au contraire des TD composés.

12. Quel exemple correspond à un TD composé ?

Un booléen
Une valeur logique unique
Un entier
Un tableau d’entiers

Un tableau d’entiers

Explication

Le tableau est cité comme TD composé, car il permet de stocker plusieurs valeurs sous un même nom. Le booléen et l’entier sont des TD simples.

13. Quelle idée exprime le mieux la création d’un type de données dans ce chapitre ?

Supprimer la distinction entre logique et exécution
Séparer une interface abstraite des implémentations concrètes possibles
Remplacer les opérations par des accès directs aux champs
Imposer une seule façon de stocker toutes les valeurs

Séparer une interface abstraite des implémentations concrètes possibles

Explication

La création d’un type s’appuie sur une interface abstraite reliée à des réalisations concrètes, avec une séparation nette entre niveau logique et implémentation. Cela permet plusieurs implémentations pour un même type.

14. Quel rôle l’utilisateur joue-t-il face à l’interface abstraite ?

Il doit manipuler les adresses mémoire internes
Il remplace l’interface par le stockage réel
Il accède directement à tous les champs de la structure
Il utilise le type sans connaître l’implémentation

Il utilise le type sans connaître l’implémentation

Explication

L’utilisateur interagit avec le type via l’interface abstraite, indépendamment de sa réalisation interne. L’implémentation reste cachée.

15. Que contient principalement l’interface en C d’un TDA ?

Les axiomes mathématiques du type
Les déclarations des types et des opérations offertes
Les résultats d’exécution du programme
Le corps complet de toutes les fonctions

Les déclarations des types et des opérations offertes

Explication

L’interface en C correspond aux déclarations, souvent dans un fichier d’en-tête, des types et opérations du TDA. Le code des fonctions se trouve dans l’implémentation.

16. Quelles opérations sont citées pour l’exemple de pile en C ?

Ajouter, enlever, unir et tester l’appartenance
Allouer, libérer, trier et afficher la pile
Initier, empiler, dépiler et détruire la pile
Convertir, comparer, concaténer et calculer

Initier, empiler, dépiler et détruire la pile

Explication

L’exemple de pile mentionne init_pile, push, pop et del_pile. Ces opérations constituent l’interface de manipulation de la pile.

17. Que signifie utiliser un TDA indépendamment de son implantation ?

N’appeler que ses opérations sans dépendre de la représentation interne
Accéder directement aux champs internes pour plus d’efficacité
Écrire le programme sans aucune interface
Modifier l’implémentation à chaque utilisation

N’appeler que ses opérations sans dépendre de la représentation interne

Explication

L’indépendance d’implantation consiste à manipuler le TDA uniquement via ses opérations et son interface. Le code utilisateur reste valide même si l’implantation change.

18. Pourquoi les en-têtes de fonctions sont-ils importants pour l’utilisation d’un TDA ?

Ils exposent toute la mémoire interne du type
Ils constituent le contrat entre l’utilisateur et le TDA
Ils remplacent la définition des opérations
Ils imposent un unique langage de programmation

Ils constituent le contrat entre l’utilisateur et le TDA

Explication

Les en-têtes définissent l’interface, donc le contrat d’utilisation du TDA. Ils permettent d’utiliser le type sans connaître le code interne.

19. Quelle caractéristique distingue une structure de données statique basée sur des tableaux ?

Elle utilise des pointeurs pour grandir librement
Elle libère automatiquement toute mémoire non utilisée
Elle évite toute réserve mémoire initiale
Elle fixe une taille maximale dès le départ

Elle fixe une taille maximale dès le départ

Explication

Les structures statiques basées sur des tableaux contigus imposent une taille maximale fixée à l’avance. Elles peuvent donc gaspiller de la mémoire si l’espace réservé est trop grand.

20. Pourquoi l’allocation dynamique est-elle proposée dans ce chapitre ?

Pour remplacer les structures de données par des signatures
Pour éviter toute utilisation de la mémoire centrale
Pour réserver une taille maximale fixe sans fragmentation
Pour obtenir et libérer de la mémoire au moment de l’exécution grâce aux pointeurs

Pour obtenir et libérer de la mémoire au moment de l’exécution grâce aux pointeurs

Explication

L’allocation dynamique permet de demander et de libérer de la mémoire pendant l’exécution via des pointeurs. Elle répond aux limites des tableaux statiques et aux problèmes de fragmentation.

Révisez avec les flashcards

Mémorisez les réponses avec 20 flashcards sur Introduction aux Types de Données Abstraits.

TDA — définition ?

Spécification d’un type de données sans implémentation.

TD — rôle ?

Représente un type de données concret avec valeurs.

SD — fonction ?

Implémente un TD en organisant le stockage mémoire.

Voir les flashcards →

Approfondir avec la fiche

Consultez la fiche de révision complète sur Introduction aux Types de Données Abstraits.

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