Tableau à une dimension (vecteur)
Un tableau à une dimension (ou un vecteur) d'ordre (de cardinalité) « n » est un ensemble de « n » valeurs de même type et portant le même nom de variable. Ces valeurs sont identifiées grâce à un nombre appelé indice qui sert à repérer chaque valeur du vecteur séparément.
De ce fait, à chaque fois que nous devons désigner un élément du vecteur, nous faisons figurer le nom du vecteur, suivi de l'indice de l'élément entre deux crochets. La figure ci-dessous représente un vecteur d'entiers :
Une variable vecteur est déclarée en utilisant la réservation statique de la mémoire. Donc, sa taille est fixe du début jusqu'à la fin de l'exécution du programme qui contient cette variable.
Syntaxe de déclaration d'un vecteur
Un tableau à une dimension est déclaré en précisant le nombre et le type de valeurs qu'il contiendra.
Syntaxe : Déclaration d'un vecteur
La déclaration d'un vecteur se fait comme suit :
VAR
Nom_tableau : TABLEAU [indice_minimum .. indice_maximum] DE type_des_éléments ;
Ou en langage C :
type_des_éléments : Nom_tableau [nombre_d'éléments];
Exemple : Déclaration d'une variable vecteur
Tab : TABLEAU [1 .. 100] D'Entier ;
Note : TABLEAU [1 .. 10] DE Réel ;
Pour la variable Tab déclarée ci-dessus :
Le nom de la variable est Tab, il est fixe.
La taille de la variable est 100. Elle est fixe car la réservation utilisée est statique.
Le type des valeurs que contiendra la variable est Entier.
Complément : Plus de détails
Lorsque nous déclarons un vecteur, nous déclarons aussi de façon implicite toutes les variables indicées qui le constituent.
En règle générale, l'indice minimum vaut 1. Mais dans certains langage de programmation, on utilise l'indice 0, comme indice minimum. Lorsque l'indice minimum est 1, la taille du vecteur (nombre d'éléments) est égale à la valeur de l'indice maximum.
Le type de l'indice doit être un type ordinal (i.e. Entier mais jamais Réel).
Manipulation d'un vecteur
Les éléments d'un vecteur sont des variables indicées qui sont utilisées exactement comme n'importe quelles autres variables classiques [1]. Autrement dit :
Elles peuvent faire l'objet d'une affectation.
Elles peuvent figurer dans une expression arithmétique ou dans une comparaison.
Elles peuvent être affichées et saisies.
Nous accédons aux éléments d'un tableau en utilisant la syntaxe suivante : Nom_tableau [indice], c'est la même syntaxe que nous utilisons en langage C.
Exemple : Illustrations
Si Tab1 est un tableau de 10 entiers alors :
L'instruction Tab1 [2] <- 5 permet de mettre la valeur 5 dans la deuxième case du vecteur.
En considérant le cas où A est une variable de type entier, l'instruction A <- Tab1 [2] permet de mettre la valeur de la deuxième case du vecteur dans A (i.e. A <- 5).
LIRE (Tab1 [1]) permet de mettre l'entier saisi par l'utilisateur dans la première case du vecteur.
ÉCRIRE (Tab1 [2]) permet d'afficher sur l'écran la valeur de la deuxième case du tableau.
Remarque : Gardez en tête !
Il ne faut pas confondre l'indice d'un élément et la valeur de cet élément. En d'autres termes, il ne faut pas confondre « i » avec « Tab [i] ; ».
De même qu'une variable possède toujours une valeur (qui peut être indéterminée), un tableau peut très bien posséder des éléments dont la valeur est indéterminée. Donc avant d'utiliser un tableau, il est donc nécessaire de l'initialiser.
Exemple : Remplir et afficher un vecteur
Écrire un algorithme permettant de remplir un tableau de 10 cases d'entiers, ensuite d'afficher le contenu des cases.
ALGORITHME Lecture_Affichage ;
CONST N = 10 ;
VAR
Tab : TABLEAU [1..N] d'Entier;
i : Entier;
DÉBUT
POUR i ALLANT DE 1 A N FAIRE
LIRE (Tab[i]) ;
FIN POUR ;
POUR i ALLANT DE 1 A N FAIRE
ÉCRIRE (Tab[i]) ;
FIN POUR ;
FIN.
Exemple : Additionner les éléments de deux vecteurs
Nous disposons de deux vecteurs T1 et T2 et nous voulons réaliser la somme élément par élément des deux vecteurs. Ça consiste à additionner les éléments de même indice et les mémoriser dans un vecteur T3.
ALGORITHME Add_Tab ;
CONST M = 100;
VAR
T1,T2,T3 : TABLEAU [1..M] d'Entier ;
i, N : Entier;
DÉBUT
RÉPÉTER
ÉCRIRE (' Donnez la taille des vecteurs');
LIRE (N);
JUSQU'A (N <= M) ET (N>0);
POUR i ALLANT DE 1 à N FAIRE
LIRE(T1[i]) ;
FIN POUR;
POUR i ALLANT DE 1 à N FAIRE
LIRE(T2[i]) ;
FIN POUR ;
POUR i ALLANT DE 1 à N FAIRE
T3[i] <- T1[i] + T2[i] ;
FIN POUR ;
POUR i ALLANT DE 1 à N FAIRE
ÉCRIRE (T3[i]) ;
FIN POUR;
FIN.
Exemple : Recherche séquentielle dans un vecteur
Écrire un algorithme qui recherche une valeur, lue à partir du clavier, dans un vecteur. L'algorithme doit renvoyer la position de la valeur recherchée si elle existe.
ALGORITHME Recherche;
CONT M = 20;
VAR
V : TABLEAU[1..M] D'Entier ;
D, i: Entier ;
Trouve : Booléen ;
DÉBUT
(* remplir le vecteur V *)
POUR i ALLANT DE 1 à M FAIRE
LIRE(V[i]) ;
FIN POUR;
(* lire la valeur recherchée *)
ÉCRIRE ('Veuillez saisir la valeur recherchée') ;
LIRE(D) ;
(* vérifier si la valeur rechérchée existe dans le vecteur *)
i <- 1 ;
Trouve <- Faux ;
TANT QUE (i <= M) et (NON Trouve) FAIRE
SI (V[i] = D) ALORS
Trouve <- Vrai ;
SINON
i <- i + 1 ;
FIN SI;
FIN TANT QUE ;
(* afficher la position de la valeur recherchée si elle existe *)
SI (Trouve = Vrai) ALORS
ÉCRIRE ('La position de la valeur recherchée est : ', i) ;
SINON
ÉCRIRE ('La valeur recherchée n'existe pas dans le tableau') ;
FIN SI;
FIN.