Les tableaux unidimensionnels

Les tableaux unidimensionnels

1. Introduction :

Les structures de données déjà vues ne sont pas suffisantes (les entiers, les réels, les chaînes de caractères…) en effet il ne permettent pas de stocker des données assez nombreux, une liste d’élèves par exemple. Donc on a besoin d’une autre structure de données. Ce sont les tableaux. On n’étudiera que les tableaux unidimensionnels ou vecteurs.


2. Notion de vecteur.

On veut stocker les notes de 10 élèves pour un certain traitement. On a donc :

Le tableau Notes qui contient 10 réels :

13

10.5

15

18.25

17

9

16

15.25

12

16


Ce tableau est un vecteur, qui est remplie comme suit (Algorithme) :

Notes[1]<- 13

Notes[2]<- 10.5

.

Notes[10]<- 16.


Commentaires :

  1. L’accès à une case du vecteur se fait par accès direct comme pour la chaîne de caractères.

  2. Pascal ne contient aucune fonction ou procédure prédéfini qui agit sur les tableaux, sauf l’affectation est donc permise.

  3. La case Notes[i] joue un rôle similaire à une variable réelle (dans ce cas) on peut donc appliquer une fonction comme Round(x) par exemple, cependant cette fonction n’a pas été appliquée sur le tableau mais sur un élément du tableau.

3. Déclaration d’un tableau :

* Au niveau de l’algorithme :

Objet

Type/Nature

Nom_Tableau

Tableau de Taille de Type_élément

Exemple :

Objet

Type/Nature

Notes

Tableau de 10 réels


* Au niveau du Pascal :

Var

Nom_Tableau : array[BorneInf..BorneSup] of Type_élément.


Exemple :

Var

Notes : array[1..10] of real.


Commentaires

1) La borne inférieure du tableau n’est pas toujours égale à 1, cette déclaration est possible :

Var

Notes : array[7..16] of real.

Mais dans ce cas le séquence se l’affectation doit être modifié :

Notes[7]<- 13

Notes[8]<- 10.5

.

2) Tout élément du tableau joue le rôle d’une variable de son type, par exemple

Soit ce programme

Var

Liste : array[1..5] of string[25] ;

S :string[51]

Begin

Readln(Liste[1]) ;

Readln(Liste[2]) ;

S :=concat(Liste[1],’ ‘,Liste[2]) ;

Writeln(S) ;

Writeln(Liste[1]) ;

End.

  • Ce programme est valide :

Par contre celui là ne l’est pas :

Var

Liste :array[1..5] of string ;

Begin

Readln(Liste) ; {FAUX}

Writeln(Liste) ; {FAUX}

End.


Application :

  1. Ecrire un programme qui remplit un tableau de taille 20 contenant des entiers

  2. Ecrire un programme qui affiche le tableau précédent.

  3. Ecrire un programme qui inverse le tableau précédent.

Annexe : La boucle For ... do :

Dans cette boucle on a deux cas

Si valeur_initiale>valeur_finale on utilse : For compteur :=V_init to V_fin do

Si valeur_initialeFor compteur :=V_init downto V_fin do

Remarque : On ne fait pas de distinction au niveau de l’algorithme.

Aucun commentaire: