Langage Pascal/Les tableaux
Une page de Wikiversité.
Langage Pascal/Les tableaux est une ébauche concernant l'informatique. Vous pouvez aider le projet Wikiversité en l'améliorant.
| Chapitre 4 | |||
| Leçon : Langage Pascal | |||
|---|---|---|---|
| Chap. préc. : | Variables et affectation | ||
| Chap. suiv. : | Instruction conditionnelle | ||
En raison de limitations techniques, la typographie souhaitable du titre, « Langage Pascal : Les tableaux
Langage Pascal/Les tableaux », n'a pu être restituée correctement ci-dessus.
[modifier] Les tableaux
Un outils particulièrement pratique et proposé dans la grande majorité des langages est le tableau. Il permet le stockage d'une série éléments de même type.
Imaginons un professeur voulant stocker les notes de 5 élèves, il peut ainsi utiliser un tableau d'entiers de longueur 5. Illustrons ce dernier :
---------------- |12|16|07|13|09| ----------------
En pascal, un tableau peut être déclarer de la manière suivante :
var t : array[1..5] of integer;
Ainsi, ce code déclare un tableau d'entiers, dont les indices vont de 1 à 5. Cet indice permet d'accorder un numéro à chacune des cases et d'y accéder.
Exemple :
var t : array[1..5] of integer; begin t[1] := 12; t[2] := 16; t[3] := 7; t[4] := 13; t[5] := 9; end.
Voilà comment il est possible d'affecter une valeur à chacune des cases du tableau. L'accès se fait par la même notation.
[modifier] Les chaines de caractères
Il n'est pas rare de rencontrer une situation où il est nécessaire de stocker des mots et donc des chaines de caractères appelé également string.
En pascal, les strings sont des tableaux de caractères. Les deux déclarations suivantes sont équivalentes :
var t : array[0..8] of char; s : string[8];
Ainsi, s est un tableaux de caractères indicés de 1 à 8, l'indice 0 étant réservé au stockage de la longueur réel de la chaine de caractères.
| Il est fortement déconseillé de manipuler l'indice zéro. |
Poursuivons l'exemple précédent :
var t : array[0..8] of char; s : string[8]; begin s := 'coucou'; writeln(s[1]); writeln(s[2]); writeln(s[3]); writeln(s[4]); writeln(s[5]); writeln(s[6]); end.
Ce qui donne le résultat suivant :
c o u c o u
Notons que les valeurs des cases d'indice 7 et 8 sont imprévisibles puisque non initialisées.
[modifier] Tableaux de tableaux
Si on désire stocker une matrice entière, il est possible de manipuler des tableaux de tableaux, également appelé tableaux 2D.
On peut les déclarer de deux façon strictement identique :
var m1 : array[1..5] of array[1..10] of real; m2 : array[1..5,1..10] of real;
Ainsi, m1 et m2 sont des matrices de tailles 5 sur 10 et il est possible de les manipuler comme indiquer ci-dessous :
var m1 : array[1..5] of array[1..10] of real; m2 : array[1..5,1..10] of real; begin m1[i,j] := 10; {affectation de la valeur 10 en ligne i, colonne j} m1[i] := m1[i+1]; {copie complète de la ligne i+1 sur la ligne i} m2 : =m1 {copie de la matrice complète } end.
mais il est impossible d'accéder directement à une colonne.