Aller au contenu principal

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

  1. Créer et manipuler un tableau

    • Créez un tableau avec 5 nombres
    • Affichez tous les éléments
    • Calculez la somme
    • Trouvez le maximum
  2. 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
  3. Parcourir un tableau de dictionnaires

    • Créez un tableau contenant 3 dictionnaires (3 personnes avec nom, age)
    • Parcourez le tableau et affichez chaque personne
  4. 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
  5. 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

  1. Comment accède-t-on au premier élément d'un tableau ?

    • tableau[1]
    • tableau[0]
    • tableau[premier]
  2. 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
  3. Quand utiliser un dictionnaire plutôt qu'un tableau ?

    • Toujours
    • Quand on a des données avec des propriétés nommées
    • Jamais
  4. Peut-on mettre un dictionnaire dans un tableau ?

    • Oui
    • Non
    • Seulement dans certains langages
  5. 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 :

  1. Initialiser la bibliothèque

    • Créer au moins 5 livres avec leurs informations
    • Certains disponibles, d'autres non
  2. Afficher tous les livres

    • Parcourir la bibliothèque
    • Afficher les informations de chaque livre
  3. Rechercher un livre par titre

    • Demander un titre à l'utilisateur
    • Chercher dans la bibliothèque
    • Afficher les informations si trouvé
  4. Lister les livres disponibles

    • Parcourir la bibliothèque
    • Afficher seulement les livres où disponible == true
  5. Emprunter un livre

    • Demander un titre
    • Chercher le livre
    • Si trouvé et disponible, changer disponible à false
    • Afficher un message de confirmation ou d'erreur
  6. 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.