Beruflich Dokumente
Kultur Dokumente
1. Introduction
Supposons que nous avons dterminer partir de 30 notes fournies en entre, le nombre
dtudiants qui ont une note suprieure la moyenne de la classe.
Pour parvenir un tel rsultat, nous devons :
1. Lire les 30 notes
2. Dterminer la moyenne de la classe : m
3. Compter combien parmi les 30 notes sont suprieures la moyenne m.
Il faut donc conserver les notes en mmoire afin quelles soient accessibles durant lexcution
du programme.
Solution 1 : utiliser 30 variables relles nommes x1, x2, , x30
Cette faon de faire prsente deux inconvnients :
- il faut trouver un nom de variable par note ;
- il nexiste aucun lien entre ces diffrentes valeurs. Or, dans certains cas, on est appel
appliquer le mme traitement lensemble ou une partie de ces valeurs.
Solution 2 : utiliser la notion de tableau qui consiste :
- attribuer un seul nom lensemble des 30 notes, par exemple Tnote,
- reprer chaque note par ce nom suivi entre crochets dun numro entre 1 et 30 : Tnote[1],
Tnote[2], Tnote[30].
Un ensemble de valeurs portant ainsi le mme nom de variable et repres par un nombre,
sappelle un tableau, et le nombre qui sert a reprer chaque valeur sappelle un indice.
Un tableau de taille n est une structure trs simple constitue de n emplacements conscutifs
en mmoire. Il est donc possible d'accder un lment d'un tableau en temps constant
pourvu que l'on connaisse sa position (ou indice).
Un tableau est donc une structure trs simple et trs efficace. Il n'est cependant pas possible
de modifier la taille d'un tableau, ce qui est gnant pour un certain nombre d'algorithmes. On
dit cette structure est statique. Le nombre d'lments qu'elle contient ne peut pas varier.
Un tableau sera ainsi un ensemble de donnes ayant les mmes caractristiques (mme type)
et pouvant tre lies entre elles.
Par exemple : les notes dun lves, les prix des articles dun magasin
Les informations seront alors stockes ensemble sous un mme nom, seule leur position dans
le tableau les diffrenciera. Lnorme avantage des tableaux, cest quon va pouvoir les traiter
en faisant des boucles.
2. Tableaux unidimensionnels
Un tableau une dimension, appel aussi vecteur, est une structure de donnes constitue
dun nombre fini dlments de mme type et directement accessibles par leurs indices ou
indexes.
2.1. Dclaration d'un tableau
11
Var
Nom_tab : Tableau [nombre d'lments] de Type_lments
Exemple:
Tnote : Tableau[30] de Rel
Schmatiquement, ce tableau peut tre reprsent comme suit :
Tnote
10.5
1
8
2
...
11
30
Remarque:
Il est galement possible de dfinir un type tableau comme dans lexemple suivant :
Const
n = 10
Type
Tab = Tableau[n] de Entier
Var
T : Tab
En pascal:
Const
N=10;
Type
Tab=array[1..N] of integer;
Var
T: Tab;
2.2. Identification d'un lment du tableau
Un tableau peut tre rempli lment par lment laide dune srie daffectations :
T[1] Valeur 1
T[2] Valeur 2
T[n] Valeur n
Il est galement possible de lire les lments du tableau partir du clavier grce une
procdure :
Procdure remplir (Var T : tab)
Var
i : Entier
Dbut
Pour i de 1 n Faire
Ecrire(Entrer un entier : )
Lire(T[i])
FinPour
12
Fin
2.4. Affichage des lments d'un tableau
Laffichage des lments dun tableau se fait galement lment par lment. Seulement, le
tableau constitue ici un paramtre donn et non pas un rsultat comme dans la procdure de
remplissage.
Procdure afficher (T : tab)
Var
i : Entier
Dbut
Pour i de 1 n Faire
Ecrire(T[i], " ")
FinPour
Fin
2.5. Recherche squentielle d'un lment dans un tableau
13
a- Tri bulle
re
itration
Aprs la 2 me itration
4
4
3
3
Aprs la 3 me itration
Aprs la 4
me
itration
5
5
2
2
Aprs la 1 re itration
Aprs la 2
me
Aprs la 3
me
Aprs la 4
me
itration
4
4
5
3
6
3
3
6
3
2
2
4
itration
itration
5
6
5
6
Cette mthode consiste prendre les lments de la liste un par un et insrer chacun dans sa
bonne place de faon que les lments traits forment une sous-liste trie.
Pour ce faire, on procde de la faon suivante :
- comparer et permuter si ncessaire T[1] et T[2] de faon placer le plus petit dans la case
dindice 1
- comparer et permuter si ncessaire llment T[3] avec ceux qui le prcdent dans lordre
(T[2] puis T[1]) afin de former une sous-liste trie T[1..3]
-
- comparer et permuter si ncessaire llment T[n] avec ceux qui le prcdent dans lordre
(T[n-1], T[n-2], ) afin dobtenir un tableau tri.
Procdure Tri_Insertion (Var T : Tab)
Var
i, j, x, pos : Entier
Dbut
Pour i de 2 n Faire
posi - 1
TantQue (pos>=1) et (T[pos]>T[i]) Faire
pos pos 1
FinTQ
pospos + 1
si pos <>i alors
xT[i]
Pour j de (i-1) pos [pas = -1] Faire
T[j+1] T[j]
FinPour
T[pos] x
FinSi
FinPour
15
Fin
[Pas = -1] signifie que le parcours se fait dans le sens dcroissant.
Trace d'excution
Tableau initial
Aprs la 1 re itration
4
4
Aprs la 2 me itration
Aprs la 3 me itration
Aprs la 4 me itration
4
3
5
5
6
4
5
5
2
2
6
2
6
16
FinSi
FinSi
Jusqu' (trouve = Vrai) ou (premier > dernier)
Si (trouve = Vrai) Alors
Ecrire(Indice = ,milieu)
Sinon
Ecrire(Elment introuvable)
FinSi
Fin.
Evaluation de l'algorithme
Dans le cas le plus dfavorable, lalgorithme se termine lorsque le nombre dlments p
prsents dans lintervalle [premier .. dernier] devient nul. A chaque itration, p est au moins
divis par 2. On est donc certain dobtenir le rsultat en au plus i itrations tel que n = 2i-1.
Do i=1+log2n (fonction inverse).
titre dexemple, si le tableau tri contient 1024 lments, il faudra au plus 1024 itrations
avec lalgorithme squentiel et au plus 11 avec lalgorithme dichotomique.
3. Tableaux multidimensionnels
Les tableaux multidimensionnels sont des tableaux qui contiennent des tableaux. Par exemple,
le tableau bidimensionnel (3 lignes et 4 colonnes) est en fait un tableau comportant 3
lments, chacun dentre eux tant un tableau de 4 lments :
Cette matrice peut tre dfinie de la faon suivante :
Const
Nl=3
Nc=4
Type
Mat = Tableau[Nl,Nc] de Rel
Var
Matrice : Mat
Chaque lment de la matrice est repr par deux indices :
- le premier indique le numro de la ligne
- le second indique le numro de la colonne.
Ainsi, Matrice[2,4] dsigne llment situ la 2me ligne et la 4me colonne.
Remarque:
Cette reprsentation est arbitraire, on a pu considrer que le premier indice dsigne la colonne
et le second dsigne la ligne. Dans ce cas, llment Matrice[2,4] nexiste plus.
En Pascal:
Const
Nl=3;
Nc=4;
Type
Mat = array[1..Nl,1..Nc] of real;
Var
Matrice : Mat;
17
2
5
8
3
6
9
sst
1
2
3
4
5
6
7
8
9
18
Exercice 1
Soit T un tableau contenant n lments de type entier et x un entier quelconque. Ecrire une
fonction Frquence(T : Tab ; x : Entier) : Entier qui retourne le nombre dapparitions de x
dans le tableau T.
Exercice 2
Ecrire une procdure permettant dclater un tableau T dentiers en deux tableaux :
- TP qui contiendra les lments positifs de T
- TN qui contiendra les lments ngatifs de T.
Exercice 3 : produit scalaire de 2 vecteurs
Ecrire une fonction ProdScal qui calcule le produit scalaire de deux vecteurs U et V
reprsents par deux tableaux.
Exercice 4 : norme dun vecteur
Ecrire une fonction NormVect qui calcule la norme dun vecteur et qui utilise la fonction
ProdScal de lexercice prcdent.
Exercice 5
Ecrire une procdure qui permet de remplir un tableau Fib par les 10 premiers termes de la
suite de Fibonacci. La suite de Fibonacci est dfinie par :
F0 = 1, F1 = 1 et Fn = Fn-2 + Fn-1 pour n >1
Exercice 6
19
Ecrire un algorithme permettant de trouver tous les nombres premiers infrieurs 400 et qui
utilise la mthode suivante :
Crer un tableau T pouvant contenir 400 entiers
Initialiser chaque lment du tableau son indice cest--dire T[1]=1 ; T[2]=2 ;
T[400]=400
Remplacer tous les multiples de 2 par 0 sauf 2
Chercher le prochain lment diffrent de 0 dans le tableau cest dire T[3] et remplacer
tous les multiples de 3 par 0 sauf 3
Continuer ce processus jusqu avoir T[i] 20 (20 tant la racine carre de 400)
Afficher tous les lments non nuls de T.
Exercice 7 : recherche de la plus grande monotonie dans un tableau Soit un tableau T de n
lments, dterminer la longueur de la premire plus longue squence de nombres rangs par
ordre croissant et le rang de son premier lment.
Exercice 8 : fusion de deux tableaux tris
Ecrire une procdure qui permet de fusionner deux tableaux tris A et B contenant
respectivement n et m lments. Le rsultat est un tableau tri C (n+m) lments.
20