Les Tableaux

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

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.

II. Les tableaux à une dimension :


1. Définition :
Un tableau unidimensionnel (vecteur) est une manière de ranger des éléments ou des valeurs de même type.
Il regroupe ces éléments dans une structure fixe et permet d’accéder à chaque élément par l’intermédiaire de
son rang ou indice.
Tableau A :

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 *)

En langage C : float T[20] ;

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

Le premier élément de T contient la valeur 10.5 ; on note T[1]  10.5


Le deuxième élément de T contient la valeur 8.2 ; on note T[2]  8.2
D’une manière générale, le Ième élément de T est noté T[I] et contient une valeur de type réel.
T[I] désigne également le contenu de la Ième case du tableau T.

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.

4. Opérations de base sur un tableau :

Pour représenter ces différentes opérations, on va utiliser un tableau T d’entiers.


a. Initialiser un Tableau :
Algorithme Ini_Tab
Constante N = Val const int N= 20 ;
Type TabEnt = Tableau [1..N] de Entier
Variable T : TabEnt
I : entier int T[N],i ;
Début
Pour I de 1 à N Faire for ( i=0 ; i<N ; i++)
T[I]  0 T[i]=0 ;
FinPour
Fin

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

c. Affichage les éléments d’un tableau :


On va afficher les éléments strictement positifs du tableau T

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

d. Additionner les éléments de deux tableaux :


On dispose de deux tableaux T1 et T2 et on veut réaliser la somme. Ça consiste à additionner les
éléments de même indice et les mémoriser dans un tableau T3.
Condition nécessaire : T1 et T2 de même taille.

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

e. Multiplier les éléments de deux tableaux :


Algorithme Mult_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

III. Techniques utilisées avec les tableaux :


1. Recherche dans un tableau :
a. Introduction :
Il s’agit de rechercher un élément saisi à partir du clavier, dans un tableau. Dès qu’on le trouve ce
n’est plus la peine de continuer le parcours du tableau ; on doit sortir et afficher un message
d’existence.
Deux façons de faire :
 soit faire une recherche séquentielle,
 soit faire une recherche plus optimisée dite recherche dichotomique et dans ce cas, il y a des
précautions et des actions préalables à faire.

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)
I1
Trouve  Faux
Tant que (I<=N) ET (Trouve = Faux) Faire
Si (T[I] <> X) Alors
II+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)
inf1
supN
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

2. Comparaison de deux Tableaux :


Pour écrire l’algorithme correspondant, on doit s’assurer que les deux tableaux soient de même type
et de même taille.
La comparaison va se faire sur les éléments des deux tableaux en les prenant deux à deux.

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 *)
I1
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

IV. Les Tableaux à deux dimensions : Les Matrices


1. Définition :
Un tableau à deux dimensions appelé également matrice 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 et son nombre de colonnes.
2. Représentation Algorithmique:
Constante
Nbr_Lig = Val1 (* Nombre de Lignes *)
Nbr_Col = Val2 (* Nombre de Colonnes *)
Type
Matrice = Tableau [1..Nbr_Lig, 1..Nbr_Col] de Type_élément_Matrice
Variable
M : Matrice
I, J : Entier (* I étant l’indice des lignes et J celui des colonnes *)

3. Représentation en langage C :
type_élément NomMatrice[Nombre_de_Lignes][ Nombre_de_Colonnes] ;
int M[10] [10] ;
Remarques :

 Le Type_Elément_Matrice peut être simple ou structuré.


 L’accès à un élément de la matrice ne peut se faire qu’avec deux indices : un élément est
identifié par son numéro de ligne et son numéro de colonne.
 Si M est la matrice, M[I,J] désigne l’élément de M situé à la Ième Ligne et à la Jème Colonne.

4. Opérations de base sur une Matrice :


On va supposer que le Type_Elément_Matrice est Entier

a. Initialiser une matrice :


Pour I de 1 à Nbr_Lig Faire for (i=0 ; i< Nbr_Lig ; i++)
Pour J de 1 à Nbr_Col Faire for (j=0 ; j< Nbr_Col ; j++)
M[I,J]  0 M[i] [j] =0 ;
FinPour
FinPour

b. Remplir une matrice :


Pour I de 1 à Nbr_Lig Faire for (i=0 ; i< Nbr_Lig ; i++)
Pour J de 1 à Nbr_Col Faire for (j=0 ; j< Nbr_Col ; j++)
Lire(M[I,J]) scanf("%d",&M[i] [j]) ;
FinPour
FinPour

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

c. Parcourir une matrice :

Par exemple, on veut afficher tous les éléments de la matrice dont la valeur est supérieure à 10.

Pour I de 1 à Nbr_Lig Faire for (i=0 ; i< Nbr_Lig ; i++)


Pour J de 1 à Nbr_Col Faire for (j=0 ; j< Nbr_Col ; j++)
Si (M[I,J] >= 10) Alors if(M[i] [j]>=10)
écrire(M[I,J]) printf("%d\t",M[i] [j]) ;
FinSi
FinPour
FinPour

d. Additionner deux matrices :

Condition nécessaire : les deux matrices doivent être de même type et de même taille.

Pour I de 1 à Nbr_Lig Faire


Pour J de 1 à Nbr_Col Faire
M[I,J]  M1[I,J] + M2[I,J]
FinPour
FinPour

Vous aimerez peut-être aussi