Module 2Formuler un traitement
Chapitre 6 sur 11
Structurer les données : tableaux et chaînes
Tableaux vecteurs et matrices, tris par sélection, à bulles et par insertion, chaînes de caractères.
- ≈ 145 min
- 5 leçons
- 2 vidéos
- 4 exercices
Module 2Formuler un traitement
Chapitre 6 sur 11
Tableaux vecteurs et matrices, tris par sélection, à bulles et par insertion, chaînes de caractères.
Objectifs
Avec ce chapitre, tu sauras…
Avec des variables simples, comment stocker les notes de 30 élèves ? Avec 30 variables note1, note2… ? Impossible à manipuler dans une boucle. Les tableaux résolvent ce problème : une seule variable, de nombreuses cases.
Leçon 1
Leçon 2
Const MAX = 30 : Entier
Type Vecteur = tableau [1..MAX] de Réel
Var notes : Vecteur
T : tableau [1..5] d'Entierindice : 1 2 3 4 5
┌────┬────┬────┬────┬────┐
T : │ 12 │ 32 │ 7 │ 15 │ 4 │ T[2] vaut 32
└────┴────┴────┴────┴────┘Les algorithmes de base sur un vecteur
Algorithme LectureAffichage
Const MAX = 100 : Entier
Var T : tableau [1..MAX] de Réel
n, i : Entier
Début
Répéter
Lire(n)
Jusqu'à (n >= 1) ET (n <= MAX)
Pour i de 1 à n faire
Lire(T[i])
FinPour
Pour i de 1 à n faire
Ecrire(T[i])
FinPour
Fins := 0
max := T[1]
Pour i de 1 à n faire
s := s + T[i]
Si T[i] > max alors
max := T[i]
FinSi
FinPour
Ecrire("Moyenne : ", s / n, " Maximum : ", max)trouve := Faux
i := 1
TantQue (i <= n) ET (NON trouve) faire
Si T[i] = v alors
trouve := Vrai
Sinon
i := i + 1
FinSi
FinTQ
Si trouve alors
Ecrire(v, " est à la position ", i)
Sinon
Ecrire(v, " n'est pas dans le tableau")
FinSiLeçon 3
Leçon 4
| Étape | Tableau | Explication |
|---|---|---|
| départ | 5 · 2 · 9 · 1 · 7 | |
| i = 1 | 1 · 2 · 9 · 5 · 7 | le minimum (1) est échangé avec T[1] |
| i = 2 | 1 · 2 · 9 · 5 · 7 | le minimum de T[2..5] est déjà en place |
| i = 3 | 1 · 2 · 5 · 9 · 7 |
Leçon 5
| Opération | Exemple | Résultat |
|---|---|---|
concaténation + | "Structure" + " " + "de données" | "Structure de données" |
| comparaison (ASCII, de gauche à droite) | "a" > "A" | Vrai (97 > 65) |
"programme" < "programmation" |
1Un tableau contient des valeurs…
2Dans M : tableau [1..3, 1..4] d'Entier, combien de cases ?
3Le tri qui place à chaque étape le minimum en tête est le tri…
4Le tri à bulles s'arrête quand…
5"Rabat" + "-" + "Salé" donne…
6"Maroc" < "Mali" est…
L'essentiel du chapitre
T : tableau [1..MAX] de type ; accès T[i]. Taille max ≠ taille utile n.M : tableau [1..L, 1..C] de type ; M[i, j] ; deux boucles Pour imbriquées.+ concatène, comparaison ASCII de gauche à droite, ch[i] ; fonctions longueur, position, copie.T[0] ni de T[n + 1].| i = 4 | 1 · 2 · 5 · 7 · 9 | 7 échangé avec 9 : trié |
| Parcours | Tableau à la fin du parcours |
|---|---|
| départ | 5 · 2 · 9 · 1 · 7 |
| 1 | 2 · 5 · 1 · 7 · 9 |
| 2 | 2 · 1 · 5 · 7 · 9 |
| 3 | 1 · 2 · 5 · 7 · 9 |
| 4 | aucun échange : arrêt |
| Tri | Principe | Nombre de comparaisons (pire cas) | Atout |
|---|---|---|---|
| sélection | placer le minimum au début, répéter | environ n²/2 | peu d'échanges |
| bulles | échanger les voisins mal ordonnés | environ n²/2 | s'arrête tôt si presque trié |
| insertion | insérer chaque élément dans la partie triée | environ n²/2 | très rapide sur un tableau presque trié |
"e" > "a")"" = " " | Faux (le vide n'est pas un espace) |
| accès à un caractère | ch := "Turbo Pascal" puis ch[7] | "P" |
| Nom | Rôle | Exemple |
|---|---|---|
Long(ch) | longueur de la chaîne | Long("Rabat") = 5 |
Pos(ch1, ch2) | position de ch1 dans ch2 (0 si absente) | Pos("ba", "Rabat") = 3 |
Copie(ch, p, n) | extrait n caractères à partir de la position p | Copie("Casablanca", 5, 5) = "blanc" |
Majus(ch) | convertit en majuscules | Majus("oui") = "OUI" |
Efface(ch, p, n) | (procédure) supprime n caractères à partir de p | |
Insere(ch1, ch2, p) | (procédure) insère ch1 dans ch2 à la position p |
Vidéo · À regarder
FRPython - Cours complet pour débutants (2026)
SimpleTech par Sergio · YouTube
Vidéo · À regarder
FRCours Python Complet pour Débutants - 10h de Formation de A à Z
Sébastien Daviot - Expertise Data · YouTube
Écris un algorithme qui lit une matrice de 3 lignes et 4 colonnes d'entiers, puis affiche la somme de chaque ligne.
Var M : tableau [1..12, 1..8] de Réel // 12 lignes, 8 colonnes
// M[i, j] : élément de la ligne i et de la colonne jAlgorithme LectureMatrice
Var i, j : Entier
M : tableau [1..12, 1..8] de Réel
Début
Pour i de 1 à 12 faire
Pour j de 1 à 8 faire
Lire(M[i, j])
FinPour
FinPour
FinUne matrice, c'est une salle de cinéma : on repère chaque siège par son rang (la ligne i) et son numéro dans le rang (la colonne j). Pour passer en revue tous les sièges, on fait deux boucles imbriquées : pour chaque rang, pour chaque siège du rang.
Trier un tableau, c'est ranger ses éléments dans l'ordre (croissant ici). Le résumé OFPPT présente trois méthodes.
Le tri par sélection
Principe : chercher le plus petit élément de T[1..n] et l'échanger avec T[1] ; puis le plus petit de T[2..n] et l'échanger avec T[2] ; … jusqu'à T[n−1..n].
Procédure Tri_Selection(var T : Vecteur ; n : Entier)
Var i, j, x, indmin : Entier
Début
Pour i de 1 à (n - 1) faire
indmin := i
Pour j de (i + 1) à n faire
Si T[j] < T[indmin] alors
indmin := j
FinSi
FinPour
x := T[i]
T[i] := T[indmin]
T[indmin] := x
FinPour
FinUne chaîne est une suite de caractères. La chaîne qui ne contient aucun caractère est la chaîne vide "". Déclaration : ch : Chaîne (jusqu'à 255 caractères) ou chn : Chaîne[MAX] (au plus MAX caractères).
Tableau: Les opérations sur les chaînes
Écris une fonction EstPalindrome(ch : Chaîne) : Booléen qui vérifie si une chaîne se lit de la même façon dans les deux sens (« radar », « kayak »).
Fais la trace du tri par sélection puis du tri à bulles sur le tableau 8 · 3 · 6 · 1 · 4 (écris le tableau après chaque étape).
Écris des algorithmes qui, pour un tableau T de n entiers : (a) comptent les éléments pairs ; (b) inversent le tableau en place (le premier devient le dernier) ; (c) vérifient si le tableau est trié par ordre croissant.
Le tri à bulles
Principe : parcourir le tableau de 1 à n − 1 ; si T[i] > T[i + 1], les échanger. Recommencer jusqu'à ce qu'un parcours complet ne fasse aucun échange. Les grands éléments « remontent » comme des bulles.
Procédure Tri_Bulle(var T : Vecteur ; n : Entier)
Var i, x : Entier
echange : Booléen
Début
Répéter
echange := Faux
Pour i de 1 à (n - 1) faire
Si T[i] > T[i + 1] alors
x := T[i]
T[i] := T[i + 1]
T[i + 1] := x
echange := Vrai
FinSi
FinPour
Jusqu'à echange = Faux
FinLe tri par insertion
Principe : prendre les éléments un par un et insérer chacun à sa place dans la partie déjà triée, comme on range des cartes dans sa main.
Procédure Tri_Insertion(var T : Vecteur ; n : Entier)
Var i, j, x : Entier
Début
Pour i de 2 à n faire
x := T[i]
j := i - 1
TantQue (j >= 1) ET (T[j] > x) faire
T[j + 1] := T[j] // on décale vers la droite
j := j - 1
FinTQ
T[j + 1] := x // on insère x à sa place
FinPour
FinTableau: Comparer les trois tris
Tableau: Les fonctions et procédures standards
Algorithme Voyelles
Var ch : Chaîne
i, nb : Entier
Début
Lire(ch)
nb := 0
Pour i de 1 à Long(ch) faire
Si Pos(ch[i], "aeiouyAEIOUY") > 0 alors
nb := nb + 1
FinSi
FinPour
Ecrire("Nombre de voyelles : ", nb)
FinLes listes en Python : l'équivalent des tableaux, avec des indices qui commencent à 0 (et non à 1 comme en pseudo-code).
La partie « Les listes » du cours de Sébastien Daviot, pour s'entraîner davantage.