Les tableaux
CHAPITRE 7
120
donnez 15 valeurs entières : 12 8 9 -5 0 15 3 21 8 8 4 -7 7 10 9
voici vos valeurs triées par ordre croissant :
-7 -5 0 3 4 7 8 8 8 9 9 10 12 15 21
Tri d’un tableau à une dimension
6 Contraintes sur la dimension d’un tableau
Il arrive souvent qu’après avoir réalisé et utilisé un programme travaillant sur un tableau de
dimension donnée on ait besoin de l’adapter pour qu’il travaille avec un tableau de taille différente. La modification est alors possible mais elle nécessite parfois beaucoup d’attention.
Par exemple, supposons qu’un programme utilise un tableau de 15 éléments :
taleau entier t [15]
et que vous souhaitiez maintenant qu’il fonctionne avec un tableau de 25 éléments. Il vous
faudra, bien sûr, transformer 15 en 25 dans votre déclaration :
tableau entier t [25]
Mais il vous faudra également intervenir dans le programme au niveau de tout ce qui
concerne le nombre d’éléments du tableau. Il est probable qu’il faudra modifier 15 en 25 en
d’autres endroits mais, de plus :
• il n’est pas certain que cette modification doive être systématique, la valeur 15 pouvant apparaître, également, de façon indépendante du nombre d’éléments du tableau ;
• d’autres modifications, moins évidentes, peuvent être nécessaires : le nombre d’éléments
peut très bien être « caché » dans une constante telle que 14, si elle représente le nombre
d’éléments moins un (par exemple dans un tri du tableau, comme celui du paragraphe
précédent)...
En fait, l’adaptation de notre programme serait manifestement facilitée si ce nombre
d’éléments (15) n’apparaissait qu’en un seul endroit du programme. On pourrait penser à utiliser une variable déclarée ainsi :
entier nbElem := 15
et à déclarer ainsi notre tableau :
tableau réel t [nbElem]
// incorrect : nbElem est une variable
Mais, comme nous l’avons déjà indiqué, le traducteur du programme a généralement besoin
de connaître la dimension du tableau pour en réserver l’emplacement. Cette démarche
interdit alors l’utilisation d’une variable qui, par nature, voit sa valeur déterminée (et
éventuellement modifiée) lors de l’exécution. En revanche, comme nous l’avons vu au
paragraphe 6.2 du chapitre 2, page 32, la notion de « constante symbolique » permet de
définir des valeurs connues du traducteur. Nous pourrons alors procéder ainsi :
entier constant nbElem := 15
tableau réel t [nbElem]
// correct : nbElem est une constante symbolique
D’une manière générale, la dimension d’un tableau pourra être fournie, non seulement sous
forme d’une constante, mais aussi d’une expression constante. Rappelons qu’il s’agit d’une
CHAPITRE 7
120
donnez 15 valeurs entières : 12 8 9 -5 0 15 3 21 8 8 4 -7 7 10 9
voici vos valeurs triées par ordre croissant :
-7 -5 0 3 4 7 8 8 8 9 9 10 12 15 21
Tri d’un tableau à une dimension
6 Contraintes sur la dimension d’un tableau
Il arrive souvent qu’après avoir réalisé et utilisé un programme travaillant sur un tableau de
dimension donnée on ait besoin de l’adapter pour qu’il travaille avec un tableau de taille différente. La modification est alors possible mais elle nécessite parfois beaucoup d’attention.
Par exemple, supposons qu’un programme utilise un tableau de 15 éléments :
taleau entier t [15]
et que vous souhaitiez maintenant qu’il fonctionne avec un tableau de 25 éléments. Il vous
faudra, bien sûr, transformer 15 en 25 dans votre déclaration :
tableau entier t [25]
Mais il vous faudra également intervenir dans le programme au niveau de tout ce qui
concerne le nombre d’éléments du tableau. Il est probable qu’il faudra modifier 15 en 25 en
d’autres endroits mais, de plus :
• il n’est pas certain que cette modification doive être systématique, la valeur 15 pouvant apparaître, également, de façon indépendante du nombre d’éléments du tableau ;
• d’autres modifications, moins évidentes, peuvent être nécessaires : le nombre d’éléments
peut très bien être « caché » dans une constante telle que 14, si elle représente le nombre
d’éléments moins un (par exemple dans un tri du tableau, comme celui du paragraphe
précédent)...
En fait, l’adaptation de notre programme serait manifestement facilitée si ce nombre
d’éléments (15) n’apparaissait qu’en un seul endroit du programme. On pourrait penser à utiliser une variable déclarée ainsi :
entier nbElem := 15
et à déclarer ainsi notre tableau :
tableau réel t [nbElem]
// incorrect : nbElem est une variable
Mais, comme nous l’avons déjà indiqué, le traducteur du programme a généralement besoin
de connaître la dimension du tableau pour en réserver l’emplacement. Cette démarche
interdit alors l’utilisation d’une variable qui, par nature, voit sa valeur déterminée (et
éventuellement modifiée) lors de l’exécution. En revanche, comme nous l’avons vu au
paragraphe 6.2 du chapitre 2, page 32, la notion de « constante symbolique » permet de
définir des valeurs connues du traducteur. Nous pourrons alors procéder ainsi :
entier constant nbElem := 15
tableau réel t [nbElem]
// correct : nbElem est une constante symbolique
D’une manière générale, la dimension d’un tableau pourra être fournie, non seulement sous
forme d’une constante, mais aussi d’une expression constante. Rappelons qu’il s’agit d’une
