LE TYPE TABLEAU

publicité
LES TABLEAUX
LE TYPE TABLEAU
Plan du chapitre :
I.
II.
III.
IV.
V.
Problématique
Définition
Les tableaux à une dimension
Techniques utilisées avec les tableaux
Les tableaux a deux dimensions
Objectifs du chapitre :
 Connaitre le type tableau et son utilité pour resoudre des problèmes en algorithmique.
 Manipuler les différentes techniques et opérations de base sur les tableaux.
 Construire des algorithmes s’appuyant sur le type tableau à une et à deux dimensions.
1
LES TABLEAUX
I. Problématique :
On considère le problème suivant :
Il s’agit de calculer la moyenne d’un nombre fini d’étudiants d’une classe, puis d’afficher les
étudiants par ordre de mérite : de la plus forte moyenne jusqu’à la plus faible. Quelle solution
allez-vous proposer ?
On peut utiliser une structure répétitive qui permettra de traiter la moyenne de chaque étudiant
(calcul et affichage). Cependant, l’affichage des étudiants par ordre de mérite nécessite la
disponibilité de toutes les moyennes déjà calculées.
Or, avec les structures de données vues jusqu'à maintenant, la mémorisation de ces moyennes
semblent difficile à faire : il faut déclarer autant de variables moyennes que d’étudiants ; dans ce
cas, on peut même s’en passer de la boucle et on écrira autant de blocs d’instructions que de
nombre d’étudiants. Ce qui donne un algorithme de mauvaise qualité !
Pour remédier à cette fameuse proposition !!, on doit utiliser une structure de données capable de
mémoriser les moyennes dans un seul endroit, pour les retrouver ultérieurement et effectuer le
traitement souhaité.
 Une telle structure est appelée Tableau.
II. 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.
III. 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
LES TABLEAUX
2.
Représentation algorithmique :
Type
Nomtableau = Tableau [borne_inf .. borne_sup] de type_élément
Variable
Nomvar : Nomtableau
Indice : entier
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 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 08.2 09.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 08.2 ; on note T[2]  08.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.
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 connu à l’avance.
3.
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
Type TabEnt = Tableau [1..N] de Entier
Variable T : TabEnt
I : entier
Début
Pour I de 1 à N Faire
T[I]  0
FinPour
Fin
3
LES TABLEAUX
b.
Remplir un Tableau :
Algorithme Remp_Tab
Constante N = Val
Type TabEnt = Tableau [1..N] de Entier
Variable T : TabEnt
I : entier
Début
Pour I de 1 à N Faire
Lire(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.
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
Type TabEnt = Tableau [1..N] de Entier
Variable T : TabEnt
I : entier
Début
Pour I de 1 à N Faire
Si T(I) > 0 Alors
écrire(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
4
LES TABLEAUX
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
4.
Exercice d’application :
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.
IV. 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
5
LES TABLEAUX
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.
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
6
LES TABLEAUX
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
V. 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 *)
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.

3.
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
Pour J de 1 à Nbr_Col Faire
M[I,J]  0
7
LES TABLEAUX
FinPour
FinPour
b. Remplir une matrice :
Pour I de 1 à Nbr_Lig Faire
Pour J de 1 à Nbr_Col Faire
Lire(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.
c. Parcourir une matrice :
Par exemple, on veut afficher tous les éléments de la matrice dont la valeur est supérieur à 10.
Pour I de 1 à Nbr_Lig Faire
Pour J de 1 à Nbr_Col Faire
Si (M[I,J] >= 10) Alors
écrire(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
8
Téléchargement