Les Tableaux
Les Tableaux
Les Tableaux
LES TABLEAUX
I. Définition :
Un tableau est une structure de données permettant de regrouper sous un même nom un nombre fini
d’éléments de même type.
Dans ce chapitre, on va évoquer deux types de tableaux :
les tableaux à une dimension appelés également Vecteurs,
les tableaux à deux dimensions appelés également Matrices.
Remarques :
Un tableau est constitué d’un nombre fini de cases contigües situé en mémoire centrale.
Un tableau est caractérisé par :
son nom
sa taille (borne inférieure et borne supérieure connues à l’avance)
ses éléments : chaque élément est défini par son type et son contenu.
L’accès à un élément du tableau se fait à l’aide d’un indice.
Les composantes de A
2. Représentation algorithmique :
Type
Nomtableau = Tableau [borne_inf .. borne_sup] de type_élément
Variable
Nomvar : Nomtableau
Indice : entier
3. Représentation en langage C :
type_élément Nomtableau[Taille] ;
int Tab[50] ;
float Tab[20] ;
Exemple :
On veut déclarer un tableau T de moyennes
Type
Tab_Moy = Tableau [1..20] de réel
Variable
T : Tab_Moy
I : entier (* indice du tableau T *)
1
LES TABLEAUX
En mémoire, on va avoir une variable T comportant 20 cases et dans chacune on placera une
moyenne qui est de type réel.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
T 10.5 8.2 9.7 11.0 10.5 13.6
Remarques :
L’indice du tableau doit être obligatoirement de type entier.
Il serait préférable que cet indice soit initialisé à la valeur 1 en algorithmique et 0 en langage C.
Un tableau, s’il est rempli, ne doit pas faire l’objet d’une lecture supplémentaire sauf s’il s’agit
d’une opération de mise à jour où on doit modifier le contenu des éléments du tableau.
La taille du tableau doit être connue à l’avance.
b. Remplir un Tableau :
Algorithme Remp_Tab
Constante N = Val const int N= 20 ;
Type TabEnt = Tableau [1..N] de Entier
Variable T : TabEnt int T[N],i ;
I : entier
Début
Pour I de 1 à N Faire for ( i=0 ; i<N ; i++)
Ecrire("T[" ,I, "]=") { printf("T[%d]= ",i) ;
Lire(T[I]) scanf("%d",&T[i]) ;
FinPour }
Fin
Remarque :
Lire(T[I]) consiste à entrer une valeur à partir du clavier et la mémoriser dans la Ième case du tableau
T.
2
LES TABLEAUX
Algorithme Aff_Tab
Constante N = Val const int N= 20 ;
Type TabEnt = Tableau [1..N] de Entier
Variable T : TabEnt int T[N],i ;
I : entier
Début
Pour I de 1 à N Faire for ( i=0 ; i<N ; i++)
Si T(I) > 0 Alors if(T[i]>0 )
écrire(T[I]) printf("%d\t",T[i]) ;
FinSi
FinPour
Fin
Algorithme Add_Tab
Constante N = Val
Type TabEnt = Tableau [1..N] de Entier
Variable
T1, T2, T3 : TabEnt
I : entier
Début
Pour I de 1 à N Faire
T3[I] T1[I] + T2[I]
FinPour
Fin
5. Exercice d’application :
a- On dispose d’un tableau d’entiers T et on veut afficher le nombre d’éléments positifs et le
nombre d’éléments négatifs contenus dans le tableau.
b- On dispose d’un tableau d’entiers T et on veut afficher le max et la min du T.
3
LES TABLEAUX
b. Recherche Séquentielle :
Algorithme Rech_Seq
Constante N = 20
Type TabEnt = Tableau [1..N] de Entier
Variable T : TabEnt
I , X: entier (* X est l’élément à chercher dans le tableau *)
Trouve : Booléen (*cette variable va nous permettre de sortir dès qu’on trouve X*)
Début
Lire(X)
I1
Trouve Faux
Tant que (I<=N) ET (Trouve = Faux) Faire
Si (T[I] <> X) Alors
II+1
Sinon
Trouve Vrai
FinSi
FinTantQue
Si (Trouve = Vrai) Alors
Ecrire(X, ‘appartient à T’)
Sinon
Ecrire (X,’ne se trouve pas dans T’)
FinSi
Fin
c. Recherche Dichotomique :
Pour pouvoir appliquer la recherche dichotomique, il faut que :
le tableau T soit Rempli et
le tableau soit Trié.
Il s’agit d’une recherche qui consiste à réduire le temps de recherche d’un élément X dans un
tableau T qui doit être obligatoirement trié.
On commence par comparer X avec le contenu de l’élément du milieu : si X est inférieur à cette
valeur alors on va continuer la recherche dans la partie gauche du tableau T avec modification de la
borne supérieure, sinon on continuera la recherche dans partie droite du tableau avec modification
de la valeur de la borne inférieure.
On s’arrêtera quand X serait égale à la valeur du milieu ou quand on dépasse les bornes du tableau.
4
LES TABLEAUX
Algorithme Dichoto
Constante N=Val1 , M= Val2
Type TabEnt = Tableau [1..N] de Entier
Variable T : TabEnt
I, inf, sup, mil, X : entier (* X est l’élément à chercher dans le tableau *)
Début
Lire(X)
inf1
supN
Répéter
mil (inf+sup) div 2
Si X < T(mil) Alors
sup mil – 1
Sinon
inf mil +1
FinSi
Jusqu’à (X=T[mil]) ou (inf > sup)
Fin
Algorithme Compare
Constante N=20
Type Tab_Ent = Tableau[1..N] de Entier
Variable T1,T2 : Tab_Ent
I : entier
Egal : Booléen
Début (* on suppose que T1 et T2 déjà remplis *)
I1
Egal Vrai
Tant que (I<=N) ET (Egal=Vrai) Faire
Si (T1[I] <> T2[I]) Alors
Egal Faux
Sinon I I + 1
FinSi
FinTantQue
Si (Egal=Vrai) Alors
écrire(‘T1 et T2 sont égaux’)
Sinon écrire(‘T1 et T2 sont différents’)
FinSi
Fin
3. Exercice d’application :
Traduire les algorithmes (Recherche Séquentielle, Recherche Dichotomique, Comparaison de deux
Tableaux) en langage C.
5
LES TABLEAUX
3. Représentation en langage C :
type_élément NomMatrice[Nombre_de_Lignes][ Nombre_de_Colonnes] ;
int M[10] [10] ;
Remarques :
Remarque :
La primitive Lire(M[I,J]) consiste à lire à partir du clavier un élément et le placer à la Ième Ligne et à
la Jème Colonne.
6
LES TABLEAUX
Par exemple, on veut afficher tous les éléments de la matrice dont la valeur est supérieure à 10.
Condition nécessaire : les deux matrices doivent être de même type et de même taille.