Vous êtes sur la page 1sur 29

Institut National des sciences Appliques et des Technologies

Algorithmique et Structure de Donnes 1


Niveau MPI

Les Tableaux
F. Chaieb Chakchouk
faten.chaieb@gnet.tn

Introduction
Problme
Ecrire un algorithme qui permet de lire les notes de 100 tudiants
et dafficher les notes des 10 premiers dentre eux.

Introduction
ALGORITHME tudiant
Var n1, n2, .., n100 : rel;
Dbut
Lire (n1);
Lire (n2) ;

Lire (n100);
Ecrire (Voici les notes des dix premiers tudiants) ;
Ecrire (n1);
Ecrire (n2);
..
Ecrire (n10);
Fi t
Fin
tudiant
di t
3

Introduction
Ncessit d
dutiliser
utiliser 100 variables de mme type pour saisir les notes
de tous les tudiants,
ce q
qui augmente
g
la taille de lalgorithme
g

Une nouvelle structure permettant de ranger les notes


d tudiants.
des
d

Tableau mono-dimensionnel
mono dimensionnel ou vecteur
Lorsque les donnes sont nombreuses et de mme type, afin
d'viter de multiplier le nombre des variables, on les regroupe dans
un tableau
Dfi i i
Dfinition
Un tableau mono-dimensionnel ou vecteur est une manire de
ranger des
d lments
l
ou des
d valeurs
l
d mme type, ill regroupe ces
de
lments dans une structure fixe et permet daccder chaque
lment par llintermdiaire
intermdiaire de son rang ou indice.

Tableau mono-dimensionnel
mono dimensionnel ou vecteur
Le type d'un tableau prcise le type (commun) de tous les
lments
lments.
12

10

15

7.5

20

3.5

17

Nom tableau
N
bl
Ex. Notes

8
7

4
8

IIndice
di tableau
bl
Ex. 0..9

Syntaxe :
tableau [borne_inf .. borne_sup] de type_des_lments

6
9

Type tableau
T
bl
Ex. rel

Tableau mono-dimensionnel ou vecteur


`

Exemple :
45

54

-56

22

134

49

12

90

-26

Chacun des dix nombres du tableau est repr


p par
p son rang,
g,
appel indice

Dclaration : Tab : tableau [0..9] de entier


Pour accder un lment du tableau, il suffit de prciser entre
crochets l'indice de la case contenant cet lment.
Exemple :
Pour accder au 5me lment ((22),
), on crit : Tab[4]
[4]

`
`

Tableau mono-dimensionnel ou vecteur


Les instructions de lecture,, criture et affectation s'appliquent
pp q
aux
tableaux comme aux variables.

x Tab[0]
[ ]

La variable
L
bl x prend
d la
l valeur
l
d
du premier lment
l
d
du tableau,
bl
c'est
' d
dire
: 45
Tab[6] 43
Cette instruction a modifie le contenu du tableau

Alg rithm traitant


Algorithmes
tr it nt un Tableau
T bl u mono-dimensionnel
m n dim n i nn l
Problme de parcours dun tableau mono-dimensionnel
T un tableau n lments.
Algorithme Parcours
Var
i : entier,
T : tableau
bl
[0..n-1]
[0 1] d
de type_lment,
l
Dbut
i 0;
tantque i <= (n-1) faire
Traiter (T[i]) ;
ii+1;
fintantque
Fin

Algorithme Parcours
Var
i : entier,
T : tableau
bl
[0..n-1]
[0 1] d
de type_lment,
l
Dbut

Fin

pour i 0 n-1 faire


Traiter (T[i]) ;
finpour

Alg rithm traitant


Algorithmes
tr it nt un Tableau
T bl u mono-dimensionnel
m n dim n i nn l
Dans l'exemple suivant, le programme initialise un un tous les
lments d'un tableau de n lments :
Algorithme InitTableau
Var
i : entier,
tab : tableau [0..n-1] dentier
Dbut
pour i 0 n-1 faire
tab[i] 0
finpour
Fin
10

Alg rithm traitant


Algorithmes
tr it nt un Tableau
T bl u mono-dimensionnel
m n dim n i nn l
Algorithmes daccs un lment dun tableau
[
], laccs T est dfini p
par T[i].
[]
Soit un tableau T[0..n-1],
Soit val une variable contenant une valeur de mme type que celles
contenues dans T,
on veut dterminer un indice i [0..n-1] sil existe T[i] = val.

Cas
T non ordonn
11

Cas
T ordonn

Alg rithm traitant


Algorithmes
tr it nt un Tableau
T bl u mono-dimensionnel
m n dim n i nn l
Algorithmes d
daccs
accs un lment d
dun
un tableau
Recherche squentielle dans un Tableau non ordonn
l (i 1) premiers
les
i l
lments d
du tableau
bl
T traits
i et vall
T[0..i-1]
i <= (n-1),

i = n,

ii+1

val T[0..n-1]

llalgorithme
algorithme est termin
et val T.
12

T[i] = val,
val T[0..n-1],

lalgorithme sarrte
et val est trouv

T[i] val,
val T[0..i],

Alg rithm traitant


Algorithmes
tr it nt un Tableau
T bl u mono-dimensionnel
m n dim n i nn l
Algorithmes d
daccs
accs un lment d
dun
un tableau
Recherche squentielle dans un Tableau non ordonn

13

ALGORITHME RechercheSeq
Var
T : tableau [0..n-1] dentiers
val, i : entiers
Trouve : boolen
Dbut
i0;
trouve faux
f
;
tantque (i <= n-1) ET (non Trouve) faire
si T[i] = val alors
T
Trouve
vrai;
i
sinon
ii+1;
finsi
Fintantque
Fin

Alg rithm traitant


Algorithmes
tr it nt un Tableau
T bl u mono-dimensionnel
m n dim n i nn l
Algorithmes d
daccs
accs un lment d
dun
un tableau
Recherche squentielle dans un Tableau non ordonn

Cas dun tableau non vide


On peut prvoir la fin du
tableau grce la variable i

ALGORITHME RechercheSeq
Var
T : tableau [0..n
[0..n-1]
1] dentiers
d entiers
elem, i: entier
Trouve: boolen
Dbut
i 0;
tantque (T[i] elem) ET (i < n-1) faire
ii+1;
fintantque
Trouv (T[i] = elem) ;
Fin

14

Alg rithm traitant


Algorithmes
tr it nt un Tableau
T bl u mono-dimensionnel
m n dim n i nn l
Algorithmes daccs un lment dun tableau
Recherche squentielle dans un Tableau ordonn
les (i 1) premiers lments du tableau T traits et
T[0..i-1] < elem

i = n,

i <= n-1,

T[i] >= elem,

lalgorithme est termin


et T[0..n-1] < elem, elem T.

on a ttrouv li
lindice
di i ttell que
T[0..i-1] < elem <= T[i..n-1],

vrifier lgalit : elem = T[i]


15

ii+1
T[i] < elem,
T[0..i] < elem

Alg rithm traitant


Algorithmes
tr it nt un Tableau
T bl u mono-dimensionnel
m n dim n i nn l
Algorithmes d
daccs
accs un lment d
dun
un tableau
Recherche squentielle dans un Tableau ordonn

16

ALGORITHME RechercheSeqTrie
Var
T : tableau [0..n-1] de entier
i, elem : entiers
T
Trouve
: boolen
b l
Dbut
si elem > T[n-1] alors
T
Trouve
faux
f
sinon
i0
tantque T[i] < elem faire
ii+1
fintantque
Trouv (T[i] = elem)
finsi
Fin

Alg rithm traitant


Algorithmes
tr it nt un Tableau
T bl u mono-dimensionnel
m n dim n i nn l
Insrer une valeur dans un tableau tri
Un tableau T de dimension N+1 contient N valeurs entires tries
par ordre croissant; La (N+1)ime valeur est indfinie.
IInsrer
une valeur
l
VAL d
donne
au clavier
l i d
dans lle tableau
bl
Td
de manire
i
obtenir un tableau de N+1 valeurs tries.

17

Alg rithm traitant


Algorithmes
tr it nt un Tableau
T bl u mono-dimensionnel
m n dim n i nn l
Insrer une valeur dans un tableau tri
1. Lecture des lments du tableau dans un ordre croissant
2. Lecture de la valeur rechercher (VAL)
3 Dplacer les lments plus grands que VAL d'une
3.
d une position vers ll'arrire
arrire.
4. VAL est copi la position du dernier lment dplac
5. Afficher le nouveau tableau

18

T bl u deux
Tableau
d u dim
dimensions
n i n :m
matrice
tri

Nbre de
lignes

Nbre de colonnes

Dclaration dun tableau deux dimensions


Var
T b : tableau
Tab
bl
[0 .. NMAX
NMAX, 0 .. MMAX] d
de type_des_lments
d
l
19

Rcapitulons .
Dclaration dun tableau mono-dimensionnel
Var
V
Tab : tableau [0 .. NMAX] de type_des_lments
OU

Type
Tab : tableau [0 .. NMAX] de type_des_lments
Var
T : Tab

Dclaration dun tableau deux dimensions


Var
Tab : tableau [0 .. NMAX, 0 .. MMAX] de type_des_lments

20

Rcapitulons .
Remarques
1.

2
2.

3.

21

Allocation statique de la mmoire : espace mmoire rserve au


dbut du prog une fois pour toute
Taille fixe du tableau : NMAX
NMAX-1
1 : limiter le nombre dlments
d lments que
le prog peut traiter
Les tableaux sont souvent surdimensionns par rapport leur
usage courant
Il faut valuer la taille du tableau pour viter un pbm de saturation
de la machine
Exemple
un tableau de dimensions 1000x 500 dentiers possde une taille
da peu prs : 2Mo (1000x500x4 octets),
La dclaration de cette variable rserve 2Mo dans la mmoire
centrale .

Rcapitulons .
Gestion dun tableau
Initialisation dun
d un tableau
Algorithme InitTableau

Algorithme InitTableau

Const

Const

(N 100): entier
Var
i : entier,
entier
Tab : tableau [0..N-1] dentier
Dbut
Pour i 0 N
N-11 faire
Tab[i] 0
FinPour
Fin

(N ,M 100): entier
Var
i j : entier
i,j
entier,
Tab : tableau [0..N-1, 0..M-1] dentier
Dbut
Pour i 0 N
N-11 faire
Pour j 0 M-1 faire
Tab[i,j] 0
FinPour
FinPour
Fin

22

Rcapitulons .
Gestion dun
d un tableau
Saisie des lments dun tableau :

Nombre de donnes (nb) est connu lavance


l avance : boucle Pour
Nombre de donnes (nb) inconnu : Tant que

Exemple : charger les notes des


tudiants, user saisit une srie de
notes termine par -1 (quil ne faut
pas ranger)

Var
i ,nb : entier,
Tab : tableau [0..N-1] dentier
Dbut
nb 0
i0
Ecrire("Entrer la liste des notes (-1 pour terminer ) : ")
TantQue (nb<> -1) Faire
Lire(nb)
Si nb <>-1 alors
Tab[i] nb
Fin Si
FinTantQue
nbnotes i

Fin
23

Rcapitulons .
Gestion dun
d un tableau
Exemple (suite) :
- Le surdimensionnement du tableau : une seule partie contiendra des donnes
- Contenu des autres cases doit tre ignor
- Solution : utiliser une variable qui indique le nombre dlments contenus dans le tableau

Var
nbnotes ,nb : entier,
Tab : tableau [0..N-1] dentier
Dbut

On peut retirer le test :


- on range la valeur -1
- on diminue le nombre
de donnes de 1

nb 0
nbnotes 0
E i ("E t la
Ecrire("Entrer
l liste
li t des
d notes
t (-1
( 1 pour tterminer
i
) : ")
TantQue (nb<> -1) et
TantQue (nb<> -1) Faire
nbnotes < N Faire
Lire(nb)
Si nb <>-1 alors
Tab[nbnotes ] nb
Eviter dpassement de la taille
nbnotes nbnotes +1
Fin Si
Fi T tQ
FinTantQue

Fin

24

Rcapitulons .
Gestion dun tableau
Affichage des lments dun
d un tableau :
Algorithme AfficheTableau

Algorithme AfficheTableau

Const

Const

(N 100): entier
Var
i nb : entier,
i,nb
entier
Tab : tableau [0..N-1] dentier
Dbut
Pour i 0 nb faire
Ecrire(Tab[i])
FinPour
Fin

(N ,M 100): entier
Var
i j nbc,
i,j,
nbc nbl : entier,
entier
Tab : tableau [0..N-1, 0..M-1] dentier
Dbut
Pour i 0 nbc faire
Pour j 0 nbl faire
Ecrire(Tab[i,j])
FinPour
FinPour
Fin

25

Rcapitulons .
Recherche dune valeur dans un tableau
Recherche squentielle dans un Tableau non ordonn
ALGORITHME RechercheSeq
Var
T : tableau
t bl u [0..N-1]
[0 N 1] d
dentiers
ti
elem, i,nb: entier
Trouve: boolen
Dbut
i 0;
tantque (T[i] elem) ET (i < nb-1) faire
ii+1;
fintantque
Trouv ((T[i]
[ ] = elem)) ;
Fin

26

Rcapitulons .
Recherche dune valeur dans un tableau
Recherche squentielle dans un Tableau Tri
ALGORITHME RechercheSeqTrie
Var
T : tableau [0..N-1] de entier
i, nb, elem : entier
Trouve : boolen
Dbut
Db
si elem > T[nb-1] alors
Trouve faux
sinon
in n
i0
Tantque T[i] < elem faire
ii+1
FinTantque
Trouv (T[i] = elem)
FinSi
Fin
27

Rcapitulons .
Recherche dune valeur dans un tableau
Recherche dichotomique dans un Tableau Tri

28

ALGORITHME RechercheDicho
Var
T : tableau [0..N-1] de entier
elem ,Binf, bsup : entier
Trouve : boolen
Dbut
p nb-1;; Trouve faux
binf0;; bsup
Rpeter
mil (binf+bsup) div 2
si elem=T[mil] alors
trouve vrai
sinon Si elem<T[mil] alors
bsup mil-1
sinon binf mil+1
Finsi
Finsi
J
Jusqu
(Trouve
(T
ou binf>bsup)
b f b )
Fin

Rcapitulons .
Insertion dun nouvel lment
Cas Tableau non tri
1. Ajout la fin du tableau
2. Dduire le Num de la case de rangement
g
partir
p
du nombre dlments de T

Cas Tableau Tri


1. Lecture des lments du tableau dans un ordre croissant
2. Lecture de la valeur rechercher (val)
3. Dplacer les lments plus grands que VAL d'une position vers l'arrire.
4. VAL est copi la position du dernier lment dplac
5. Afficher le nouveau tableau

29

Vous aimerez peut-être aussi