" Est ce que selon les normes c´est mieux de commencer par 0 ? ( lisibilité etc . . .)"
Si tu veux savoir d´où vient l´indexage de zéro...
Indexer à partir du zéro ne vient pas vraiment d´une norme mais d´un simple raisonnement mathématique, découlant du déférençage:
Adresse du i-eme élément = b + i*t, où:
b est l´adresse de base;
i est l´index;
t est la taille des objets du tableau.
Ainsi, b pointe vers le début du tableau, soit le premier élément. Pour accéder au deuxième, il faut aller à l´adresse de la base, plus la taille d´un de ces éléments.
Soit un tableau de 4 éléments de, disons, 4 bytes chaqu´un.
. ... < 4 bytes, représentés par 4 points
[1 ][2 ][3 ][4 ]
^...^
b...x?
ici, pour accéder au 2e élément,[2 ], il faut donc partir du premier élément, pointé par b, et y additionner 1*4 bytes, pour passer le premier élément du tableau, [1 ].
Pour accéder au 3e, il faut faire le même principe, mais y additionner 8 bytes au lieu de quatre, pour passer et [1 ] ET [2 ]. Donc, en suivant la logique, on obtient:
b+i*t, avec i qui part de 0 ( pour le premier élément, i vaut 0)
Remarquez ici en C ( Je suis désolé de ne pas parler directement de Delphi ni de VB, pourtant le sujet direct de ce topic):
type Tableau[Taille];
Et pour déférencer:
Tableau[Index];
Mais en fait, c´est directement importé de la logique mathématique!
En effet, Tableau est un pointeur, n´oublions pas, et on a donc:
b + i*t
Tableau + Index*sizeof(type)
! !!
le sizeof(type) est sous entendu, pour alléger. On a donc une forme ainsi:
b[i].
C´est simple, non?
Donc voilà pourquoi à la base, on commençait les indices de 0.
Maintenant, de nos jours, cela n´a plus vraiment de rapport, avec les languages modernes. Disons que l´on peut les garder par norme, oui, aussi pour ne pas mélanger les programmeurs vétérans habitués à la vielle syntaxe d´index qui part de 0 se formant à un nouveau language. Du moins c´est cela que j´imagine.
Kelios
---------