Passer au contenu

B.4 · Types de données abstraits (HL uniquement)

Baccalauréat international · IB Diploma · Computer Science · HL · Sujet 8

8.1

Champ d'application et prérequis

Focus HL soutenu. Première évaluation 2027 cible ; retours PDF officiels 403 ; le bref acquis plus ancien est l'évaluation finale 2026. Le guide restant, l'évaluation et les exigences pratiques conservent leurs retenues enregistrées.

Prérequis : lisez les quantités et unités indiquées, utilisez l'arithmétique et les conditions du modèle ci-dessous. Chaque leçon développe sa propre méthode avant un transfert autonome.

Ce sont des exemples pédagogiques originaux ou explicitement fictifs, pas des mesures réelles ni des enquêtes évaluées achevées par des apprenants.

8.2

Types de données abstraits : un contrat d'opération

Qu'est-ce qui expliquerait cette observation ?

  • Une simulation de file d'attente nécessite le traitement du plus ancien élément en attente en premier. Une pile (stack) donne l'élément le plus récent en premier, c'est pourquoi la spécification des opérations est cruciale.
  • Commencez par une prédiction. Énoncez les quantités ou caractéristiques que vous compareriez, puis décidez quels éléments de preuve pourraient distinguer deux explications.

Construire le modèle

  • Un type de données abstrait (TDA) définit les valeurs et les opérations indépendamment d'une implémentation particulière. Une pile est « dernier entré, premier sorti » ; une file (queue) est « premier entré, premier sorti ». Une interface de collection doit définir un comportement explicite pour les cas vides et les opérations invalides.
  • pile : Type de données abstrait dernier entré, premier sorti (LIFO) ; file d'attente : Type de données abstrait premier entré, premier sorti (FIFO).
Types de données abstraites : une spécification des opérations : diagramme d'exemple résolu original

Choisir des preuves capables de le tester

  • Choisissez la structure adaptée au mode d'accès requis. La complexité dépend de l'implémentation et des hypothèses : retirer le premier élément d'un tableau décalé diffère de l'avancement d'un pointeur de tête dans une file.
  • Tracez manuellement les séquences d'opérations, puis comparez avec les états attendus par le programme. Testez les cas vides, à un seul élément et les opérations répétées. Décrivez le comportement en cas de débordement si la capacité est fixe.

Travailler à partir de quantités connues

  • Énoncez les valeurs connues et leurs unités. Choisissez la relation dont les hypothèses s'adaptent à ce cas, puis réarrangez-la avant de substituer les valeurs.
  • Connu : ajouter A, B et C en file, puis retirer deux éléments. A et B sont retirés ; C reste. Après avoir ajouté D, il y a deux éléments en attente : C puis D. Sur une pile, ces mêmes ajouts entraîneraient le retrait de C puis de B.

Exemple :

Une file d'attente commence vide, reçoit 7 éléments et en retire 4. Trouver le nombre restant. Utiliser la même séquence : quantités connues → modèle → relation → substitution → unité et interprétation.


Vérifier la conclusion et ses limites

  • Un TDA n'est pas une disposition mémoire spécifique. Une file ne trie pas par priorité à moins que sa spécification ne définisse explicitement une file à priorité.
  • Revenez à l'observation initiale. Expliquez ce que le résultat soutient, quelles conditions il suppose, et une manière de tester une explication concurrente.

Avertissement :

Chaque file d'attente trie automatiquement les éléments par priorité. Cette affirmation est fausse : Un TDA n'est pas une disposition mémoire spécifique. Une file d'attente ne trie pas par priorité sauf si son contrat définit une file à priorité.

Clé :

Types de données abstraites : une spécification des opérations : Choisissez la structure adaptée au mode d'accès requis. La complexité dépend de l'implémentation et des hypothèses : retirer le premier élément d'un tableau décalé diffère de l'avancement d'un pointeur de tête dans une file.

Trace exécutable et limite

from collections import deque
queue = deque()
queue.extend(["A", "B"])
print(queue.popleft())
queue.append("C")
print(queue.popleft())
print(list(queue))
queue.clear()
print(queue.popleft() if queue else "EMPTY")

Sortie attendue :

A
B
['C']
EMPTY

Supprimer à gauche implémente FIFO. La garde explicite pour la liste vide définit le résultat limite ; deque.popleft sans cela provoquerait un IndexError. Une pile retire au lieu de droite.

Vocabulaire Entrainer
English Français
stack/stæk/ stack : pile
queue/kjuː/ queue : file d'attente

Plus de sujets dans Baccalauréat international · IB Diploma · Computer Science · HL

Se connecter ou créer un compte

IGCSE, A-Level & AP