TABLEAU
Un tableau est un ensemble de valeur. On peut mettre n'importe type standard dans un tableau. Ils permettent de relier des données ensemble au lieu de créer plusieurs variables. Disons que vous devez créer un programme qui calculer la moyenne des notes des étudiants d'une classe. Vous pourriez créer autant de variables qu'il y a d'étudiant, mais ça serait difficile et fastidieux à gérer.Une solution consisterait à utiliser un tableau
var tabNote:array [0..24]of real;
Ce qui fera 150 octets (25 éléments * 6 octets pour un real) On peut représenter en mémoire un tableau comme voici.
tabNote[0] tabNote[1] tabNote[2]La mémoire est utilisée de façon linéaire, chaque fois qu'on avance d'un élément, on avance de 6 octets dans la mémoire. On doit spécifier l'index d'un tableau lorsqu'on l'initialise. L'index c'est le chiffre qu'on spécifie entre les crochets «[]».
tabNote[0]:=23; tabNote[21]:=144;
Les opérations
Les opérations entre tableaux sont aussi possiblesnotePaul:=tabNote[3] + tabNote[12] - tabNote[5];
Les tableaux multidimensionnels
Les tableaux multidimensionnels peuvent aussi être créés. On ne doit qu'ajouter un deuxième indice à la syntaxe déjà apprise. var tabNote:array [0..2 ,0..1] of integer; Les deux syntaxes sont équivalentes. Les opérations entre tableaux peuvent aussi être faites. La représentation en mémoire est la même, de la gauche vers la droite et on change de lignetabNote[0][0] tabNote[0][1] tabNote[0][2] tabNote[1][0] tabNote[1][1] tabNote[1][2]
Les tableaux sont souvent la cause de beaucoup d'erreurs chez les programmeurs. Il est très aisé de faire une erreur de débordement.
var tabNote:array [0..2] of integer; begin tabNote[8]:=45; end;
Ce code engendra une erreur à la compilation. Afin d'empêcher que de telle erreur se produise, on peut utiliser les fonctions low et high. Ces fonctions renvoient les limites inférieures et supérieures d'un tableau.
var bas,haut:integer tabNote:array [10..34] of integer; begin bas:=low(tabNote);//ce qui équivaut à 10 haut:=high(tabNote);//ce qui équivaut à 34 end;
On peut comparativement à d'autres langages créer un tableau ne débutant pas à zéro. Cette possibilité peut s'avérer intéressante afin de résoudre certains problèmes.
var tabNote[10..22] of integer;
Les tableaux dynamiques
Jusqu'à maintenant, on n'a créé que des tableaux statiques. Ce type de tableau a le désavantage de ne pouvoir se modifier durant l'exécution du programme. Une fois le tableau défini, on ne peut l'agrandir, le rétrécir.Si vous avez déjà programmé des tableaux dynamiques en langage c, c++ vous savez comment il peut être compliqué de le faire pour un novice. Vous serez sûrement heureux d'apprendre que, depuis la version 4 de delphi, il est aisé de manipuler de tel tableau. On n'a qu'à ne pas spécifier de taille lorsqu'on déclare le tableau
var tabNote:array of integer; Grandeur:integer; begin Grandeur:=SpecifierGrandeur; SetLength(tabNote,Grandeur); end;Maintenant, on a un tableau de la grandeur que l'on veut. L'indice inférieur d'un tableau dynamique débute toujours à l'indice zéro.
var tabNote:array of integer; Grandeur:integer; begin Grandeur:=100; SetLength(tabNote,Grandeur); //Traitement on retrecit le tableau SetLength(tabNote,5); //on agrandit le tableau SetLength(tabNote,10); end;
Les tableaux multidimensionnels peuvent aussi être crées dynamiquement
var lpPoint:TPoint; begin Grandeur:=0; while (ok=false) do begin GetCursorPos(lpPoint); Grandeur:=Grandeur+1; //augmente la première dimension du tableau setlength(tabPoint,Grandeur,2); tabPoint[Grandeur-1,0]:=lpPoint.x; tabPoint[Grandeur-1,1]:=lpPoint.y; end; end;
L'utilité des tableaux est innombrable, mais gare au débordement. :)
Aucun commentaire:
Enregistrer un commentaire