Langage Pascal/Les tableaux

Une page de Wikiversité.

Computer-aj aj ashton 01.svg

Langage Pascal/Les tableaux est une ébauche concernant l'informatique. Vous pouvez aider le projet Wikiversité en l'améliorant.


Les tableaux
Computer-aj aj ashton 01.svg
Chapitre 4
Leçon : Langage Pascal
Chap. préc. : Variables et affectation
Chap. suiv. : Instruction conditionnelle
Icon falscher Titel.svg

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.

Nuvola apps important.svg 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.