Les tableaux
CHAPITRE 7
130
Côté langages
La mise en œuvre des tableaux varie assez fortement d’un langage à un autre, ce qui ne remet bien
entendu pas en cause toute la démarche algorithmique présentée dans ce chapitre.
Dans la plupart des langages actuels (C, C++, Java, C#, PHP...) les indices commencent à zéro et non à
un, comme nous l’avons choisi ici, pour plus de clarté. Cette particularité est à la clé de nombreuses
erreurs de programmation.
C/C++
On peut déclarer des tableaux statiques, dont la taille est connue lors de la compilation et fournie sous
forme d’une expression constante (mais, en C, la notion de constante symbolique n’existe pas vraiment).
Voici une déclaration correcte en C++ (mais pas en C) d’un tableau à une dimension.
const int nbElem = 20 ;
// en C++ (mais pas en C) nbElem est une
int t [nbElem] ;
// «constante symbolique» utilisable comme dimension
En C, on procédera ainsi :
#define NBELEM 20 // avant compilation, les symboles NBELEM seront remplacés par 20
.....
int t [NBELEM] ; // le compilateur «trouvera» en fait l’instruction : int t[20]
Rien n’est prévu pour les situations de débordement d’indice. On peut donc obtenir des valeurs aléatoires
ou écraser des emplacements quelconques.
Dans ces deux langages, il est possible de définir des tableaux statiques à deux dimensions (et même
d’avantage), comme dans ces déclarations :
float t1 [3] [5] ;
// tableau à 2 dimensions
float t2 [4] [5] [12]
// tableau à 3 dimensions
On peut également utiliser des tableaux dynamiques. En voici un exemple :
En C :
int nbElem ;
/* supposée contenir le nombre d’éléments souhaités */
...
float * adt ;
/* adt est un «pointeur» sur des éléments de type float */
adt = malloc (20 * sizeof (float)) ; /* on alloue un emplacement dont la */
/* taille doit etre calculée en octets */
/* on peut ensuite utiliser adt[i] comme avec un tableau statique */
CHAPITRE 7
130
Côté langages
La mise en œuvre des tableaux varie assez fortement d’un langage à un autre, ce qui ne remet bien
entendu pas en cause toute la démarche algorithmique présentée dans ce chapitre.
Dans la plupart des langages actuels (C, C++, Java, C#, PHP...) les indices commencent à zéro et non à
un, comme nous l’avons choisi ici, pour plus de clarté. Cette particularité est à la clé de nombreuses
erreurs de programmation.
C/C++
On peut déclarer des tableaux statiques, dont la taille est connue lors de la compilation et fournie sous
forme d’une expression constante (mais, en C, la notion de constante symbolique n’existe pas vraiment).
Voici une déclaration correcte en C++ (mais pas en C) d’un tableau à une dimension.
const int nbElem = 20 ;
// en C++ (mais pas en C) nbElem est une
int t [nbElem] ;
// «constante symbolique» utilisable comme dimension
En C, on procédera ainsi :
#define NBELEM 20 // avant compilation, les symboles NBELEM seront remplacés par 20
.....
int t [NBELEM] ; // le compilateur «trouvera» en fait l’instruction : int t[20]
Rien n’est prévu pour les situations de débordement d’indice. On peut donc obtenir des valeurs aléatoires
ou écraser des emplacements quelconques.
Dans ces deux langages, il est possible de définir des tableaux statiques à deux dimensions (et même
d’avantage), comme dans ces déclarations :
float t1 [3] [5] ;
// tableau à 2 dimensions
float t2 [4] [5] [12]
// tableau à 3 dimensions
On peut également utiliser des tableaux dynamiques. En voici un exemple :
En C :
int nbElem ;
/* supposée contenir le nombre d’éléments souhaités */
...
float * adt ;
/* adt est un «pointeur» sur des éléments de type float */
adt = malloc (20 * sizeof (float)) ; /* on alloue un emplacement dont la */
/* taille doit etre calculée en octets */
/* on peut ensuite utiliser adt[i] comme avec un tableau statique */
