• Aucun résultat trouvé

Tableaux à deux dimensions (matrices)

6.1 Tableaux

6.1.2 Tableaux à deux dimensions (matrices)

Les tableaux manipulés jusqu’à présent sont à une dimension (vecteurs). Par ailleurs, lorsqu’un traitement utilise plusieurs tableaux à une dimension ayant le même nombre d’éléments et subis-

35 sant le même traitement, on utilise un seul tableau à deux dimensions (matrice).

Définition:

On appelle matrice A d’ordre m×n, notée A(m, n), un ensemble de m×n éléments rangés dans des cases disposées en m lignes et n colonnes.

Notons que l’élément d’une matrice, noté A[i, j], est repéré par deux indices; le premier indique la ième ligne et le second indique la jème colonne.

Exemple 32: Soit A une matrice d’ordre 3×4

12 -4 1 -8 3 -20 0 -6 -5 -4 10 7

A[i, j] est le contenu (l’élément) de la ième ligne et la jemecolonne.

T[1, 1] =12, c’est à dire l’élément de la première ligne et la première colonne. T[2, 3] =0 et T[3, 4] =7.

Déclaration d’une matrice :

La déclaration d’une variable de type tableau à deux dimensions (matrice) se fait par l’une des deux syntaxes suivantes:

V a r i a b l e s < i d e n _ m a t >: t a b l e a u [ B _ i n f _ l .. B_sup_l , B _ i n f _ c .. B _ s u p _ c ] de < Type >.

ou b i e n par :

V a r i a b l e s < i d e n _ m a t >: t a b l e a u [ B _ i n f _ l .. B _ s u p _ l ] de t a b l e a u [ B _ i n f _ c .. B _ s u p _ c ] de < Type >.

Où - < i d e n _ m a t > est le nom de la m a t r i c e ;

- < B_inf_l > est le n u m é r o de la p r e m i è r e l i g n e ; - < B_sup_l > est le n u m é r o de la d e r n i è r e l i g n e ; - < B_inf_c > est le n u m é r o de la p r e m i è r e c o l o n n e ; - < B_sup_c > est le n u m é r o de la d e r n i è r e c o l o n n e ; - < Type > est le t y p e des é l é m e n t s de la m a t r i c e ;

Notons que la première syntaxe est celle qu’on utilise souvent.

De même que pour les vecteurs, on doit déclarer les indices de parcours des lignes et des colonnes qui peuvent être de type entier ou caractère.

< i d e t i f i c a t e u r _ i n d i c e _ l i g n e > : < Type >. < i d e t i f i c a t e u r _ i n d i c e _ c o l o n n e > : < Type >. Exemple 33: V a r i a b l e s M : T a b l e a u [ 1 . . 1 0 , 1 . . 4 ] de r é e l s i , j : e n t i e r s ou b i e n M : T a b l e a u [ 1 . . 1 0 ] de t a b l e a u [ 1 . . 4 ] de r é e l s i , j : e n t i e r s

M est une matrice de 10 lignes et de 4 colonnes, ses cases sont destinées à contenir des éléments de type réel.

M[i, j] est le contenu de la case qui se trouve à la ligne i et la colonne j. Remarque 7:

Si on a plusieurs matrices de même ordre et de même type, on peut les déclarer à la fois en les séparant par des virgules.

Exemple 34: Soient M1, M2et M3trois matrices d’ordre 5×4 de même type (réel), leur déclara-

tion peut être faite comme suit : Variables M1, M2, M3 : Tableau [1..5,1..4] de réels.

Initialisation d’un élément d’une matrice:

Comme dans le cas d’un vecteur, l’initialisation d’un élément d’une matrice se fait par l’affectation selon la syntaxe suivante

<identi f icateur > [Indice−ligne, indice−colonne] ←− <expression >

Exemple 35: Soit M une matrice d’ordre 2×3 M[1, 1] ←− −5 M[1, 2] ←−2 M[1, 3] ←−10 M[2, 1] ←− M[1, 2] +6 M[2, 2] ←− M[1, 1] +M[2, 1] M[2, 3] ←− M[1, 1] +M[2, 2]

Le déroulement de cet exemple nous donne la matrice suivante: -5 2 10

37

Lecture et affichage des éléments d’une matrice:

Une matrice de m lignes et de n colonnes est identique à m vecteurs superposés de n cases chacun. Par conséquent, le remplissage d’une matrice se fait, ligne par ligne ou colonne par colonne, par l’instruction suivante:

P o u r i a l l a n t de 1 à m f a i r e

P o u r j a l l a n t de 1 à n f a i r e L i r e ( A [ i , j ])

Où l’on utilise deux boucles Pour imbriquées où la première boucle englobe la seconde. L’indice i est utilisé pour le parcours des lignes et j pour les colonnes.

Déroulement du remplissage

- Initialement l’indice i de la première boucle prend la valeur 1 (première ligne).

- L’indice j de la boucle englobée progresse de 1 à n et l’instruction Lire est exécutée n fois, réal- isant ainsi le remplissage (lecture) de la première ligne.

- L’indice i est incrémenté en prenant la valeur 2 (deuxième ligne).

- A nouveau, l’indice j progresse de 1 à n et l’instruction Lire est exécutée encore n fois, en effec- tuant ainsi le remplissage de la seconde ligne.

- De la même manière, l’opération du remplissage se poursuivra jusqu’à la dernière ligne (i=m). - De même que pour le remplissage d’une matrice, l’affichage de son contenu se fait par l’instruction:

P o u r i a l l a n t de 1 à m f a i r e

P o u r j a l l a n t de 1 à n f a i r e É c r i r e ( A [ i , j ])

Quelques opérations sur les matrices :

Tout comme dans le cas des vecteurs, plusieurs opérations peuvent être appliquées sur les ma- trices. Nous illustrons dans ce qui suit le calcul de la somme des éléments de la matrice et la recherche du maximum de la matrice.

1. Somme des éléments d’une matrice : le calcul de la somme des éléments d’une matrice de m lignes et de n colonnes est le même que celui des vecteurs. L’addition des éléments de la matrice se fait ligne par ligne, et le résultat final nous donne un nombre et non une matrice. Exemple 36: Algorithme qui calcule et affiche la somme (S) des éléments d’une matrice M d’ordre 2×3.

Algorithme Som

Variables M : tableau [1..2,1..3] d’entiers S, i, j : entiers

Début

Ecrire (0 Introduire les éléments de la matrice M 0) Pour i ←− 1 à 2 faire Pour j←− 1 à 3 faire Lire (M[i, j]) S ←− 0 Pour i ←− 1 à 2 faire Pour j←− 1 à 3 faire S←− S + M[i, j]

Ecrire (0 La somme des éléments de la matrice M est S= 0, S) Fin.

Déroulement de l’algorithme: - Entrée des éléments de la matrice. - Initialisation de la variable S.

- Addition des éléments de la matrice ligne par ligne. Application: Soit M une matrice d’ordre 2×3

-5 2 10 8 -3 8

Le déroulement de la somme des éléments de cette matrice s’effectue comme suit : i j M[i, j] Somme (S) 1 1 −5 −5 1 2 2 −3 1 3 10 7 2 1 8 15 2 2 −3 12 2 3 8 20

La somme finale des éléments de la matrice M est 20. 2. Recherche du maximum des éléments d’une matrice :

39 la méthode de parcours diffère. Les étapes de la recherche d’un maximum d’une matrices est les suivantes:

1- On fait entrer les éléments de la matrice.

2- On utilise la variable Max. On suppose que l’élément de la première ligne et la première colonne est le maximum et on l’affecte à cette variable.

3- Tant qu’il reste des lignes à examiner faire

3.1- Tant qu’il reste des éléments à examiner sur la ligne courante faire 3.1.1- Si l’élément courant est supérieur au maximum alors

- Affecter cet élément à la variable Max - Sinon conserver la valeur de Max. 3.1.2- Passer à l’élément suivant

3.1.3- Refaire l’étape 3.1. 3.2- Passer à ligne suivante. 3.3- Refaire toutes les étapes de 3.

On continue la même opération avec le reste des colonnes de la première ligne puis avec les colonnes du reste des lignes de la matrice.

Exemple 37: Algorithme qui recherche le maximum des éléments d’une matrice M d’ordre 2×3.

Algorithme Max

Variables M : tableau [1..2,1..3] d’entiers Max, i, j : entiers

Début

Ecrire (0 Introduire les éléments du tableau 0) Pour i ←− 1 à 2 faire Pour j←− 1 à 3 faire Lire (M[i, j]) Max←− M[1, 1] Pour i ←− 1 à 2 faire Pour j←− 1 à 3 faire Si M[i, j] > Max alors

Max←− M[i, j]

Ecrire (0 Le Maximum des éléments de la matrice est Max= 0, Max) Fin.

Application: Nous reprenons la matrice (M) précédente -5 2 10

8 -3 8

Le déroulement de la recherche du maximum des éléments de la matrice M est le suivant: i j M[i, j] Maximum (Max) 1 1 −5 −5 1 2 2 2 1 3 10 10 2 1 8 10 2 2 −3 10 2 3 8 10

Le Maximum des éléments de cette matrice est Max =10. Remarque 8:

Nous procédons de la même manière pour la recherche du Minimum d’une matrice.

Documents relatifs