Module 2.4 – Structures de données
Objectif
Comprendre les structures de données fondamentales : tableaux/listes et dictionnaires/objets. Savoir quand utiliser chaque structure selon le besoin.
Théorie
Tableaux / Listes
Un tableau (ou liste) est une collection ordonnée d'éléments du même type ou de types différents, accessibles par leur position (index).
Analogie : Comme une rangée de boîtes numérotées, où chaque boîte contient un élément.
Caractéristiques :
- Ordre : Les éléments ont une position (premier, deuxième, etc.)
- Index : Chaque élément a un numéro (généralement commence à 0)
- Taille : Le nombre d'éléments peut varier
- Accès : Par position (index)
Création et utilisation
Pseudo-code :
// Créer un tableau
nombres ← [10, 20, 30, 40, 50]
// Accéder à un élément (index commence à 0)
premier ← nombres[0] // 10
deuxieme ← nombres[1] // 20
dernier ← nombres[4] // 50
// Modifier un élément
nombres[2] ← 25 // Le tableau devient [10, 20, 25, 40, 50]
// Ajouter un élément
AJOUTER 60 À nombres // [10, 20, 25, 40, 50, 60]
// Longueur du tableau
taille ← longueur(nombres) // 6
Parcourir un tableau
Avec boucle POUR :
nombres ← [10, 20, 30]
POUR i DE 0 À longueur(nombres) - 1 FAIRE
AFFICHER nombres[i]
FIN POUR
Résultat : 10, 20, 30
Cas d'utilisation
Quand utiliser un tableau :
- Liste d'éléments similaires (notes, prix, noms)
- Ordre important (classement, historique)
- Accès par position
- Opérations sur tous les éléments
Exemples :
- Liste de notes d'un étudiant
- Historique des commandes
- Classement des joueurs
- Inventaire de produits
Dictionnaires / Objets
Un dictionnaire (ou objet) est une collection de paires clé-valeur, où chaque valeur est associée à une clé unique.
Analogie : Comme un dictionnaire réel : on cherche un mot (clé) pour trouver sa définition (valeur).
Caractéristiques :
- Clés uniques : Chaque clé n'apparaît qu'une fois
- Accès par clé : On accède à une valeur via sa clé (pas par position)
- Pas d'ordre garanti : L'ordre peut varier
- Types variés : Les valeurs peuvent être de différents types
Création et utilisation
Pseudo-code :
// Créer un dictionnaire
utilisateur ← {
"nom" : "Dupont",
"prenom" : "Jean",
"age" : 28,
"email" : "jean@exemple.com"
}
// Accéder à une valeur
nom ← utilisateur["nom"] // "Dupont"
age ← utilisateur["age"] // 28
// Modifier une valeur
utilisateur["age"] ← 29
// Ajouter une nouvelle paire
utilisateur["ville"] ← "Paris"
// Vérifier si une clé existe
SI "email" DANS utilisateur ALORS
AFFICHER utilisateur["email"]
FIN SI
Parcourir un dictionnaire
utilisateur ← {"nom" : "Jean", "age" : 28, "ville" : "Paris"}
POUR CHAQUE clé, valeur DANS utilisateur FAIRE
AFFICHER clé + " : " + valeur
FIN POUR
Résultat :
- nom : Jean
- age : 28
- ville : Paris
Cas d'utilisation
Quand utiliser un dictionnaire :
- Données structurées avec des propriétés nommées
- Accès par nom (plus lisible que par index)
- Configuration, paramètres
- Représentation d'entités (utilisateur, produit, etc.)
Exemples :
- Informations d'un utilisateur
- Configuration d'une application
- Données d'un produit (nom, prix, stock)
- Paramètres d'une fonction
Quand utiliser quoi ?
Tableau vs Dictionnaire
Utiliser un tableau quand :
- Les éléments sont similaires et nombreux
- L'ordre est important
- On veut parcourir tous les éléments
- On accède par position
Exemple : Liste de notes
notes ← [15, 18, 12, 14, 16]
Utiliser un dictionnaire quand :
- Les données ont des propriétés nommées
- On veut accéder par nom (plus lisible)
- Les propriétés peuvent varier
- On représente une entité
Exemple : Informations d'un étudiant
etudiant ← {
"nom" : "Martin",
"notes" : [15, 18, 12],
"moyenne" : 15
}
Structures combinées
On peut combiner tableaux et dictionnaires.
Exemple : Liste d'étudiants
etudiants ← [
{"nom" : "Dupont", "age" : 20, "notes" : [15, 18]},
{"nom" : "Martin", "age" : 21, "notes" : [12, 14]},
{"nom" : "Bernard", "age" : 19, "notes" : [16, 17]}
]
// Accéder aux données
premier_etudiant ← etudiants[0]
nom_premier ← premier_etudiant["nom"] // "Dupont"
premiere_note ← premier_etudiant["notes"][0] // 15
Opérations courantes
Sur les tableaux
Rechercher un élément :
liste ← [5, 10, 15, 20]
valeur_recherchee ← 15
trouve ← false
i ← 0
TANT QUE i < longueur(liste) ET trouve == false FAIRE
SI liste[i] == valeur_recherchee ALORS
trouve ← true
position ← i
FIN SI
i ← i + 1
FIN TANT QUE
Trier un tableau :
nombres ← [30, 10, 50, 20]
TRIER nombres // Devient [10, 20, 30, 50]
Compter les éléments :
liste ← [1, 2, 2, 3, 2, 4]
compteur ← 0
POUR i DE 0 À longueur(liste) - 1 FAIRE
SI liste[i] == 2 ALORS
compteur ← compteur + 1
FIN SI
FIN POUR
AFFICHER "Nombre de 2 : " + compteur
Sur les dictionnaires
Vérifier l'existence d'une clé :
utilisateur ← {"nom" : "Jean", "age" : 28}
SI "email" DANS utilisateur ALORS
AFFICHER utilisateur["email"]
SINON
AFFICHER "Email non renseigné"
FIN SI
Obtenir toutes les clés :
utilisateur ← {"nom" : "Jean", "age" : 28, "ville" : "Paris"}
cles ← OBTENIR_CLES(utilisateur) // ["nom", "age", "ville"]
Exercice
-
Créer et manipuler un tableau
- Créez un tableau avec 5 nombres
- Affichez tous les éléments
- Calculez la somme
- Trouvez le maximum
-
Créer un dictionnaire
- Créez un dictionnaire pour représenter un livre avec : titre, auteur, année, prix
- Affichez toutes les informations
- Modifiez le prix
-
Parcourir un tableau de dictionnaires
- Créez un tableau contenant 3 dictionnaires (3 personnes avec nom, age)
- Parcourez le tableau et affichez chaque personne
-
Recherche dans un tableau
- Créez un algorithme qui cherche si un nombre existe dans un tableau
- Affichez la position si trouvé, "non trouvé" sinon
-
Combiner structures
- Créez une liste d'étudiants (dictionnaires)
- Chaque étudiant a : nom, notes (tableau), moyenne
- Calculez et affichez la moyenne de chaque étudiant
Quiz
-
Comment accède-t-on au premier élément d'un tableau ?
- tableau[1]
- tableau[0]
- tableau[premier]
-
Quelle est la différence principale entre tableau et dictionnaire ?
- Aucune différence
- Tableau : accès par position, Dictionnaire : accès par clé
- Tableau est plus rapide
-
Quand utiliser un dictionnaire plutôt qu'un tableau ?
- Toujours
- Quand on a des données avec des propriétés nommées
- Jamais
-
Peut-on mettre un dictionnaire dans un tableau ?
- Oui
- Non
- Seulement dans certains langages
-
Que retourne
longueur([10, 20, 30])?- 30
- 3
- 10
Mini défi
Mission : Créer un système de gestion de bibliothèque
Créez un algorithme complet en pseudo-code pour gérer une bibliothèque de livres :
Structure de données :
- Chaque livre est un dictionnaire avec : titre, auteur, annee, disponible (booléen)
- La bibliothèque est un tableau de livres
Fonctionnalités à implémenter :
-
Initialiser la bibliothèque
- Créer au moins 5 livres avec leurs informations
- Certains disponibles, d'autres non
-
Afficher tous les livres
- Parcourir la bibliothèque
- Afficher les informations de chaque livre
-
Rechercher un livre par titre
- Demander un titre à l'utilisateur
- Chercher dans la bibliothèque
- Afficher les informations si trouvé
-
Lister les livres disponibles
- Parcourir la bibliothèque
- Afficher seulement les livres où disponible == true
-
Emprunter un livre
- Demander un titre
- Chercher le livre
- Si trouvé et disponible, changer disponible à false
- Afficher un message de confirmation ou d'erreur
-
Retourner un livre
- Demander un titre
- Chercher le livre
- Si trouvé, changer disponible à true
Critères :
- ✅ Utiliser des tableaux et dictionnaires
- ✅ Utiliser des boucles pour parcourir
- ✅ Utiliser des conditions pour les vérifications
- ✅ Gérer les cas d'erreur (livre non trouvé, déjà emprunté, etc.)
- ✅ Code clair et bien structuré
Exemple d'exécution :
=== BIBLIOTHÈQUE ===
1. Afficher tous les livres
2. Rechercher un livre
3. Livres disponibles
4. Emprunter un livre
5. Retourner un livre
Choix : 1
Livres :
1. "1984" - George Orwell (1949) - Disponible
2. "Le Seigneur des Anneaux" - J.R.R. Tolkien (1954) - Emprunté
...
Objectif : Maîtriser les structures de données et savoir les utiliser dans des cas pratiques complexes.
Validation : Vous pouvez passer au module suivant quand vous maîtrisez les tableaux et dictionnaires et pouvez les utiliser pour résoudre des problèmes réels.