Algorithmique
5. Les tableaux
Sommaire
I. Tableaux statiques
II. Tableaux dynamiques
III. Tri dans un tableau
IV. Recherche dans un tableau
2 Algorithmique ESI 2021-2022
Rappel
Rappel
Algorithme informatique
Suite d'instructions ordonnée qui décrit de façon
exhaustive les différentes étapes à suivre par un
processeur pour résoudre un problème donné en un
temps fini
4 Algorithmique ESI 2021-2022
Rappel
Pseudo-code algorithmique
ALGORITHME nom_de_l’algorithme
<partie des déclarations>
DEBUT
<partie des instructions>
//commentaire
FIN
5 Algorithmique ESI 2021-2022
Rappel
Un programme n’est pas purement séquentiel
nécessité d’avoir des structures de contrôle
1. Les structures alternatives (tests)
2. Les structures itératives (boucles)
6 Algorithmique ESI 2021-2022
Rappel
Un programme n’est pas purement séquentiel
nécessité d’avoir des structures de contrôle
1. Les structures alternatives (tests)
2. Les structures itératives (boucles)
7 Algorithmique ESI 2021-2022
Rappel
ALGORITHME nom_de_l’algorithme
<partie des déclarations>
DEBUT
séquence1
SI condition1 ALORS
séquence2
FINSI
séquence3
FIN
8 Algorithmique ESI 2021-2022
Rappel
ALGORITHME nom_de_l’algorithme
<partie des déclarations>
DEBUT
séquence1
SI condition1 ALORS
séquence2
SINON
séquence3
FINSI
séquence4
FIN
9 Algorithmique ESI 2021-2022
Rappel
Un test imbriqué est exprimé comme suit
SI condition1 ALORS
séquence1
SINON
SI condition2 ALORS
séquence2
SINON
séquence3
FINSI
FINSI
10 Algorithmique ESI 2021-2022
Rappel
Pour alléger l’écriture et améliorer la lisibilité, on peut
fusionner SINON et SI en SINONSI un seul bloc
de test
SI condition1 ALORS
séquence1
SINONSI condition2 ALORS
séquence2
SINON
séquence3
FINSI
11 Algorithmique ESI 2021-2022
Rappel
Test « SUIVANT … CAS »
SUIVANT variable FAIRE
CAS valeur_1 : sequence_1
CAS valeur_2 : sequence_2
…
CAS valeur_n : sequence_n
AUTRES CAS : sequence_autre
FINSUIVANT
12 Algorithmique ESI 2021-2022
Rappel
Test « SELONQUE … CAS … »
SELONQUE
condition_1 : sequence_1
condition_2 : sequence_2
…
condition_n : sequence_n
SINON: sequence_sinon
FINSELONQUE
13 Algorithmique ESI 2021-2022
Rappel
Un programme n’est pas purement séquentiel
nécessité d’avoir des structures de contrôle
1. Les structures alternatives (tests)
2. Les structures itératives (boucles)
14 Algorithmique ESI 2021-2022
Rappel
Une boucle est une structure de contrôle de type
itératif (ou répétitif)
Elle permet de répéter, plusieurs fois, une instruction ou
un ensemble d’instructions
La répétition est soumise à une condition
15 Algorithmique ESI 2021-2022
Rappel
On utilise trois types de boucles
TANTQUE … FAIRE
POUR
RÉPÉTER … JUSQU’À
16 Algorithmique ESI 2021-2022
Rappel
Boucle « TANTQUE … FAIRE »
Permet de répéter une instruction tant qu’une condition
est vraie
TANTQUE condition FAIRE
instructions
FINTANTQUE
17 Algorithmique ESI 2021-2022
Rappel
Boucle « POUR »
Permet de répéter une instruction un nombre déterminé
de fois
i.e. le nombre d’itérations est connu à l’avance
Utilise un compteur qui est incrémenté après chaque
exécution du bloc d’instructions de la boucle
18 Algorithmique ESI 2021-2022
Rappel
Boucle « POUR »
POUR compteur valeur_initiale à valeur_finale pas valeur_pas
instructions
compteur SUIVANT
19 Algorithmique ESI 2021-2022
Rappel
Boucle « RÉPÉTER … JUSQU’À »
Permet de répéter une instruction jusqu’à ce que la
condition d’arrêt soit vraie
RÉPÉTER
instructions
JUSQU’À condition_arrêt
20 Algorithmique ESI 2021-2022
Problématique
Les boucles permettent à l’utilisateur de saisir n
nombres on déclare une seule variable mais on
écrase sa valeur à chaque nouvelle saisie
Si on veut garder les n nombres pour les utiliser par
la suite on déclare n variables différentes
Quand n est petit Lourd mais gérable
Quand n est grand ?
21 Algorithmique ESI 2021-2022
Problématique
Les boucles permettent à l’utilisateur de saisir n
nombres on déclare une seule variable mais on
écrase sa valeur à chaque nouvelle saisie
Si on veut garder les n nombres pour les utiliser par
la suite on déclare n variables différentes
Idéalement, tout stocker dans une seule variable
tableau
22 Algorithmique ESI 2021-2022
Tableaux statiques
Définition
Tableau statique
Séquence de données de même type, chacune
référencée par un nombre appelé indice (ou index)
Désigné par
Son nom
Le type de ses éléments
Sa taille (i.e. le nombre de ses éléments)
24 Algorithmique ESI 2021-2022
Déclaration de tableaux statiques
Syntaxe
VAR nomTableau[N] :Type
N : taille du tableau
Premier indice : 0
Dernier indice : N – 1
25 Algorithmique ESI 2021-2022
Déclaration de tableaux statiques
Syntaxe
VAR nomTableau[N] :Type
Exemple :
VAR nombres[5] : entier
VAR lettres[26] : caractère
VAR mots[100] : chaîne
VAR absents[107] : booléen
26 Algorithmique ESI 2021-2022
Utilisation de tableaux statiques
Pour désigner un élément du tableau, on utilise son
nom avec, entre parenthèses, l’indice de l’élément
concerné
Exemple :
nombres[0]
nombres[1]
nombres[2]
nombres[3]
nombres[4]
27 Algorithmique ESI 2021-2022
Utilisation de tableaux statiques
Pour affecter une valeur à une case du tableau, on
utilise son nom avec, entre parenthèses, l’indice
concerné puis le signe d’affectation et la valeur
Exemple :
nombres[0] 5
nombres[1] 60
nombres[2] 10
nombres[3] 0
nombres[4] 90
28 Algorithmique ESI 2021-2022
Utilisation de tableaux statiques
nombres[0] 5
nombres[1] 60
nombres[2] 10
nombres[3] 0
nombres[4] 90
0 1 2 3 4
5 60 10 0 90
29 Algorithmique ESI 2021-2022
Utilisation de tableaux statiques
L’indice peut être un nombre, une variable ou une
expression calculée
Exemple
nombres[0]
nombres[i]
nombres[2*i+5]
30 Algorithmique ESI 2021-2022
Utilisation de tableaux statiques
Exemple : demander à l’utilisateur de saisir 10
nombres réels
31 Algorithmique ESI 2021-2022
Utilisation de tableaux statiques
Exemple : demander à l’utilisateur de saisir 10
nombres réels
ALGORITHME tableau_réels
VAR nombres[10] : réel
DEBUT
POUR i 0 à 10
Afficher(" Saisir le nombre numéro ", i+1)
Lire(nombres[i])
i SUIVANT
FIN
32 Algorithmique ESI 2021-2022
Exercice
Que fait cet algorithme ?
ALGORITHME exemple_tableau
VAR tableau[10] , i : entier
DEBUT
POUR i 0 à 10
tableau[i] i
i SUIVANT
POUR i 0 à 10
Afficher(tableau[i])
i SUIVANT
FIN
33 Algorithmique ESI 2021-2022
Exercice
Que fait cet algorithme ?
ALGORITHME exemple_tableau
VAR tableau[10] , i, j : entier
DEBUT
tableau[0] 0
POUR i 1 à 10
tableau[i] tableau[i − 1] + 1
i SUIVANT
POUR i 0 à 10
Afficher(tableau[i])
i SUIVANT
FIN
34 Algorithmique ESI 2021-2022
Exercice
Écrire un algorithme qui demande à l’utilisateur de
saisir 20 nombres et puis qui les affiche
35 Algorithmique ESI 2021-2022
Exercice
ALGORITHME moyenne
VAR nombres[20] : réel
DEBUT
somme 0
POUR i 0 à 20
Afficher("Saisir le nombre numéro ", i+1)
Lire(notes[i])
i SUIVANT
POUR i 0 à 20
Afficher("Le ", i, "ème nombre est : ", nombres[i])
i SUIVANT
FIN
36 Algorithmique ESI 2021-2022
Exercice
Écrire un algorithme qui demande à l’utilisateur de
saisir 20 nombres et puis qui les affiche à partir du
dernier saisi
37 Algorithmique ESI 2021-2022
Exercice
ALGORITHME moyenne
VAR nombres[20] : réel
DEBUT
somme 0
POUR i 0 à 20
Afficher("Saisir le nombre numéro ", i+1)
Lire(notes[i])
i SUIVANT
POUR i 20 à – 1 pas – 1
Afficher("Le ", i, "ème nombre est : ", nombres[i – 1])
i SUIVANT
FIN
38 Algorithmique ESI 2021-2022
Exercice
Écrire un algorithme qui demande à l’utilisateur de
saisir 20 notes et lui affiche leur moyenne
39 Algorithmique ESI 2021-2022
Exercice
ALGORITHME moyenne
VAR notes[20], somme : réel
DEBUT
somme 0
POUR i 0 à 20
Afficher(" Saisir la note numéro ", i)
Lire(notes[i])
somme somme + notes[i]
i SUIVANT
Afficher("La moyenne est : ", somme/20)
FIN
40 Algorithmique ESI 2021-2022
Exercice
Écrire un algorithme qui demande à l’utilisateur de
saisir 20 notes et lui affiche leur moyenne, la note
minimale et la note maximale
41 Algorithmique ESI 2021-2022
ALGORITHME moyenne_min_max
VARExercice
notes[20], somme, min, max : réel
DEBUT
Afficher("Saisir la 1ère note")
Lire(notes[0])
somme, max, min notes[0]
POUR i 1 à 20
Afficher(" Saisir la note numéro ", i)
Lire(notes[i])
somme somme + notes[i]
SI notes[i] < min ALORS
min notes[i]
SINONSI notes[i] > max ALORS
max notes[i]
FINSI
i SUIVANT
Afficher("Moyenne = ", somme/20, "Min = ", min, "Max = ", max)
FIN
42 Algorithmique ESI 2021-2022
Problématique
Écrire un algorithme qui demande à l’utilisateur de
saisir des notes et lui affiche leur moyenne, la note
minimale et la note maximale
Le nombre de notes à saisir n’est pas connu à l’avance
43 Algorithmique ESI 2021-2022
Problématique
Écrire un algorithme qui demande à l’utilisateur de
saisir des notes et lui affiche leur moyenne, la note
minimale et la note maximale
Le nombre de notes à saisir n’est pas connu à l’avance
Tableau dynamique
44 Algorithmique ESI 2021-2022
Tableaux dynamiques
Définition
Tableau dynamique
Séquence de données de même type, chacune
référencée par un nombre appelé indice (ou index), dont
la taille est variable et peut changer lors de l’exécution
46 Algorithmique ESI 2021-2022
Déclaration de tableaux dynamiques
Syntaxe
VAR nomTableau[ ] :Type
Exemple :
VAR nombres[ ] : entier
VAR lettres[ ] : caractère
VAR mots[ ] : chaîne
VAR absents[ ] : booléen
47 Algorithmique ESI 2021-2022
Redimensionnement
L’opération de redimensionnement permet de fixer la
taille du tableau dynamique
Elle intervient dans le corps de l’algorithme
Elle est effectuée par l’instruction Redim
48 Algorithmique ESI 2021-2022
Redimensionnement
ALGORITHME tableau_dynamique
VAR notes[ ] : réel
VAR n : entier
DEBUT
Afficher("Quelle est le nombre de notes à saisir ?")
Lire(n)
Redim notes[n]
POUR i 0 à n
Afficher(" Saisir la note numéro ", i + 1)
Lire(notes[i])
i SUIVANT
FIN
49 Algorithmique ESI 2021-2022
Redimensionnement
L’opération de redimensionnement permet de fixer la
taille du tableau dynamique
Elle intervient dans le corps de l’algorithme
Elle est effectuée par l’instruction Redim
À tout moment, on peut ajouter / supprimer des cases
50 Algorithmique ESI 2021-2022
Exercice
Écrire un algorithme qui demande à l’utilisateur de
saisir des notes et lui affiche leur moyenne, la note
minimale et la note maximale
Demander à l’utilisateur combien de notes il veut saisir
51 Algorithmique ESI 2021-2022
ALGORITHME moyenne
VAR notes[ ], somme, min, max : réel
Exercice
VAR n : entier
DEBUT
somme 0
Afficher("Combien de notes voulez-vous saisir ?")
Lire(n)
Redim notes[n]
Afficher("Saisir la 1ère note")
Lire(notes[0])
somme, max, min notes[0]
POUR i 1 à n
Afficher(" Saisir la note numéro ", i)
Lire(notes[i])
somme somme + notes[i]
SI notes[i] < min ALORS
min notes[i]
SINONSI notes[i] > max ALORS
max notes[i]
FINSI
i SUIVANT
Afficher("Moyenne = ", somme/20, "Min = ", min, "Max = ", max)
FIN 52 Algorithmique ESI 2021-2022
Exercice
Écrire un algorithme qui demande à l’utilisateur de
saisir des nombres réels puis qui lui affiche le nombre
des positifs, le nombre des négatifs, le nombre
minimal et le nombre maximal
Demander à l’utilisateur combien de nombres il veut
saisir
53 Algorithmique ESI 2021-2022
ALGORITHME exercice_tableau_dynamique
Exercice
VAR nombres[ ], min, max : réel
VAR n, nbPositifs : entier
DEBUT
nbPositifs 0
Afficher("Combien de nombre voulez-vous saisir ?")
Lire(n)
Redim nombres[n]
POUR i 0 à n
Afficher("Saisir le nombre numéro ", i)
Lire(nombres[i])
SI i = 0 ALORS
min nombres[i]
max nombres[i]
SINONSI nombres[i] < min ALORS
min nombres[i]
SINONSI nombres[i] > max ALORS
max nombres[i]
FINSI
SI nombres[i] >= 0 ALORS
nbPositifs nbPositifs + 1
FINSI
i SUIVANT
Afficher("Min = ", min, "Max = ", max, "Nb + = ", nbPositifs, "Nb − ", n − nbPositifs)
FIN
54 Algorithmique ESI 2021-2022
Exercice
Écrire un algorithme qui demande à l’utilisateur de
remplir deux tableaux (de même taille) puis qui
affiche le tableau contenant le produit des éléments
des deux
Demander à l’utilisateur la taille des tableaux
Tableau 1 5 2 10 15 1
Tableau 2 5 60 10 0 90
Tableau 3 25 120 100 0 90
55 Algorithmique ESI 2021-2022
ALGORITHME exercice_tableau_dynamique
VAR tab1[ ], tab2[ ], tab3[ ] : réel
Exercice
VAR n : entier
DEBUT
Afficher("Combien de nombre voulez-vous saisir ?")
Lire(n)
Redim tab1[n]
Redim tab2[n]
Redim tab3[n]
Afficher("Remplissage du 1er tableau")
POUR i 0 à n
Afficher("Saisir le nombre numéro ", i)
Lire(tab1[i])
i SUIVANT
Afficher("Remplissage du 2e tableau")
POUR i 0 à n
Afficher("Saisir le nombre numéro ", i)
Lire(tab2[i])
i SUIVANT
POUR i 0 à n
tab3[i] tab1[i]*tab2[i]
Afficher(tab1[i], "*", tab2[i], "=", tab3[i])
i SUIVANT
FIN 56 Algorithmique ESI 2021-2022
Problématique
Besoin : pour une classe de 10 étudiants, nous
voulons stocker, pour chaque étudiant, ses notes dans
2 matières
Un tableau de 10 éléments pour la note de la première matière;
et un autre tableau pour la note de la deuxième
57 Algorithmique ESI 2021-2022
Problématique
Besoin : pour une classe de 10 étudiants, nous
voulons stocker, pour chaque étudiant, ses notes dans
2 matières
Un tableau de 10 éléments pour la note de la première matière;
et un autre tableau pour la note de la deuxième
Matrice de 10 x 2 avec, dans chaque ligne i, les deux notes de
l’étudiant numéro i
58 Algorithmique ESI 2021-2022
Problématique
Besoin : pour une classe de 10 étudiants, nous
voulons stocker, pour chaque étudiant, ses notes dans
2 matières
Un tableau de 10 éléments pour la note de la première matière;
et un autre tableau pour la note de la deuxième
Matrice de 10 x 2 avec, dans chaque ligne i, les deux notes de
l’étudiant numéro i tableau multidimensionnel
59 Algorithmique ESI 2021-2022
Tableaux multidimensionnels
Définition
Tableau à 2 dimensions
Séquence de données de même type, chacune
référencée par deux indices
Désigné par
Son nom
Le type de ses éléments
Sa taille n x m
Peut être assimilé à une matrice de n lignes et m colonnes
61 Algorithmique ESI 2021-2022
Déclaration de tableaux à 2 dimensions
Syntaxe
VAR nomTableau[N][M] :Type
Exemple :
VAR nombres[5][5] : entier
VAR lettres[26][2] : caractère
VAR mots[1][10] : chaîne
VAR absents[107][30] : booléen
62 Algorithmique ESI 2021-2022
Exemple de tableaux à 2 dimensions
ALGORITHME tableau_2d
VAR notes[20][2] : réel
DEBUT
POUR i 0 à 20
Afficher("Saisir la 1ère note de l’étudiant N° ", i+ 1)
Lire(notes[i][0])
Afficher("Saisir la 2e note de l’étudiant N° ", i+ 1)
Lire(notes[i][1])
i SUIVANT
FIN
63 Algorithmique ESI 2021-2022
Exercice
Que font les algorithmes suivants ?
64 Algorithmique ESI 2021-2022
ALGORITHME exemple_tab
Exercice
VAR tab[5][10] : entier
Que
VAR i, j, k:fait l’algorithme
entier suivant ?
DEBUT
k1
POUR i 0 à 5
POUR j 0 à 10
tab[i][j] k
kk+1
j SUIVANT
i SUIVANT
FIN
65 Algorithmique ESI 2021-2022
Exercice
ALGORITHME exemple_tab
Que
VAR fait l’algorithme
tab[5][10] : entier suivant ?
VAR i, j : entier
DEBUT
POUR i 0 à 5
POUR j 0 à 10
tab[i][j] i + j
j SUIVANT
i SUIVANT
FIN
66 Algorithmique ESI 2021-2022
Exercice
Écrire un algorithme qui génère un tableau de
booléens de 5 x 10 où toutes les cases contiennent la
valeur VRAI
67 Algorithmique ESI 2021-2022
Exercice
ALGORITHME tab_bool
VAR tab[5][10] : booléen
DEBUT
POUR i 0 à 5
POUR j 0 à 10
tab[i][j] VRAI
j SUIVANT
i SUIVANT
FIN
68 Algorithmique ESI 2021-2022
Exercice
Écrire un algorithme qui demande à l’utilisateur de
remplir une matrice de 10 x 10 et vérifie si elle est
symétrique ou non
69 Algorithmique ESI 2021-2022
Exercice
Écrire un algorithme qui demande à l’utilisateur de
remplir une matrice de 10 x 10 et vérifie si elle est
symétrique ou non
x a b c
a x d e
b d x f
c e f x
70 Algorithmique ESI 2021-2022
Exercice
i0
j0
ALGORITHME symétrie_matrice TANTQUE sym ET i < 10
VAR matrice[10][10] : réel TANTQUE j < 10
SI j<>i et matrice[i][j] <> matrice[j][i] ALORS
VAR sym : booléen
sym = FALSE
DEBUT
FINSI
sym VRAI
jj+1
POUR i 0 à 10 FINTANTQUE
POUR j 0 à 10 ii+1
Lire(matrice[i][j]) FINTANTQUE
j SUIVANT SI sym ALORS
i SUIVANT Afficher("La matrice saisie est symétrique")
SINON
Afficher("La matrice saisie n’est pas symétrique")
FINSI
71 FIN
Algorithmique ESI 2021-2022
Exercice
Écrire un algorithme qui cherche, dans un tableau
d’entiers de 10 x 10, le nombre minimal et le nombre
maximal
72 Algorithmique ESI 2021-2022
ALGORITHME tab_bool
Exercice
VAR tab[10][10], min, max : réel
VAR i, j : entier
DEBUT
//instructions de remplissage du tableau omises
min, max tab[0][0]
POUR i 0 à 10
POUR j 0 à 10
SI tab[i][j] < min ALORS
min tab[i][j]
SINONSI tab[i][j] > max ALORS
max tab
FINSI
j SUIVANT
i SUIVANT
Afficher("Max = ", max, " et Min = ", min)
FIN
73 Algorithmique ESI 2021-2022
Recherche dans un tableau
Recherche dans un tableau
Proposition ?
75 Algorithmique ESI 2021-2022
Recherche séquentielle
Vérifier si une valeur existe dans un tableau
utiliser un flag
Parcourir le tableau
Si élément courant = valeur flag = VRAI
Vérifier le flag à la fin de l’exécution
Si flag = VRAI l’élément existe
76 Algorithmique ESI 2021-2022
Recherche séquentielle
Pseudo-code
Recherche de la valeur val dans le tableau tab[N]
77 Algorithmique ESI 2021-2022
Recherche séquentielle
Pseudo-code
existe FAUX
POUR Exemple
i 0 à N du tri du tableau tab[N]
SI tab[i] = val ALORS
existe VRAI
FINSI
SI existe ALORS
Afficher("La valeur recherchée a été trouvée")
SINON
Afficher("La valeur recherchée n’a pas été trouvée")
FINSI
i SUIVANT
78 Algorithmique ESI 2021-2022
Recherche séquentielle
Pseudo-code
Recherche de la valeur val dans le tableau tab[N]
Amélioration possible : ne pas continuer les comparaisons
si l’élément a été trouvé
Encore mieux : recherche dichotomique
79 Algorithmique ESI 2021-2022
Recherche dichotomique
Principe
Comparer la valeur à trouver avec l’élément au milieu du
tableau
Si inférieure, refaire la même comparaison avec la première
moitié du tableau
Si supérieure, refaire la même comparaison avec la deuxième
moitié du tableau
Nécessite que le tableau soit trié
80 Algorithmique ESI 2021-2022
Recherche dichotomique
Pseudo-code
Recherche de la valeur val dans le tableau tab[N]
81 Algorithmique ESI 2021-2022
Recherche dichotomique
existe FAUX
Pseudo-code
debut 0
fin NExemple du tri du tableau tab[N]
TANTQUE existe = FAUX ET debut <= fin
milieu (debut + fin) DIV 2
SI tab[milieu] = val ALORS
existe VRAI
SINONSI tab[mileu] < val ALORS
debut milieu + 1
SINON
fin milieu – 1
FINSI
FINTANTQUE
82 Algorithmique ESI 2021-2022
Algorithmique
5. Les tableaux