Chapitre 6-Les Tableaux + TD - Dalel 2021

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 12

Chapitre 6 : Les tableaux

A- Les tableaux à une dimension


1- Définition
Un tableau T est une variable structurée formée d’un nombre entier N de variables
simples de même type, qui sont appelées les composantes du tableau.
Le nombre de composantes N est alors la dimension du tableau.

T ………………. ……..

N composantes
On dit encore que T est un vecteur de dimension N.

2- Utilité
 Un tableau est une structure de données constituée d’un nombre fini d’éléments de
même type.
 Lorsque plusieurs données de même type, généralement destinées au même traitement
doivent être accessibles le long d’un programme, on propose d’utiliser la structure d’un
tableau.

3- Composantes
Nom : identificateur d’un tableau.
Type-élément : Les éléments d’un tableau sont caractérisés par leur type (entier, réel,
caractère, ............. ).
Indice : Tout type dont les éléments possèdent un successeur (les types scalaires),
généralement de type entier.

4- Déclaration

Nom_tab : Tableau [premind . . deuxind] de type_élément


Exemples
T1 : Tableau [1..50] d’entier
T2 : Tableau [1..20] de réel
T3 : Tableau [1..20] de caractère
Remarque
Il est également possible de définir un type tableau comme dans l’exemple suivant :
CONST
nmax = 50
TYPE
tab : Tableau [1..nmax] d’entierT
VAR
: tab

1 Mme Dalel Bourkhis TI1_Algorithmique_ISET de Tataouine


5- Accès aux composantes d’un tableau
Considérons un tableau T de dimension N
 L’accès au premier élément du tableau se fait par T[1]
 L’accès au dernier élément du tableau se fait parT[N]

Exemple
Nom : T 100 200 300 400 500

Indice 1 2 3 4 5
Contenu T[1] T[2] T[3] T[4] T[5]

6- Chargement d’un tableau

Procédure CHARGEMENT ( VAR T : tab ; N :entier)


VAR
i:
entier
DÉBUT
Pour i de 1 à N Faire
Écrire ("T [" , i , "]
:")Lire (T[i])
Fin pour
FIN

7- Affichage du contenu d’un tableau


Procédure AFFICHE ( T : tab ; N : entier) VAR
i:
entierDÉBUT
Pour i de 1 à N Faire
Écrire (T[i])
Fin Pour
FIN

8- Méthodes de tri dans un tableau


8-1- Tri par sélection (par minimum)
Principe :
Le principe de cette méthode est simple. Elle consiste à :
 Chercher l’indice du plus petit élément du tableau T[1..n] et permuter l’élément
correspondant avec l’élément d’indice 1;
 Chercher l’indice du plus petit élément du tableau T[2..n] et permuter l’élément
correspondant avec l’élément d’indice 2 ;
 ……..
 Chercher l’indice du plus petit élément du tableau T[n-1..n] et permuter l’élément
correspondant avec l’élément d’indice n-1;

2 Mme Dalel Bourkhis TI1_Algorithmique_ISET de Tataouine


Fonction IND_MIN (T : tab ; N, d:entier) : entierVAR
posmin,j:entie
rDÉBUT
posmin← d
Pour j de d+1 T do
Si T[j] < T[posmin] Alors
posmin ← j
Fin Si
Fin Pour
IND_MIN← posmin
FIN
Procédure TRISELECTION (VAR T : tab ; N : entier)
VAR
i, j, aux, posmin :
entierDÉBUT
Pour i de 1 à n-1 faire
posmin ← IND_MIN (T , N , i )
Si (posmin ≠ i) Alors
aux ←T[i]
T[i] ←T[posmin]
T[posmin] ← aux
Fin Si
FinPour
FIN

3 Mme Dalel Bourkhis TI1_Algorithmique_ISET de Tataouine


8-2- Tri à bulles
Principe
Cet algorithme porte le nom de tri bulle car, petit à petit, les plus grands éléments du
tableau remontent, par le jeu des permutations, enfin de tableau.
La méthode de tri à bulles consiste à répéter le traitement suivant :
Parcourir les éléments du tableau de 1 à (n-1); si l'élément i estsupérieur à l'élément (
i+1) , alors on les permute.
Le programme s'arrête lorsqu’aucune permutation n'est réalisable après un parcours
complet du tableau

Procédure TRISBULLE (VAR T : tab ; N : entier)VAR


i, aux : entier
permut : Booléen
DÉBUT
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
Fin si
Fin pour
N←N-1
Jusqu’à (echange = faux) OU ( N = 1)
FIN

4 Mme Dalel Bourkhis TI1_Algorithmique_ISET de Tataouine


8-3- Tri par insertion
Méthode:
Trier le tableau de gauche à droite en insérant à chaque fois l'élément I+1 dans letableau (déjà
trié) des I premiers éléments.
 Comparer et permuter si nécessaire T[1] et T[2] de façon à placer le plus petit dans la
case d’indice 1
 Comparer et permuter si nécessaire l’élément T[3] avec ceux qui le précèdent dans
l’ordre ( T[2] puis T[1]) afin de former une sous-liste triée T[1..3]
…….
 Comparer et permuter si nécessaire l’élément T[n] avec ceux qui le précèdent dans
l’ordre ( T[n-1] puis T[n-2]) afin de former un tableau trié .

Tableau T Valeur à insérer


50 30 10 20 60 40 30
30 50 10 20 60 40 10
10 30 50 20 60 40 20
10 20 30 50 60 40 60
10 20 30 50 60 40 40
10 20 30 40 50 60

Procédure TRISINSERTION (VAR T : tab ; N : entier)VAR


i, j, aux : entier
DÉBUT
Pour i de 2 à N faire
aux ← T[i]j
←i
Tant que (T[j – 1] > aux ) ET (j > 1) Faire
T[j]← T[j-1]
j ← j-1
Fin Tant Que
T[j]← aux
Fin Pour

FIN

9- Méthodes de recherche dans un tableau


9-1- La recherche séquentielle
Problème
Déterminer la première position d’une valeur donnée dans un tableau de N élément.
Résoudre ce problème en utilisant la notion de procédures/Fonctions.

5 Mme Dalel Bourkhis TI1_Algorithmique_ISET de Tataouine


Fonction RECH_SEQ ( T : tab ; N, val :entier) : entierVAR
i, pos : entier
DÉBUT
pos← -1 i← 1
Tant que (i ≤ N et pos = -1 ) Faire
Si (T[i] = val ) alors
pos ← i
Si non
i ← i+1

Fin si
Fin Tant que
RECH_SEQ ← pos
FIN

9-2- La recherche dichotomique


Problème
Déterminer la première position d’une valeur donnée dans un tableau de N élément
triés dans le sens croissant.
Principe
Le principe est de décomposer le tableau T en deux sous tableaux. Trois cas peuvent se
produire :
 Si val = T[milieu] alors val est trouvé et la recherche est terminée.
 Si val < T[milieu] alors on va chercher val dans la partie gauche du tableau T.
 Si val > T[milieu] alors on va chercher val dans la partie droite du tableau T.
On poursuit la recherche tant que T[milieu] est différent de val est tant que la dimensionde
sous tableau reste valide.

Fonction RECH_DICH ( T : tab ; N, val :entier) : entierVAR


i, pos,mil, inf, sup : entier
DÉBUT
pos← -1 inf← 1 sup← N
Tant que ( inf ≤ sup et pos = -1 ) Faire
mil ← (inf + sup) div 2
Si (T[mil] = val ) alors
pos ← mil
Si non
Si (val<T[mil] ) alors
sup ← mil - 1
Si non
inf ← mil + 1
Fin Si

Fin Si

Fin Tant Que


RECH_DICH← pos
FIN

6 Mme Dalel Bourkhis TI1_Algorithmique_ISET de Tataouine


B- Les tableaux à deux dimensions
1- Définition
Un tableau à deux dimensions A et à interpréter comme un tableau (unidimensionnel) de
dimension L dont chaque composante est un tableau (unidimensionnel) de dimension C.
On appelle L le nombre de lignes du tableau et C le nombre de colonnes du tableau. Un
tableau à deux dimensions contient L*C composantes.

2- Déclaration
Nom_tab : Tableau [premind. .deuxind , premind. .deuxind] de type_élément

Exemples :
M1 : Tableau [1..30, 1..30] d’entier
M2 : Tableau [1..20, 1..20] de réel
M3 : Tableau [1..20, 1..20] de caractère
Remarque :
Il est également possible de définir une matrice comme dans l’exemple suivant :
CONST
NL = 30
NC = 20
TYPE
MAT : Tableau [1.. NL, 1.. NC] d’entierM :
VAR
MAT

7 Mme Dalel Bourkhis TI1_Algorithmique_ISET de Tataouine


3- Accès aux composantes d’une matrice

Considérons un tableau M de L lignes et C colonnes.


 Les indices du tableau varient de 1 à L, respectivement de 1 à C.
 La composante de la Nième ligne et Mième colonne est notée : A[N,M].

Syntaxe :

<Nom du tableau>[<ligne> ,<colonne>]

Exemple : Considérons une matrice de 3 lignes et 4 colonnes


1 2 3 4
1 A[1 ,1] A[1,2] A[1,3] A[1 ,4]
2 A[2 ,1] A[2 ,2] A[2 ,3] A[2 ,4]
3
A[3 ,1] A[3 ,2] A[3 ,3] A[3 ,4]
4-Chargement d’une matrice

Algorithme Chargement matrice


VAR
M : Tableau [1.. 3, 1..4] d’entieri ,j : entier
DÉBUT
Pour i de 1 à 3 Faire
Pour j de 1 à 4 Faire
Écrire ("M [" , i , ", " , j , "] :")
Lire (M [i, j])
Fin pour
Fin pour
FIN

5-Affichage du contenu d’une matrice

Algorithme Afficher matrice


VAR
M : Tableau [1.. 3, 1..4] d’entieri,j :
entier
DÉBUT
Pour i de 1 à 3 Faire
Pour j de 1 à 4 Faire
Écrire ( M[i, j])
Fin pour
Fin pour
FIN

8 Mme Dalel Bourkhis TI1_Algorithmique_ISET de Tataouine


Exemple 1
Soient M1 et M2 deux matrices à n lignes et m colonnes. On veut écrire une procédurequi
calcule les éléments de la matrice M3 = M1 + M3
Rappel:

Procédure SOMME deux matrices ( M1 , M2 : MAT ; VAR M3 : MAT ;n, m : entier)


VAR
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

Exemple 2

Ecrire un algorithme qui effectue la transposition t A d'une matrice A de dimensions N et M en


une matrice de dimensions M et N.
La matrice A sera transposée par permutation des éléments. Résoudre ce problème en utilisantla
notion de procédures/Fonctions.

Rappel

9 Mme Dalel Bourkhis TI1_Algorithmique_ISET de Tataouine


Algorithme CHANGEMENT
CONST
Nmax = 50
TYPE
MAT : Tableau [1.. Nmax, 1.. Nmax] d’entierA :
VAR
MAT
N , M : entier

Fonction SAISIE_TAILLE() : entier


VAR
nb : entier
DÉBUT
Répéter
Ecrire("Donner la taille de T :")
Lire(nb)
Jusqu’à (nb>1 et
nb<=nmax)SAISIE_TAILLE
← nb
FIN

Procédure CHARGEMEMENT (VAR A : MAT ; N, M : entier)


VAR
i , j: entier
DÉBUT
Pour i de 1 à N Faire
Pour j de 1 à M Faire
Ecrire ("A [" , i , ", " , j , "] :")
Lire (A [i, j])
Fin pour
Fin pour
FIN

Procédure AFFICHE (A : MAT ; N, M :entier)


VAR
i, j : entier
DÉBUT
Pour i de 1 à N Faire
Pour j de 1 à M Faire
Ecrire (A [i, j])
Fin pour
Fin pour
FIN

10 Mme Dalel Bourkhis TI1_Algorithmique_ISET de Tataouine


Procédure TRANSPOSEE (VAR A : MAT ; N, M : entier)
VAR
i, j, Dmax, aux : entier
DÉBUT
Si ( N > M ) alors
Dmax ← N
Si non
Dmax ← M
Fin si
Pour i de 1 à Dmax Faire Pour
j de 1 à i Faire
aux ← A[i, j] A[i ,
j] ← A[j , i]A[j , i]
← aux
Fin pour
Fin pour
FIN

DÉBUT ( P.P)

Ecrire (" Saisie des tailles ")


N ← SAISIE_TAILLE () M ←
SAISIE_TAILLE()
Ecrire (" Chargement de A ")
CHARGEMEMENT (A, N, M)
Ecrire (" Affichage de A avant transposition ")
AFFICHE (A, N, M)
TRANSPOSEE (A, N, M)
Ecrire (" Affichage de A après transposition ")
AFFICHE (A, M, N)
FIN

11 Mme Dalel Bourkhis TI1_Algorithmique_ISET de Tataouine


TD n°6

Exercice 1
Ecrire une procédure qui permet de remplacer toutes les occurrences d’un entier X donné par -1 dans
un tableau T donné.

Exercice 2
Ecrire une procédure qui permet d’éclater un tableau T contenant des entiers positifs et négatifs en deux
autres tableaux T1 qui contiendra les éléments négatifs, et T2 qui contiendra les éléments positifs.

Exercice 3
Ecrire une procédure qui permet d’inverser un tableau T donné.
Exemple :

Exercice 4
Ecrire une procédure qui permet de remplir une matrice par les n premières lignes du triangle de Pascal.
Exemple : Pour n=4, on obtient la matrice suivante :

12 Mme Dalel Bourkhis TI1_Algorithmique_ISET de Tataouine

Vous aimerez peut-être aussi