ASD – Type Structurés : Tableaux LSI-1
CHAPITRE IV Les Tableaux
Lorsque la résolution d'un problème nécessite l'utilisation d'un nombre assez important de
variables de même type, il sera plus facile de déclarer une seule variable et de pouvoir utiliser
plusieurs instances de cette variable avec un indice : c'est la déclaration de la variable de type
tableau.
1. Définition
Un tableau est une structure de données homogène regroupant un ensemble d'éléments de même
type.
Déclaration
Nomtableau : tableau [1.. Taille ] de Type_élément
Où Taille est un entier positif
Type_élément : le type des éléments du tableau.
Remarques
Un tableau possède généralement deux tailles :
- La taille avec laquelle il a été déclaré. C'est la taille maximale puisque elle permet de
faire la réservation mémoire nécessaire. Cette taille est soit donnée dans l'énoncé, soit
estimé d'après les données de la vie courante ou d'un cas de problème similaire.
- La taille réelle, inférieure ou égale à la taille de déclaration, soit parce que l'utilisateur a
choisi de ne pas utiliser toutes les cases réservées, ou encore, parce que certaines valeurs
ont été supprimées du tableau et de ce fait, les cases correspondantes ne sont plus
accessibles.
La manière plus adéquate (professionnelle) de déclarer un tableau est la suivante :
CONST
NbMax= TailleMax
Var
T : Tableau [1..NbMax] de type_element
Par la suite, on va saisir la taille réelle avec une boucle de saisie :
Répéter
Ecrire ("donnez la taille du tableau ≤ ",NbMax)
Lire ( n)
Jusqu'à (n≤ NbMax) et (n>0)
2. Les Tableaux unidimensionnels
On parle de tableau unidimensionnel lorsque le type des éléments du tableau est un type simple
(entier, caractère, réel, booléen, scalaire énuméré…).
Exemple :
T : tableau [1.. 20] d'entiers
Accès aux éléments
Dans la mémoire, le tableau est représenté par une suite de cases mémoires.
T [ i ] permet d'accéder à l'ième case du tableau, avec i une variable de type scalaire.
La première case est d'indice 1.
1
http://bit.ly/3klz87e
ASD – Type Structurés : Tableaux LSI-1
Traitements standards sur les tableaux
Les traitements sur les variables de type tableau nécessitent l'utilisation des structures de
contrôle répétitives.
a) Remplissage du tableau ( à partir du clavier)
Pour i de 1 à n Faire // n ≤ Taille du tableau
écrire ("Donnez un élément du tableau : ")
lire (T[i] )
FinPour
b) Affichage des éléments d'un tableau
Pour i de 1 à n Faire // n ≤ Taille du tableau
écrire ( T[i] , " ")
FinPour
Remarques
❖ Il est parfois intéressant de déclarer un nouveau type sous forme de tableau puis de
l'utiliser pour déclarer plusieurs variables de ce type
Exemple :
CONST
NbMax=30
Type
T_moyennes = Tableau [1.. NbMax] de réel
Var
Groupe1, Groupe2, Groupe3 : T_moyennes
Où groupe1 désigne le tableau des moyennes du groupe 1
Où groupe2 désigne le tableau des moyennes du groupe 2
Où groupe3 désigne le tableau des moyennes du groupe 3
3. Les Tableaux de caractères (chaines de caractères)
Les variables de type chaine de caractères sont très utilisées en programmation. Toutefois, la
déclaration et les modules (fonctions) de manipulation de ces variables diffèrent d'un langage
de programmation à un autre.
En algorithmique, le type chaine de caractère n'est pas prédéfini, ce qui fait qu'en principe il n'y
a aucune fonction de traitement de chaine de caractère prédéfinie en algorithme.
Nous allons donc voir au fur et à mesure comment écrire les différents algorithmes
correspondants (réinventer la roue ;-) )
Le type chaine de caractère sera défini à l'aide d'un tableau, mais la manipulation sera nettement
différent au niveau de la saisie et de l'affichage
Remarque :
A la différence des autres tableau, la dernière case d'un tableau de caractère contient un
marqueur de fin (caractère spécial '\0' ).
Ce caractère est ajouté automatiquement par le système d'exploitation lors de la saisie de la
chaine, lorsque l'utilisateur appuie sur la touche entrée.
http://bit.ly/3klz87e
ASD – Type Structurés : Tableaux LSI-1
a- Déclaration du type chaine de caractères :
Const
Nbmax=30
Type
Chaine = Tableau [1..NbMax] de caractère
b- déclaration de variable chaine de caractères
Var
nom, prénom : chaine
c- Traitement sur les variables de type chaine
Pour la saisie et l'affichage d'une variable de type chaine, nous aurons le choix entre
deux manières de faire
Traitement Manière Facile/simple Manière fastidieuse, non pratique pour l'utilisateur
saisir une chaine de Ecrire ("Saisir votre nom:") Ecrire ("Saisir votre nom:")
caractères lire (nom Pour i de 1 à n faire
écrire ("saisir un caractère du nom :")
lire (nom[i])
FinPour
Afficher les caractères Ecrire (nom) Pour i de 1 à n faire
d'une chaine de caractères écrire (nom[i])
FinPour
Affecter un contenu à une prenom "Mehdi" ** cette affectation n'est pas possible que pour un
chaine tableau de caractère
Initialiser une chaine nom "" ** cette initialisation n'est possible que pour un
tableau de caractères
Pour les autres traitements (recherche, tri, …) on utilise les boucles de parcours comme
pour n'importe quel tableau.
4. Exemples d'algorithmes de traitements sur les chaines
a- déterminer la longueur d'une chaine
L0
i1
TantQue ( nom[i] ≠ '\0') )
LL+1
ii+1
FinTantQue
b- concaténer deux chaines
L1 long (ch1) // on suppose qu'on dispose de la fonction long qui retourne le
L2 long (ch2) // nombre de caractères d'une chaine
Si ( L1=0) ET (L2= 0) alors
ch_resultat[ 0] '\0' // ou ch_resultat =""
sinon
Pour i de 1 à L1 faire
ch_resultat [i] ch1[i] // le caractère '\0' ne sera pas copié
FinPour
Pour j de 1 à L2 faire
ch_resultat[ i ] ch2 [ j ]
ii+1
finPour
ch_resultat[ i ] '\0' // ajouter le marqueur de fin
FinSi
3
http://bit.ly/3klz87e
ASD – Type Structurés : Tableaux LSI-1
5. Les Tableaux à deux dimensions (Matrice)
Déclaration
1ère manière :
Nomtableau : tableau [1..Taille] de Type_élément
Où Taille est un entier positif
Type_élément : un tableau.
Exemple :
Const
NbMax=30
Type
mots = tableau [1.. NbMax] de caractères
VAR
T_noms : tableau [1..20] de mots
2ème manière :
Nomtableau : tableau [1..Taille1] de Tableau [1..Taille2] de Type_élément
Où Taille1 et Taille2 des entiers positif
Type_élément : un type quelconque mais pas un tableau.
Exemple :
VAR
T_moyennes : tableau [1..5] de Tableau [1..30] de réels
Où T_moyennes désigne un tableau des moyennes des 30 étudiants des 5 groupes.
Accès aux éléments
Le tableau est représenté par Taille1 lignes. Chaque ligne comporte Taille2 cases
mémoires.
T [ i , j] permet d'accéder à la jème case de la ième ligne du tableau, avec i et j des
variables de type scalaire.
http://bit.ly/3klz87e