Ces représentations restent totalement virtuelles, une vue de l’esprit. De nombreux tableaux n’ont absolument pas pour but de
représenter des lignes et des colonnes. Un tableau à deux dimensions peut parfaitement représenter un jeu de morpion, une
matrice, une classe et les notes des étudiants associées…
Le piège avec les tableaux à plusieurs dimensions, c’est la taille qu’ils occupent en mémoire. Imaginez dix écoles, disposant de
dix classes chacune de vingt élèves. Nous voulons placer les notes dans un tableau. Voici donc un tableau de trois dimensions :
Note[1..10][1..10][1..20]
Combien de notes pourra obtenir le tableau ? 10x10x20 : 2000 notes ! Si l’élément fait un octet, vous approchez les 2 Ko. Mais
si l’élément du tableau contient un réel sur 64 bits, c’est 16 Ko qui sont utilisés ! Pourtant les indices semblaient si peu élevés.
c. Les types
Un tableau n’est pas un type de données mais un ensemble de valeurs, elles mêmes typées, regroupées et indicées sous un
nom de variable unique. Pouvezvous créer un tableau contenant n’importe quel type de valeurs ? Attention à l’interprétation
de cette question. Un tableau contientil n valeurs du même type, ou au contraire n valeurs de types différents ?
En algorithmique, le principe est simple : un tableau contient n éléments de même type. Autrement dit, vous allez déclarer un
tableau de vingt notes en numérique, dix réels, cinq chaînes de caractères, etc.
Cependant en dehors du pseudocode algorithmique la définition, la déclaration et l’utilisation des tableaux dépendent
fortement du langage. Les tableaux simples en Java ou en C par exemple ne contiennent qu’un seul type possible de valeurs.
Tandis qu’en PHP, vous pouvez mélanger tout ce que voulez, l’indice 1 contenant un entier, l’indice 2 du texte, etc.
Cela peut être un peu déroutant à l’usage, mais ces langages, souvent appelés non typés (c’est discutable) sont d’une
souplesse incomparable.
En attendant, respectez en algorithmique le fait qu’un tableau a en principe un nombre d’indices fini et qu’ils sont typés une fois
pour toute.
d. Déclaration
En pseudocode algorithmique, les tableaux se déclarent au même endroit que les variables, juste avant le début du traitement
luimême, sous cette forme :
VAR
MonTableau:tableau[1..nbelements] d’entiers
MonTab2:tableau[1..dim1][1..dim2] de réels
Entre les crochets, placez le nombre d’éléments du tableau.
Il est possible d’initialiser le contenu du tableau à sa création comme ceci :
VAR
mois :tableau[1..12]<-{"janvier",...,"décembre"} de chaînes
Ce même tableau pourrait être placé dans la section CONST, ce qui en ferait une constante.
Comme cela sera revu un peu plus loin, les indices des tableaux peuvent démarrer à 0 ou 1, selon les langages, les usages, les
professeurs, etc. Il n’y a malheureusement pas de règle précise en ce domaine. L’évidence, visàvis de l’organisation de la
mémoire de l’ordinateur, voudrait que la numérotation démarre à zéro : ça simplifie les calculs de la position des différents
éléments du tableau dans la mémoire. Cependant comment alors comprendre ce tableau ?
Valeurs:tableau[1..10] de réels
Selon les usages, si ce tableau représente dix valeurs alors :
q Si la numérotation commence à 1, les indices vont de valeur[1] à valeur[10].
q Si la numérotation commence à 0, les indices vont de valeur[0] à valeur[9]. C’est le cas du langage C ou du Java.
Certaines notations algorithmiques sont encore plus surprenantes (pour ne pas être méchant) : la valeur indiquée entre
crochets peut correspondre au nombre maximal d’indices en partant de zéro. C’est ainsi que le tableau valeurs contiendrait
onze éléments ! N’ayez pas d’inquiétudes, ce ne sera pas le cas ici.
Dans la suite, les indices commenceront à un pour aller jusqu’à n, n étant le nombre d’éléments du tableau. Le tableau valeurs
[1..10] aura donc bien dix éléments, numérotés de 1 à 10. Comme il ne s’agit pas d’une règle absolue dans tous les langages
vous prendrez bien soin à vérifier ce qu’il en est lorsque vous écrirez vos programmes. Si vous êtes étudiant, suivez la
représentation fournie par vos professeurs, éventuellement précisez les règles que vous appliquez aux indices. Dans tous les
cas, n’accusez pas l’auteur de cet ouvrage !
e. Utilisation
- 2 -
© ENI Editions - All rigths reserved - Jonifar lina
96
représenter des lignes et des colonnes. Un tableau à deux dimensions peut parfaitement représenter un jeu de morpion, une
matrice, une classe et les notes des étudiants associées…
Le piège avec les tableaux à plusieurs dimensions, c’est la taille qu’ils occupent en mémoire. Imaginez dix écoles, disposant de
dix classes chacune de vingt élèves. Nous voulons placer les notes dans un tableau. Voici donc un tableau de trois dimensions :
Note[1..10][1..10][1..20]
Combien de notes pourra obtenir le tableau ? 10x10x20 : 2000 notes ! Si l’élément fait un octet, vous approchez les 2 Ko. Mais
si l’élément du tableau contient un réel sur 64 bits, c’est 16 Ko qui sont utilisés ! Pourtant les indices semblaient si peu élevés.
c. Les types
Un tableau n’est pas un type de données mais un ensemble de valeurs, elles mêmes typées, regroupées et indicées sous un
nom de variable unique. Pouvezvous créer un tableau contenant n’importe quel type de valeurs ? Attention à l’interprétation
de cette question. Un tableau contientil n valeurs du même type, ou au contraire n valeurs de types différents ?
En algorithmique, le principe est simple : un tableau contient n éléments de même type. Autrement dit, vous allez déclarer un
tableau de vingt notes en numérique, dix réels, cinq chaînes de caractères, etc.
Cependant en dehors du pseudocode algorithmique la définition, la déclaration et l’utilisation des tableaux dépendent
fortement du langage. Les tableaux simples en Java ou en C par exemple ne contiennent qu’un seul type possible de valeurs.
Tandis qu’en PHP, vous pouvez mélanger tout ce que voulez, l’indice 1 contenant un entier, l’indice 2 du texte, etc.
Cela peut être un peu déroutant à l’usage, mais ces langages, souvent appelés non typés (c’est discutable) sont d’une
souplesse incomparable.
En attendant, respectez en algorithmique le fait qu’un tableau a en principe un nombre d’indices fini et qu’ils sont typés une fois
pour toute.
d. Déclaration
En pseudocode algorithmique, les tableaux se déclarent au même endroit que les variables, juste avant le début du traitement
luimême, sous cette forme :
VAR
MonTableau:tableau[1..nbelements] d’entiers
MonTab2:tableau[1..dim1][1..dim2] de réels
Entre les crochets, placez le nombre d’éléments du tableau.
Il est possible d’initialiser le contenu du tableau à sa création comme ceci :
VAR
mois :tableau[1..12]<-{"janvier",...,"décembre"} de chaînes
Ce même tableau pourrait être placé dans la section CONST, ce qui en ferait une constante.
Comme cela sera revu un peu plus loin, les indices des tableaux peuvent démarrer à 0 ou 1, selon les langages, les usages, les
professeurs, etc. Il n’y a malheureusement pas de règle précise en ce domaine. L’évidence, visàvis de l’organisation de la
mémoire de l’ordinateur, voudrait que la numérotation démarre à zéro : ça simplifie les calculs de la position des différents
éléments du tableau dans la mémoire. Cependant comment alors comprendre ce tableau ?
Valeurs:tableau[1..10] de réels
Selon les usages, si ce tableau représente dix valeurs alors :
q Si la numérotation commence à 1, les indices vont de valeur[1] à valeur[10].
q Si la numérotation commence à 0, les indices vont de valeur[0] à valeur[9]. C’est le cas du langage C ou du Java.
Certaines notations algorithmiques sont encore plus surprenantes (pour ne pas être méchant) : la valeur indiquée entre
crochets peut correspondre au nombre maximal d’indices en partant de zéro. C’est ainsi que le tableau valeurs contiendrait
onze éléments ! N’ayez pas d’inquiétudes, ce ne sera pas le cas ici.
Dans la suite, les indices commenceront à un pour aller jusqu’à n, n étant le nombre d’éléments du tableau. Le tableau valeurs
[1..10] aura donc bien dix éléments, numérotés de 1 à 10. Comme il ne s’agit pas d’une règle absolue dans tous les langages
vous prendrez bien soin à vérifier ce qu’il en est lorsque vous écrirez vos programmes. Si vous êtes étudiant, suivez la
représentation fournie par vos professeurs, éventuellement précisez les règles que vous appliquez aux indices. Dans tous les
cas, n’accusez pas l’auteur de cet ouvrage !
e. Utilisation
- 2 -
© ENI Editions - All rigths reserved - Jonifar lina
96
