Tableaux "deux dimensions"

publicité
DAIGL – Tableaux "deux dimensions"
Tableaux "deux dimensions"
Jusqu'à présent, tous les tableaux manipulés étaient des tableaux constitués d'un ensemble de valeurs toutes de type
identique (entier, réel, caractère... type structuré). Un tableau peut aussi contenir des tableaux (c.à.d. que chaque
élément d'un tableau est aussi un tableau). On parle alors de tableau "deux dimensions" (2D). Ce tableau à deux
dimensions, comme tout tableau, est une variable possédant un nom unique, dans laquelle chaque élément est non plus
repéré par un seul indice, mais par deux indices (numéro de ligne et numéro de colonne) permettant d'indiquer sa
position. La dimension d'un tableau correspond au nombre d'informations nécessaires à la localisation d'un élément.
Exemple : La variable CoursActions2008 permet de mémoriser le cours de l'action d'entreprises informatiques
sur l'année 2008. Les valeurs sont exprimées en dollars US. Le numéro de colonnes correspondent aux numéros des
mois (1 pour Janvier, 2 pour Février...) alors que les numéros de lignes correspondent à des identifiants attribués aux
entreprises (1 pour Google, 2 pour eBay, 3 pour SUN et 4 pour Yahoo).
1
2
3
4
5
6
7
8
9
10
11
12
1
687,52 511,33 441,58 468,34 608,57 588,49 535,32 460,79 468,14 414,27 366,28 263,19
2
33,69
28,57
26,87
31,58
32,78
29,98
27,41
24,87
24,89
22,68
15,74
11,83
3
17,01
17,43
17,25
15,88
12,98
13,01
10,85
9,24
9,56
7,12
4,85
3,14
4
23,57
19,25
27,88
28,01
27,15
26,58
20,75
19,63
18,89
16,47
12,87
9,11
La numérotation des lignes et des colonnes utilisée ci-dessus correspond à la numérotation algorithmique. En Python, la
numérotation des lignes et des colonnes commencent à 0.
1- Déclaration
[Algo] Syntaxe :
nom_variable[nombre_lignes,nombre_colonnes]:type
nombre_lignes et nombre_colonnes sont de type Entier.
[Algo] Exemple :
CoursActions2008[4,12]:Réel
Et pour Python ? Pour rappel, il n'y a pas de déclaration de variables en Python (tout comme en Perl, en PHP...).
2- Initialisation
En Python, il est possible d'implémenter un tableau "deux dimensions" à l'aide...
●
●
●
●
d'une liste de listes,
d'une liste de tuples,
d'un tuple de tuples,
ou d'un tuple de listes.
Exemple :
[Algo]
CoursActions2008 = (
(687.52,511.33,441.58,468.34,608.57,588.49,535.32,460.79,468.14,414.27,366.28,263.19),
(33.69,28.57,26.87,31.58,32.78,29.98,27.41,24.87,24.89,22.68,15.74,11.83),
(17.01,17.43,17.25,15.88,12.98,13.01,10.85,9.24,9.56,7.12,4.85,3.14),
(23.57,19.25,27.88,28.01,27.15,26.58,20.75,19.63,18.89,16.47,12.87,9.11)
)
[Python]
CoursActions2008 = [
[687.52,511.33,441.58,468.34,608.57,588.49,535.32,460.79,468.14,414.27,366.28,263.19],
[33.69,28.57,26.87,31.58,32.78,29.98,27.41,24.87,24.89,22.68,15.74,11.83],
[17.01,17.43,17.25,15.88,12.98,13.01,10.85,9.24,9.56,7.12,4.85,3.14],
[23.57,19.25,27.88,28.01,27.15,26.58,20.75,19.63,18.89,16.47,12.87,9.11]
]
page 1
DAIGL – Tableaux "deux dimensions"
3- Accès à un élément
Comme pour tout tableau, on ne peut pas traiter un tableau "deux dimensions" dans sa totalité, mais seulement élément
par élément. Pour accéder à un élément particulier du tableau (écriture ou lecture de la valeur de l'élément), il faut
préciser obligatoirement la ligne et la colonne de cet élément.
Syntaxe :
[Algo] nom_variable[numéro_ligne,numéro_colonne]
[Python] nom_variable[numéro_ligne][numéro_colonne]
numéro_ligne et numéro_colonne sont de type Entier.
Exemple : Cours de l'action eBay (ligne 2) au mois de Mars (colonne 3) de l'année 2008.
1
1
2
3
687,52 511,33
2
4
5
6
7
8
9
10
11
12
468,34 608,57 588,49 535,32 460,79 468,14 414,27 366,28 263,19
26,87
31,58
32,78
29,98
27,41
24,87
24,89
22,68
15,74
11,83
3
17,01
17,43
17,25
15,88
12,98
13,01
10,85
9,24
9,56
7,12
4,85
3,14
4
23,57
19,25
27,88
28,01
27,15
26,58
20,75
19,63
18,89
16,47
12,87
9,11
[Algo] CoursActions2008[2,3]
[Python] CoursActions2008[1][2]
Pour accéder à l'ensemble des éléments d'un tableau 2D, il faut utiliser deux structures itératives (boucles) imbriquées.
● Une première boucle pour parcourir les lignes,
● Une seconde boucle pour parcourir les colonnes.
Exemple : Visualisation des cours
[Algo]
Variables :
action : Entier
mois : Entier
Début
Pour action de 1 à 4
Pour mois de 1 à 12
Afficher(CoursActions2008[action,mois])
FinPour
FinPour
Fin
[Python]
for action in range(4) :
for mois in range(12) :
print CoursActions2008[action][mois]
4- Tableau, ligne et élément
Dans l'exemple proposé...
●
●
CoursActions2008[1][2] (CoursActions2008[0][1] en Python) représente la valeur de
l'élément (cellule) qui se trouve en ligne 1 (0 en Python) et en colonne 2 (1 en Python), c.à.d. la valeur de
l'action Google au mois de Février de l'année 2008.
CoursActions2008 représente l'ensemble des données.
page 2
DAIGL – Tableaux "deux dimensions"
●
CoursActions2008[3] (CoursActions2008[2]en Python) représente la troisième ligne du tableau,
c.à.d. l'évolution de l'action SUN au cours des douze mois de l'année 2008.
1
2
3
4
5
6
7
8
9
10
11
12
1
687,52 511,33 441,58 468,34 608,57 588,49 535,32 460,79 468,14 414,27 366,28 263,19
2
33,69
28,57
26,87
31,58
32,78
29,98
27,41
24,87
24,89
22,68
15,74
11,83
3
17,01
17,43
17,25
15,88
12,98
13,01
10,85
9,24
9,56
7,12
4,85
3,14
4
23,57
19,25
27,88
28,01
27,15
26,58
20,75
19,63
18,89
16,47
12,87
9,11
On peut donc écrire...
[Python]
for ligne in CoursActions2008 :
for cours in ligne :
print cours
5- Type d'un élément
Le type d'un élément d'un tableau peut être un type de base (Entier, Chaîne, Caractère...). Il peut aussi être un
type structuré (Date, Etudiant...).
Exemple : Bâtiment B du Lycée Louis Armand
Ce bâtiment possède un rez-de-chaussée et deux étages. Il y a 10 salles par étage. Chaque salle est caractérisée par la
matière qui y est enseignée et par le nombre d'élèves qu'elle peut accueillir (capacité). Le bâtiment peut donc être
représenté en mémoire par le tableau BâtB et les salles par des données de type Salle.
[Algo]
Type
Structure Salle (
matière : Chaîne
capacité : Entier
)
Variable :
BâtB[3,10]:Salle
Le nombre de lignes correspond au nombre d'étages (rez-de-chaussée compris). La première ligne du tableau
correspond au rez-de-chaussée, la deuxième ligne correspond au premier étage et la troisième ligne correspond au
second étage. L'affichage de la capacité de la cinquième salle du second étage peut être réalisé par l'instruction...
Afficher(BâtB[3,5].capacité)
Pour conclure...
La dimension d'un tableau ne s'arrête pas à 2. En effet, un tableau peut être de dimension supérieure. Par exemple, un
tableau de dimension 3 nommé Espace peut être déclaré de la façon suivante...
Espace[3,4,2] : Entier
... et être représenté graphiquement sous la forme d'un cube. Pour accéder à la valeur d'un élément de ce tableau, il nous
faut connaître trois informations (d'où "tableau de dimension 3") : le numéro de la ligne, le numéro de la colonne ainsi
que la profondeur.
Cet élément se trouve en ligne 3, colonne 4 et profondeur
2. Pour accéder à la valeur de cet élément, il suffit donc
d'écrire Espace[3,4,2].
page 3
Téléchargement