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 :
L’accès à une case du vecteur se fait par accès direct comme pour la chaîne de caractères.
Pascal ne contient aucune fonction ou procédure prédéfini qui agit sur les tableaux, sauf l’affectation est donc permise.
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 :
Ecrire un programme qui remplit un tableau de taille 20 contenant des entiers
Ecrire un programme qui affiche le tableau précédent.
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_initiale
Remarque : On ne fait pas de distinction au niveau de l’algorithme.
Aucun commentaire:
Enregistrer un commentaire