q m la position connue du premier élément, 
q x l’indice de la première dimension moins 1, 
q y l’indice de la seconde dimension moins 1, 
q My la taille maximale de la première dimension. 
La position p en mémoire est : 
p=m+(x*My)+y 
Prenez, d’après le tableau ci­dessus, l’élément d’indice 3,4 : x vaut 2, y vaut 3, Mx vaut 5 et m vaut 143. 
p=143+(2*5)+3=156 
Soit un nouveau tableau note2[1..2][1..2][1..3], il pourrait être représenté ainsi : 
Pour calculer la position d’un élément d’indice x,y,z avec les mêmes pré­requis qu’au­dessus, avec Mz la taille maximale de la 
dimension et My la taille maximale de la dimension y, on obtient la formule suivante : 
p=m+(x*My*Mz)+(y*Mz)+z 
b. Représentation par référence 
La  représentation  linéaire  ci­dessus  est  bien  pratique  pour  votre  imagination,  mais  montre  ses  limites  dans  certains  cas. 
Notamment, que se passe­t­il avec les types qui ne sont pas des scalaires ? Prenez l’exemple le plus simple : un tableau de 
chaînes de caractères. 
Dans la mémoire et comme vu précédemment, une chaîne de caractères est représentée par une suite de valeurs numériques : 
les codes ASCII (ou unicode, selon le cas). Le mot "Bonjour" est représenté ainsi : 
Sachant  qu’on  ne  connaît  pas  forcément  à  l’avance  la  longueur  d’une  chaîne  de  caractères,  celle­ci  se  termine  souvent,  et 
suivant les langages, par un caractère nul. Aussi en mémoire, vous obtiendrez ceci : 
Cette brève étude met en évidence deux problèmes : 
q Dans un tableau à une seule dimension, il n’est pas évident de représenter les indices des chaînes de caractères. Une 
astuce pourrait consister à rechercher les caractères nuls (0) pour retrouver les indices suivants (le caractère suivant 
est le premier de la chaîne d’indice +1). Mais : 
q La longueur d’une chaîne de caractères n’étant pas fixe, comment réserver à l’avance l’espace contigu nécessaire au 
stockage de n chaînes dans un tableau de n éléments ? 
Vous  pourriez  évidemment  contourner  ce  problème  en  décrétant  de  manière  totalement  arbitraire  que  les  chaînes  de 
caractères  stockées  dans  votre  tableau  ont  une  longueur  fixe.  Mais  quelle  perte  de  place  si  votre  chaîne  ne  fait  que  deux 
caractères pour deux cents réservés ! Ce n’est pas une solution à retenir. 
Pour créer des tableaux à n dimensions quelques langages et non des moindres, utilisent une autre méthode. Pour plus de 
clarté, le mieux est de comprendre le principe tout d’abord avec un tableau à une dimension, puis à deux. 
Une  chaîne  d’une  longueur  de  n  caractères  est  en  fait  bien  souvent  un  tableau  à  une  dimension  comportant  n+1  indices, 
sachant  que  le  dernier  indice  contiendra  un  caractère  nul.  Chaque  élément  du  tableau  est  le  code  ASCII  (ou  unicode) 
correspondant  au  caractère  de  la  position  (indice)  donnée.  Ainsi  les  variables  de  type  Alphanumérique  sont,  en  fonction  du 
langage,  des  artifices  ou  plutôt  des  facilités  censées  simplifier  la  vie  du  développeur.  Quand  vous  affectez  une  chaîne  de 
caractères à ce type de variable, le langage connaît la longueur de cette chaîne (a="Salut", la longueur de « Salut » est 5) et va 
Adr 
1512 
1513 
1514 
1515 
1516 
1517 
1518 
1519 
1520 
1521 
1522 
1523 
Ind 
1,1,1 
1,1,2 
1,1,3 
1,2,1 
1,2,2 
1,2,3 
2,1,1 
2,1,2 
2,1,3 
2,2,1 
2,2,2 
2,2,3 
Val 
10 
12 
14 
10 
15 
9 
8 
13 
7 
5 
14 
20 
Lettre 
B 
o 
n 
j 
o 
u 
r 
ASCII 
66 
111 
110 
106 
111 
117 
114 
Adresse 
1616 
1617 
1618 
1619 
1620 
1621 
1622 
1623 
Contenu 
66 
111 
110 
106 
111 
117 
114 
0 
- 7 -
© ENI Editions - All rigths reserved - Jonifar lina
101
Précédent

- 101/220

Suivant