Académique Documents
Professionnel Documents
Culture Documents
Algorithmique Chap 5
Algorithmique Chap 5
Partie II : Algorithmique
Chapitre 5 : Tableaux
Introduction
Définition d’un tableau
Utilité des tableaux
Représentation mémoire d’un tableau
Tableau monodimensionnel
Tableau à deux dimensions
Tableau dynamique
Traitements sur les tableaux
Exercices corrigés
Tableau
Éléments Indices
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
Tableau monodimensionnel
• Définition
– Un tableau monodimensionnel est un tableau
ayant une seule dimension.
– Avec ce type de tableaux, on peut manipuler
des données vectorielles.
• Déclaration d’un tableau :
– Un tableau se déclare dans la section <Var>.
– Syntaxe :
Nom : Tableau de <valeur> <Type>;
• Exemples
A : Tableau de 10 Entier;
B : Tableau de 20 Réel;
C : Tableau de 4 Booléen;
• Une autre déclaration :
– La longueur du tableau peut être une constante
symbolique.
– Avantage : si l’on veut modifier la longueur du
tableau, on ne modifie que la valeur de la
constante.
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
Tableau monodimensionnel
• Exemple
Const
N : Entier = 10;
Var
A : Tableau de N Réel;
• Exemple 1
Algorithme Tableau;
Var
A : Tableau de 5 Entier = {2, 3, 5, 7, 11};
Début
Ecrire(A[1]); Ecrire(A[5]);
A[3] := A[1] + A[5];
Ecrire(A[3]);
Fin
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
Tableau monodimensionnel
• Définition
– Un tableau bidimensionnel est un tableau
ayant deux dimensions.
– Avec ce type de tableaux, on peut manipuler
des données matricielles.
• Déclaration d’un tableau bidimensionel :
– Syntaxe :
Nom : Tableau de <val1> × <val2> <Type>;
– <val1> est le nombre de lignes et <val2> est le
nombre de colonnes.
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
Tableau à deux dimensions
• Exemples
A : Tableau de 5 × 5 Entier;
• Une autre déclaration :
Const
N : Entier = 5; { Nombre de lignes }
M : Entier = 5; { Nombre de colones }
Var
A : Tableau de N × M Entier;
• Tableau dynamique
– Il arrive fréquemment que l’on ne connaisse pas
à l’avance le nombre d’éléments d’un tableau.
– Une première solution, moins efficace, consiste
à déclarer un tableau ayant une longueur assez
suffisante pour contenir les éléments.
– Normalement, on impose une borne
supérieure de la longueur du tableau.
• Première solution
Const
MAX : Entier = 1000;
Type
Tab : Tableau de MAX Réel;
Var
A : Tab;
• Inconvénients
– Parfois, il est difficile de connaître
parfaitement une borne supérieure du
nombre d’éléments erreur de
programmation.
– Parfois, l’espace du tableau est très grand et
l’espace réellement utilisé plus petit
gaspillage de la mémoire.
• Solution :
Algorithme Moyenne_Notes;
Var
Notes : Tableau de Réel;
{ Tableau dynamique }
M, S : Réel; { Moyenne et Somme }
i, N : Entier;
Début
Ecrire("Nombre de notes à saisir : ");
Lire(N);
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
Tableau dynamique
Pour i := 1 A N Faire
S := S + Notes[i];
Finpour
{ Calculer et afficher la moyenne des notes }
M := S / N ;
Ecrire("La moyenne des notes est : ", M);
{ Libérer le tableau Notes }
Libérer(Notes);
Fin
• Exercice 1
– Écrire un algorithme qui lit un tableau de 10 entiers,
puis calcul la plus grande distance entre ses éléments.
• Exercice 2
– Écrire un algorithme qui lit une matrice carrée d’ordre
5, puis teste si cette matrice est antisymétrique.
• Exercice 3
– Écrire un algorithme qui lit un nombre X (non nul) et
qui stocke ses chiffres dans un tableau (de droite à
droite). Ensuite, l’algorithme créera l’image de X à
partir de ce tableau.
Inclure <Math>
Algorithme Plus_grande_distance;
Const
N : Entier = 10;
Var
T : Tableau de N Entier;
d : Entier; { d = plus grande distance }
i, j, dij : Entier; { dij : distance entre T[i] et T[j] }
Début
Ecrire("Entrez les éléments du tableau T : ");
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
Corrigé exercice 1
Pour i := 1 A N Faire
Lire(T[i]);
Finpour
d := 0;
Pour i := 1 A N - 1 Faire
Pour j := i + 1 A N Faire
dij := Val_abs(T[i] - T[j]);
Si(d < dij) Alors
d := dij;
FinSi
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
Corrigé exercice 1
FinPour
FinPour
Ecrire("La plus grande distance est : " ,d);
Fin
Algorithme Matrice_antisymétrique;
Const
N : Entier = 5;
Var
M : Tableau de N × N Réel;
Antisym : Booléen;
i, j : Entier;
Début
Ecrire("Entrez les coefficients de la matrice : ");
Antisym := Faux;
Sinon
j := j + 1;
FinSi
FinTQ
Si(Antisym = Vrai) Alors
i := i + 1;
FinTQ
Si(Antisym = Vrai) Alors
Ecrire("Matrice antisymétrique");
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
Corrigé exercice 2
Sinon
Ecrire("Matrice non antisymétrique");
FinSi
Fin
Algorithme Image_Nombre;
Var
X, CX, Y, N, i : Entier;
T : Tableau de Entier; { Tableau dynamique }
Début
Ecrire("Entrez un nombre X : ");
Lire(X);
CX := X; N := 0;
Tant que (CX > 0) Faire
N := N + 1;
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK
Corrigé exercice 3
CX := CX div 10;
FinTQ
Allouer(T, N, Entier);
Y := 0; CX := X;
Pour i := 1 A N Faire
T[i] := CX mod 10;
X := CX div 10;
Y := 10 * Y + T[i];
FinPour
Ecrire("L’image de ", X, " est : ", Y);
Libérer(T);
Fin
Architecture des ordinateurs & Algorithmique Pr. DARGHAM Abdelmajid ENSAK