LES TABLEAUX À DEUX DIMENSIONS
(MATRICES)
[Link]@[Link]
DÉFINITION
Un tableau à deux dimensions M et à interpréter comme un tableau (unidimensionnel) de
dimension L dont chaque composante est un tableau (unidimensionnel) de dimension C.
On appelle L le nombre de lignes du tableau et C le nombre de colonnes du tableau.
Un tableau à deux dimensions contient L*C composantes.
0 1 2 3 4
M[0, 0]
0
1 M[1, 2]
M
Lignes
2
3 M[3, 4]
2
Colonnes
DÉCLARATION
En Algorithme
Première formulation
Tableau de déclaration des objets
Objet Type/Nature
Nom_tableau Tableau de N lignes * M colonnes Type _élément
Deuxième formulation
Tableau de déclaration de nouveaux types
Nouveau type
Nom_type = Tableau de N lignes * M colonnes Type _élément
Tableau de déclaration des objets
Objet Type/Nature
Nom_tableau Nom_type 3
DÉCLARATION
En Python
On utilisera la bibliothèque numpy pour implémenter les tableaux.
Un tableau de la bibliothèque numpy est :
o homogène, c’est-à-dire constitué d’éléments de même type,
o statique, car sa taille est fixée lors de la création.
La déclaration d’un tableau se fait en deux étapes :
o Importation des modules nécessaires de la bibliothèque numpy
from numpy import array
ou
from numpy import *
ou
import numpy as alias
4
DÉCLARATION
o Déclaration du tableau
Matrice = array([[type_élément]*NC]*NL) NL : Nombre de lignes | NC : Nombre de colonne.
Ou bien,
Matrice = array([[valeur_initiale]*NC]*NL,dtype=type_élément)
Exemple : Optionnel : pour spécifier le type des éléments.
M1 = array([[int()]*4]*5) #Matrice de 5 * 4 entiers
M2 = array([[float()]*4]*5) #Matrice de 5 * 4 réels
M3 = array([[str()]*4]*5) #Matrice de 5 * 4 caractères
M4 = array([[str]*4]*5) #Matrice de 5 * 4 chaînes de caractères
M5 = array([[bool()]*4]*5) #Matrice de 5 * 4 booléens
Ou bien,
M1 = array([[1]*4]*5) #Matrice de 5 * 4 éléments initialisés par des "1".
M2 = array([[""]*4]*5,dtype="U30") #Matrice de 5 * 4 éléments initialisés par des
chaînes de caractères vides. Chaque élément peut contenir 20 caractères au maximum. 5
REMPLIR UNE MATRICE DE NL*NC
ENTIERS
Ligne par ligne (par défaut)
Pour i de 0 à NL-1 faire
Pour j de 0 à NC-1 faire
Ecrire("M[",i,",",j,"]=")
Lire(M[i,j])
Fin Pour
Fin Pour
6
REMPLIR UNE MATRICE DE NL*NC
ENTIERS
0 1 2 3 4
Ligne par ligne (par défaut)
0
Pour i de 0 à NL-1 faire 1
Pour j de 0 à NC-1 faire 2
Ecrire("M[",i,",",j,"]=")
Lire(M[i,j])
Fin Pour
i=0 i=1 i=2
Fin Pour j=0 j=1 j=2 j=3 j=4 j=0 j=1 j=2 j=3 j=4 j=0 j=1 j=2 j=3 j=4
7
REMPLIR UNE MATRICE DE NL*NC
ENTIERS
0 1 2 3 4
Colonne par colonne
0
Pour j de 0 à NC-1 faire 1
Pour i de 0 à NL-1 faire 2
Ecrire("M[",i,",",j,"]=")
Lire(M[i,j])
Fin Pour
j=0 j=1 j=2 j=3 j=4
Fin Pour i=0 i=1 i=2 i=0 i=1 i=2 i=0 i=1 i=2 i=0 i=1 i=2 i=0 i=1 i=2
8
AFFICHER UNE MATRICE DE NL*NC
ENTIERS 5 6 7 8
1 5 6 7
3 4 5 6
Pour i de 0 à NL-1 Faire
Pour j de 0 à NC-1 Faire
Ecrie (M[i, j]) 5 6 7 8
Fin Pour 1 5 6 7
{Retour à la ligne} 3 4 5 6
Fin Pour
9
LES MATRICES
CARRÉES
On appelle matrice carrée, une matrice de N lignes et N colonnes
j =0 j = n-1
0 1 2 3 4
0 i =0
4 i =n-1
11
12
MANIPULATION DES MATRICES
CARRÉES
EXEMPLE 1
Ecrire les instructions algorithmiques permettant de remplir la matrice suivante:
0 1 2 3 4
0 0
1 0 1
2 0 1 2
3 0 1 2 3
4 0 1 2 3 4
13
EXEMPLE 1
0 1 2 3 4
Pour i de 0 à N-1 faire i=0 0 0
Pour j de 0 à i faire 1 0 1
M[i,j] ← j 2 0 1 2
3 0 1 2 3
Fin Pour
i = N-1 4 0 1 2 3 4
Fin Pour
j=0
14
EXEMPLE 2
Ecrire les instructions algorithmiques permettant de remplir la matrice suivante:
0 1 2 3 4
0 0 1 2 3 4
1 1 2 3 4
2 2 3 4
3 3 4
4 4
15
EXEMPLE 2
0 1 2 3 4
Pour i de 0 à N-1 faire i=0 0 0 1 2 3 4
Pour j de i à N-1 faire 1 1 2 3 4
M[i,j] ← j 2 2 3 4
3 3 4
Fin Pour
i = N-1 4 4
Fin Pour
j = N-1
16
EXEMPLE 3
Ecrire les instructions algorithmiques permettant de remplir la matrice suivante:
0 1 2 3 4
0 0 1 2 3 4
1 0 1 2 3
2 0 1 2
3 0 1
4 0
17
EXEMPLE 3
0 1 2 3 4
Pour i de 0 à N-1 faire i=0 0 0 1 2 3 4
Pour j de 0 à N-1-i faire 1 0 1 2 3
M[i,j] ← j 2 0 1 2
3 0 1
Fin Pour
i = N-1 4 0
Fin Pour
j=0
18
EXEMPLE 4
Ecrire les instructions algorithmiques permettant de remplir la matrice suivante:
0 1 2 3 4
0 4
1 3 4
2 2 3 4
3 1 2 3 4
4 0 1 2 3 4
19
EXEMPLE 4
0 1 2 3 4
Pour i de 0 à N-1 faire i=0 0 4
Pour j de N-1-i à N-1 faire 1 3 4
2 2 3 4
M[i,j] ← j
3 1 2 3 4
Fin Pour
i = N-1 4 0 1 2 3 4
Fin Pour
j = N-1
20
EXEMPLE 5
Ecrire les instructions algorithmiques permettant de remplir la matrice suivante:
0 1 2 3 4
0 0 2 2 2 2
1 1 0 2 2 2
2 1 1 0 2 2
3 1 1 1 0 2
4 1 1 1 1 0
21
EXEMPLE 5
Pour i de 0 à N-1 faire 0 1 2 3 4
Pour j de 0 à N-1 faire i=0 0 0 2 2 2 2
Si i = j Alors 1 1 0 2 j>i
2 2
M[i,j] ← 0 2 1 1 0 2 2
Sinon Si j<i Alors 3 1 1 1 0 2
j<i
i = N-1 4 1 1 1 1 0
M[i,j] ← 1
Sinon
j=0 j = N-1
M[i,j] ← 2
FinSi
Fin Pour
22
Fin Pour
EXEMPLE 6
Ecrire les instructions algorithmiques permettant de remplir la matrice suivante:
0 1 2 3 4
0 1 2 3 4 5
1 10 9 8 7 6
2 11 12 13 14 15
3 20 19 18 17 16
4 21 22 23 24 25
23
EXEMPLE 6
0 1 2 3 4
x ←1
Pour i de 0 à N-1 faire 0 1 2 3 4 5 i=0
Si i Mod 2 = 0 Alors 1 10 9 8 7 6 i=1
Pour j de 0 à N-1 faire 2 11 12 13 14 15 i=2
M[i,j] ← x 3 20 19 18 17 16 i=3
x ←x + 1
4 21 22 23 24 25 i=4
Fin Pour
Sinon
Pour j de N-1 à 0 [pas=-1] faire
M[i,j] ← x
x ←x + 1
Fin Pour
Fin Pour 24
EXEMPLE 7
Ecrire les instructions algorithmiques permettant de remplir la matrice suivante:
0 1 2 3 4
0 1 10 11 20 20
1 2 9 12 19 21
2 3 8 13 18 22
3 4 7 14 17 23
4 5 6 15 16 24
25
EXEMPLE 7
0 1 2 3 4
x ←1
Pour j de 0 à N-1 faire 0 1 10 11 20 20
Si j Mod 2 = 0 Alors 1 2 9 12 19 21
Pour i de 0 à N-1 faire 2 3 8 13 18 22
M[i,j] ← x 3 4 7 14 17 23
x ←x + 1
4 5 6 15 16 24
Fin Pour
j=0 j = 1 j= 2 j=3 j = 4
Sinon
Pour i de N-1 à 0 [pas=-1] faire
M[i,j] ← x
x ←x + 1
Fin Pour
Fin Pour 26
EXEMPLE 8
Ecrire les instructions algorithmiques permettant de remplir la matrice
suivante:
0 1 2 3 4
0 1 2 3 4 5
1 16 17 18 19 6
2 15 24 25 20 7
3 14 23 22 21 8
4 13 12 11 10 9
27
x ← 1 ; deb ← 0 ; fin ← N-1
EXEMPLE 8 Tant Que (deb≤fin) Faire
Pour i de deb à fin faire
M[deb, i] ← x
x ←x + 1
Fin Pour
0 1 2 3 4
Pour i de deb+1 à fin-1 faire
dep 0 1 2 3 4 5 M[i,fin] ← x
x ←x + 1
dep 1 16 17 18 19 6
Fin Pour
fin 2 15 24 25 20 7 Pour i de fin à deb+1 [pas=-1] faire
fin 3 14 23 22 21 8 M[fin, i] ← x
x ←x + 1
fin 4 13 12 11 10 9 Fin Pour
Pour i de fin à deb+1 [pas=-1] faire
M[i,deb] ← x
x ←x + 1
Fin Pour
deb ← deb+1
fin ← fin-1
Fin Tanque 28
Exercices d'application
EXERCICE 1
Écrivez un programme pour lire les éléments d'une matrice M de L (2≤L ≤15)
lignes et C (3≤ C ≤20) colonnes puis de remplir un tableau LS par la somme la
somme de chaque ligne de la matrice M et un tableau CS par la somme la somme
de chaque ligne de la matrice M . Enfin d'afficher les deux tableaux LS et CS.
Exemple :
Pour M = 5 4 -1 LS sera : 8 12 3 35
2 0 10
-3 5 1 CS sera : 29 15 14
25 6 4
EXERCICE 2
En mathématiques, la matrice transposée d'une matrice A de taille (L, C) est une matrice
notée AT de taille (C, L), obtenue en échangeant les lignes et les colonnes de A.
1 4
1 2 3
Exemple : 𝑨= => 𝑨𝑻 = 2 5
4 5 6
3 6
On se propose de remplir une matrice A de taille (L, C) avec (2≤L≤20 et 3≤C≤15), par des
entiers puis de générer sa matrice transposée AT et de l'afficher.
Travail demandé :
1. Ecrire un algorithme pour le programme principal
2. Déduire les algorithmes des modules envisagés précédemment.