Académique Documents
Professionnel Documents
Culture Documents
2022
Les tableaux
Ahmed Dridi
dridi.isik@gmail.com
Objectifs du chapitre
1
ASD1 - Chapitre 6: Les tableaux Déc. 2022
Introduction
Problème:
Supposons que nous souhaitons saisir N notes d'étudiants et de
Déterminer par la suite combien d'entre elles sont supérieures à la moyenne
de toutes les notes.
Solution:
Variables:
Somme: réel pour calculer la somme des notes au fur et à mesure de lecture.
Moyenne: reel pour calculer la Moyenne de N notes
Il est nécessaire de mémoriser ces notes, car il faudrait de nouveau
consulter ces notes pour déterminer combien d'entre elles sont supérieures
à la moyenne.
N variables différentes?: Non, il n'est pas raisonnable.
Bonne solution Tableau
Introduction
Tableaux
Vecteurs Matrices
2
ASD1 - Chapitre 6: Les tableaux Déc. 2022
Les vecteurs
Définition:
Un tableau est une structure de données qui peut contenir une
liste finie de valeurs de même type. Il possède un identificateur.
Ses éléments sont accessibles grâce a un indice (entier) et sont
rangés successivement en mémoire.
T[1]=8
T 8 15 10 18 5 0
1 2 3 4 5 6
Les vecteurs
Déclaration: T[1]=8
Un tableau est caractérisé par:
− Identifiant: son nom T 8 15 10 18 5 0
− Taille: nombre d'éléments
− Type: Type des valeurs i= 1 2 3 4 5 6
Syntaxe:
VAR CONST
NomT : Tableau [Taille] de Type N=10
NomT : Tableau [1..Taille] de Type TYPES
Tab=Tableau [1 .. N] de Type
VAR
T : Tab
3
ASD1 - Chapitre 6: Les tableaux Déc. 2022
Les vecteurs
Accéder aux éléments d’un tableau:
Soit T : Tableau [1 .. 10] de entier
− T[4] est le 4ème élément du tableau
− T[i] est le ième élément du tableau avec 1≤i≤10
− T[2*i+1] permet d’accéder l’élément numéro (2*i+1)
i=2
T[i] =15 T 8 15 10 18 5 0
T[i+1] =10 i= 1 2 3 4 5 6
T[2*i+1]=?
Les vecteurs
Accéder aux éléments d’un tableau:
Pour chaque élément du tableau on peut appliquer toutes les
opérations de base qu’on peut appliquer sur les types de base :
− Affection: T[3]←12, T[i]←T[i+1]
− Lecture: LIRE (T[i])
− Affichage: ECRIRE (T[2*i])
4
ASD1 - Chapitre 6: Les tableaux Déc. 2022
Les vecteurs
Remplissage d’un tableau:
Procédure Remplir(var T :Tab; N:entier)
Var
i : entier
Début
Pour i de 1 à N Faire
Ecrire("donner un entier ")
Lire(T[i])
Fin Pour
Fin
Les vecteurs
Affichage d’un tableau:
Procédure Afficher(T :Tab, N:entier)
Var
i : entier
Début
Pour i de 1 à N Faire
Ecrire(T[i])
Fin Pour
Fin
10
5
ASD1 - Chapitre 6: Les tableaux Déc. 2022
Les vecteurs
Exercice: Écrire une fonction qui retourne la somme des éléments
d’un tableau de n entiers.
Fonction Somme(t : tab, n : entier) : entier
Variables
i, s: entier
Début
s0
Pour i de 1 à n Faire
ss+t[i]
Fin Pour
Sommes
Fin
11
Les vecteurs
Exercice: Écrire une procédure qui permet d’afficher seulement
les éléments strictement positifs d’un tableau de n entier.
Procédure PositifTab(t : Tab, n : entier)
Variables
i : entier
Début
Pour i de 1 à n Faire
Si (t[i] >0) alors
Ecrire(t[i])
Fin Si
Fin Pour
Fin
12
6
ASD1 - Chapitre 6: Les tableaux Déc. 2022
Les vecteurs
Recherche dans un tableau:
Exercice: Écrire une procédure qui permet de chercher la position
de la première occurrence d'un entier X dans un vecteur.
Procédure Recherche(t : Tab, n : entier, Sinon
x :entier) Ecrire("l’élément existe à la
Var position", i)
i : entier Fin Si
Début Fin
i1
Tant que ((i <= n) et (t[i] # x))Faire
ii+1
Fin Tant que
Si (i > n) alors
Ecrire("l’élément n’existe pas")
13
Les vecteurs
Recherche dichotomique dans un tableau:
Exercice: Écrire une procédure qui permet de chercher la position de la
première occurrence d'un entier X dans un vecteur en utilisant la recherche
par dichotomie.
Principe:
X=20
T 3 4 6 11 15 20 34 54
i= 1 2 3 4 5 6 7 8
Début= 1 Fin=8
T[4]=X? Milieu=(Début+Fin) Div 2 = 4
Début= 5 Fin=8
T[6]=X? Milieu=(Début+Fin) Div 2 = 6
14
7
ASD1 - Chapitre 6: Les tableaux Déc. 2022
Les vecteurs
Procédure Rdichotomie(t : Tab, n : Sinon
entier, x : entier) Si (t[milieu] < x) alors
Variable Debut milieu+1
debut, fin, milieu :entier Sinon
trouve : booleen Finmilieu-1
Début Fin Si
debut1 Fin Si
finn Jusqu’à ((trouve=vrai ) ou (début> fin))
trouve faux Si ( trouve=vrai) alors
Répeter Écrire("l’élément existe à la
milieu(debut+fin) div 2 position", milieu)
Si (t[milieu]=x) alors Sinon
Trouvevrai Écrire("l’élément n’existe pas")
Fin Si
Fin
15
8
ASD1 - Chapitre 6: Les tableaux Déc. 2022
Tri à bulles
Principe: Algorithme:
Répéter Procédure TriBulle (Var T: Tab; N:entier)
− Si 2 éléments voisins ne sont pas VAR
i, aux : entier
ordonnés on les permutes permut : Booléen
Jusqu'à (aucune permutation n'est pas Début
nécessaire). Répéter
permut ← faux
Pour j de 1 à N-1 faire
Si T[i]> T[i+1] alors
aux ← T[i]
T[i] ← T[i + 1]
T[i + 1] ← aux
permut ← vrai
Fin si
Fin pour
N←N-1
Jusqu’à (permut = faux) OU ( N = 1)
18
9
ASD1 - Chapitre 6: Les tableaux Déc. 2022
19
Les matrices
Définition:
Une matrice, appelé également un tableau à deux dimensions est
une structure de données permettant d’organiser des informations
de même type en lignes et en colonnes.
Il est caractérisé donc par son nombre de lignes (NL) et son
nombre de colonnes (NC).
Dimension du matrice = NC*NL
NC=3
5 2 1
M 2
3
5
1
6
8
NL=4
7 2 1
20
10
ASD1 - Chapitre 6: Les tableaux Déc. 2022
Les matrices
Déclaration:
Un tableau est caractérisé par:
− Identifiant: son nom
− Dimension: nombre de ligne (NL)*nombre de colonne (NC)
− Type: Type des valeurs
Syntaxe:
VAR CONST
NomM : Tableau [NL, NC] de Type NL=10
NomM : Tableau [1..NL, 1..NC] de Type NC=3
TYPES
Mat=Tableau [1 .. NL, 1..NC] de Type
VAR
M : Mat
21
Les matrices
Accéder aux éléments d’une matrice:
Soit M : Tableau [1 .. 10, 1..10] de entier
− T[4,1] est l'élément du 4ème ligne et la 1ère colonne.
− T[i,j] est l'élément de l' ième ligne et le jème colonne.
− T[2*i+1, j] permet d’accéder l’élément de (2*i+1) ligne et j colonne
22
11
ASD1 - Chapitre 6: Les tableaux Déc. 2022
Les matrices
Remplissage d’une matrice:
Procédure Remplir(var M: Mat; N, C: entier)
Var
i,j: entier
Début
Pour i de 1 à N Faire
Pour j de 1 à C Faire
Écrire("donner un entier")
Lire(M[i, j])
Fin Pour
Fin Pour
Fin
23
Les matrices
Affichage d’une matrice:
Procédure Afficher(M: Mat; N, C: entier)
Var
i,j: entier
Début
Pour i de 1 à N Faire
Pour j de 1 à C Faire
Écrire(M[i, j])
Fin Pour
Fin Pour
Fin
24
12
ASD1 - Chapitre 6: Les tableaux Déc. 2022
Les matrices
Exercice: Écrire une procédure qui renvoie la somme de deux
matrices M1 et M2
1 3 2 4 5 6 5 8 8
5 2 1 + 3 2 1 = 8 4 2
0 3 7 2 8 9 2 11 16
25
Les matrices
Exercice: Écrire une procédure qui renvoie la somme de deux
matrices M1 et M2
Procédure SommeMat(M1,M2: Mat; Var M3: Mat N,M : entier)
Variables
i,j : entier
Début
Pour i de 1 à N Faire
Pour j de 1 à M Faire
M3[i,j]M1[i,j]+M2[i,j]
Fin Pour
Fin Pour
Fin
26
13
ASD1 - Chapitre 6: Les tableaux Déc. 2022
Les matrices
Exercice: Écrire une procédure qui renvoie le produit de deux
matrices M1 et M2
M1[2,3] M2[3,2] M3[2,2]
k j j
i 1 2 3 2 1
i 11 13
4 0 5 * 3 0 = 13 24
k
1 4
27
Les matrices
Exercice: Écrire une procédure qui renvoie le produit de deux
matrices M1 et M2
Procédure ProduitMat(M1,M2: Mat; Var M3: Mat N,M : entier)
Variables
i,j,k : entier
Début
Pour i de 1 à N Faire
Pour j de 1 à M Faire
M3[i,j]0
Pour k de 1 à M Faire
M3[i,j]M3[i,j]+M1[i,k]*M2[k,j]
Fin Pour
Fin Pour
Fin Pour
Fin
28
14