Sign in Join
Wiki copytemporary

Basic Pascal Tutorial/Chapter 5/1-dimensional arrays/fr: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11[[Basic Pascal Tutorial/fr|Tutoriel de Pascal Objet]] : Types de données / **Tableaux a une dimension**
22
33Supposez que vous vouliez lire 5000 entiers et faire quelque chose avec eux. Comme stocker les entiers ?
44
55Vous pourriez utiliser 5000 variables, et tomber dans :
66
7-```
7+```text
88aa, ab, ac, ad, ... aaa, aab, ... aba, ...
99```
1010
1111Mais ça deviendrait fastidieux (après avoir déclaré les variables, vous devez lire les valeurs dans chaque de ces variables).
1212
1313Un tableau contient plusieurs espaces de stockage, tous du même type. Vous vous référez à chaque espace de stockage avec le nom du tableau avec un indice. La définition du type est :
1414
1515``` pascal
1616type
1717 typename = array [enumerated_type] of another_data_type;
1818```
1919
2020Le type de données peut être n'importe lequel, même un autre tableau. Tout type énuméré ira. Vous pouvez spécifier le type énuméré entre les crochets, ou utiliser un type énuméré prédéfini. En d'autres mots,
2121
2222``` pascal
2323type
2424 enum_type = 1..50;
2525 arraytype = array [enum_type] of integer;
2626```
2727
2828est équivalent à :
2929
3030``` pascal
3131type
3232 arraytype = array [1..50] of integer;
3333```
3434
3535Aparté : C'est la façon dont sont réellement gérées les chaînes — comme des tableaux. Avant que les compilateurs Pascal modernes eurent ajoutés le support des chaînes, les programmeurs devaient les manipuler eux-mêmes, en déclarant :
3636
3737``` pascal
3838type
3939 String = packed array [0..255] of char;
4040```
4141
4242et en utilisant quelque caractère de fin pour indiquer la fin de la chaine. La plupart du temps c'est le caractère nul (numéro ordinal 0, ou ord(0)). Le spécificateur `packed` veut dire que le tableau sera compressé pour prendre le moins de place possible en mémoire.
4343
4444Les tableaux de caractères représentant des chaines sont souvent désignés par tampons et une erreur en les manipulant dans les langages C ou C++ peut amener à des débordements de tampon. Un débordement de tampon arrive quand vous essayez de mettre, par exemple, une chaine de 200 caractères dans un tableau d'une longueur de 150. Si la mémoire au-delà du tampon est écrasée et si cette mémoire contenait originellement du code exécutable, alors l'attaquant a tout juste réussi à injecter du code arbitraire dans votre système. C'est ce qui a causé le célèbre ver Slammer qui était endémique sur l'Internet pendant plusieurs jours. Essayez en Pascal et regardez ce qu'il arrive.
4545
4646Les tableaux sont utiles si vous voulez stocker de grandes quantités de données pour un usage futur dans le programme. Ils marchent particulièrement bien avec les boucles parce qu'il sont utilisés avec un indice. Pour lire 50 nombres, en supposant la définition suivante :
4747
4848``` pascal
4949type
5050 arraytype = array[1..50] of integer;
5151
5252var
5353 myarray : arraytype;
5454```
5555
5656Utilisez :
5757
5858``` pascal
5959for count := 1 to 50 do
6060 read (myarray[count]);
6161```
6262
6363Les crochets `[ ]` entourent l'indice pour référer aux cellules du tableaux.
6464
6565``` pascal
6666myarray[5] := 6;
6767```
6868
6969---
7070*From the Free Pascal wiki, page "Basic Pascal Tutorial/Chapter 5/1-dimensional arrays/fr", as it stood on 2022-08-20 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history