Vous êtes sur la page 1sur 14

ASD1 - Chapitre 6: Les tableaux Déc.

2022

Algorithmes et Structures de données


(ASD 1)

Les tableaux

Ahmed Dridi
dridi.isik@gmail.com

Objectifs du chapitre

Manipuler les Tableaux

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
s0
Pour i de 1 à n Faire
ss+t[i]
Fin Pour
Sommes
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
i1
Tant que ((i <= n) et (t[i] # x))Faire
ii+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 Finmilieu-1
Début Fin Si
debut1 Fin Si
finn 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
Trouvevrai Écrire("l’élément n’existe pas")
Fin Si
Fin

15

Les algorithmes de tri


Définition: Tri par selection
Un ensemble d'instructions qui Tri à bulles
permettent de ranger un
Tri par insertion
ensemble d'éléments dans un
ordre bien défini. Tri Fusion
Tri Rapide
T 8 15 10 18 5 0 Tri Shaker
Tri Gnome
Tri Shell
TTrié 0 5 8 10 15 18
Tri à peigne

16

8
ASD1 - Chapitre 6: Les tableaux Déc. 2022

Tri par selection


Principe: Algorithme:
i=1 Procédure TriSelection (Var T: Tab; N:entier)
Répéter VAR
1. Rechercher le minimum du tableau I, j, min:entier
Début
2. On le permute avec celui occupant Pour i de 1 à (N-1) Faire
la position i min  i
3. Recommencer pour i+1 Pour j de (i+1) à n Faire
Jusqu'à (fin du tableau-1). Si (T[j] < T[min]) Alors
min j
FinSi
FinPour
Temp T[min]
T[min] T[i]
T[i]  temp
FinPour
Fin
17

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

Tri par insertion


Principe: Algorithme:
Tableau toujours divisé en 2 parties Procédure TriInsertion (Var T: Tab; N:entier)
(partie triée et partie non triée). VAR
i, j, aux : entier
La partie de départ qui est triée est le Début
premier élément. Pour i de 2 à N faire
Prendre un élément non encore trié. aux ← T[i]
L’insérer à sa place dans la partie triée j←i
(En insérant cet élément dans la partie Tant que (T[j – 1] > aux ) ET (j > 1) Faire
T[j]← T[j-1]
triée, il se pourrait qu’on déplace j ← j-1
plusieurs autres.) Fin Tant Que
T[j]← aux
Fin Pour

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

i=2, j=1 M[1,1]=5


M[i,j] =?
5 2 1
M[i+1, j+2] =?
M 2
3
5
1
6
8
M[2*i+1, 2*j+1]=?
7 2 1

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

M3[1,1] = M1[1,1]*M2[1,1]+ M1[1,2]*M2[2,1]+ M1[1,3]*M2[3,1]

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

Vous aimerez peut-être aussi