Delphi/Tableau
Présentation
modifierUn 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
modifierUn 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.
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;
Conclusion un tableau dont on précise l'indice se comporte exactement comme une variable ou une constante.
Tableaux multidimensionnels
modifierIl 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.
Ceci peut être très pratique dans certains cas comme la modélisation d'un plateau d'échec par 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
modifierLes 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.
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;
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
modifierLength
modifierLa fonction Length renvoie la taille d'un tableau.
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;
High & Low
modifierLes fonctions High et Low renvoie respectivement les indices maximum et minimum d'un tableau.
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;