< Delphi
fin de la boite de navigation du chapitre

Présentation

Un tableau représente une collection indicée d'éléments de même type (appelé le type de base). Comme chaque élément a un indice unique, les tableaux (à la différences des ensembles) peuvent, sans ambiguïtés, contenir plusieurs fois la même valeur. Il est possible d'allouer des tableaux de manière statique ou dynamique.

Tableaux statiques

Un tableau statique est un tableau dont le nombre d'éléments est prédéfini. Ce nombre, qui est aussi appelé "taille" du tableau ne peut changer au cours de l'exécution du programme. Un tableau se déclare comme une variable ou une constante et peut donc être variable ou constant. L'accès à un élément du tableau se fait en suffixant le nom du tableau par indice écrit entre crochet.

Exemple
var
  MonTableau: array[1..2] of integer;

begin
  MonTableau[1] := 5;  //MonTableau[1] = 5
  MonTableau[2] := 3;  //MonTableau[2] = 3
  MonTableau[1] := MonTableau[2];   //MonTableau[1] = 3 (valeur de MonTableau[2])
end;
Fin de l'exemple

Conclusion un tableau dont on précise l'indice se comporte exactement comme une variable ou une constante.

Tableaux multidimensionnels

Il n'y a pas de limite dans le nombre de dimensions d'un tableau. De plus une des spécificités de Delphi est que dans le cas des tableaux statiques l'indice peut commencer et se terminer par n’importe quel nombre ou lettre.

Exemple
var
  MonTableau: array[0..2,1..12,54..32,a..Z] of integer;

begin
  //instructions
end;
Fin de l'exemple

Ceci peut être très pratique dans certains cas comme la modélisation d'un plateau d'échec par exemple.

Exemple
var
  MonPlateau: array[1..8,A..H] of integer;

begin
  //instructions
end;
Fin de l'exemple

Il est cependant déconseillé d’utiliser des tableaux de plus de 3 dimensions car ils sont complexes à manipuler pour le programmeur. Essayez, vous verrez.

Tableaux dynamiques

Les tableaux dynamiques n'ont pas de taille ni de longueur fixe. La mémoire d'un tableau dynamique est réallouée quand vous assignez une valeur au tableau ou le transmettez à la procédure SetLength. Les types de tableau dynamique sont désignés par des constructions de la forme :

array of typeBase

Par exemple :

var MonTableauFlexible: array of Real;

déclare un tableau dynamique de réels à une dimension. La déclaration n'alloue pas de mémoire à MonTableauFlexible. Pour créer le tableau en mémoire, appelez SetLength. Par exemple, étant donné la déclaration suivante :

SetLength(MonTableauFlexible, 20);

alloue un tableau de 20 réels indicés de 0 à 19. Les tableaux dynamiques sont toujours indicés par des entiers en commençant toujours par 0.


Exemple
var
  MonTableauFlexible: array of integer;

begin
  SetLength(MonTableauFlexible, 20);//Le tableau peut contenir 20 valeurs
  SetLength(MonTableauFlexible, 30);//Le tableau peut contenir 30 valeurs
  SetLength(MonTableauFlexible, 10, 10);//Le tableau peut contenir 10 fois 10 valeurs
end;
Fin de l'exemple

Il n'y a aucune limite dans le nombre de modification de la taille du tableau. Les données contenues dans le tableau sont sauvegardées lors de la modification, sauf si elles dépassent de la nouvelle taille.

NB : En Delphi le type string est considéré comme un tableau dynamique de char, par conséquent toutes les opérations applicables au tableaux dynamiques le sont aux string.

Fonctions utiles

Length

La fonction Length renvoie la taille d'un tableau.

Exemple
var
  MonTableauFlexible: array of integer;

begin
  SetLength(MonTableauFlexible, 20);//Le tableau peut contenir 20 valeurs
  Length(MonTableauFlexible)// Renvoie la valeur 20
  SetLength(MonTableauFlexible, 30);//Le tableau peut contenir 30 valeurs
  WriteLn(Length(MonTableauFlexible))// Écrit "30" dans la console
end;
Fin de l'exemple

High & Low

Les fonctions High et Low renvoie respectivement les indices maximum et minimum d'un tableau.

Exemple
var
  MonTableauFlexible: array of integer;

begin
  SetLength(MonTableauFlexible, 20);//Le tableau peut contenir 20 valeurs
  Low(MonTableauFlexible)// Renvoie la valeur 0
  SetLength(MonTableauFlexible, 30);//Le tableau peut contenir 30 valeurs
  WriteLn(High(MonTableauFlexible))// Écrit "29" dans la console
end;
Fin de l'exemple
Cet article est issu de Wikiversity. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.