Les tableaux :
Un tableau est une variable qui peut contenir plusieurs données de même type.
Par exemple un tableau d’entiers (chaque cases du tableau contient un entier), un tableau de réels ou d’autres types de données. Les éléments d'un tableau sont rangés de façon séquentielle et repérés par un indice qui donne leur position.
La syntaxe de déclaration d’un tableau est semblable à celle d’une variable classique :
type nomDuTableau[nombreDelements] ;
nombreDelements : constante entière qui désigne le nombre d’éléments du tableau.
type : le type d'éléments contenus dans le tableau.
Exemple :
int a[10] ; // tableau a capable de mémoriser 10 entiers.
char s[20] ; // tableau s capable de mémoriser 20 caractères.
Propriétés des tableaux :
- Un tableau peut contenir n’importe quel nombre d’éléments ; ces éléments sont du même type;
- En langage C, le premier élément a pour indice zéro ;
- Un tableau peut être utilisé comme opérande d’un opérateur d’incrémentation (a[4]++) ou de décrémentation (--a[2]) ;
- Un indice a la forme de n’importe quelle expression arithmétique du type entier (par exemple si n et p sont de type int : les syntaxes de tableaux a[p - 2] et a[2*n + p] sont correctes) ;
- Le nombre d’éléments d’un tableau est une constante ou une expression constante. Il doit être précisé lors de la déclaration du tableau;
- Un tableau est caractérisé par ses dimensions : il y a des tableaux à une dimension ou tableaux ligne ; des tableaux à deux dimensions ou matrice ; des tableaux à trois dimensions ou cube (ce type de tableaux ajoute une dimension spatiales au tableau à deux dimensions) ; des tableaux à quatre dimensions (ce type de tableaux ajoute une dimension temporelle au tableau à trois dimensions);
- Les dimensions d’un tableau ne sont limitées que par l’espace mémoire ou les limites du compilateur;
Initialisation d’un tableau :
Un tableau peut être initialisé lors de sa déclaration par une liste d’éléments :
Syntaxe :
type nomDuTableau[nombreDelements] = {element1, …, elementn} ;
Exemple :
int J[5] = {10, 15, 20, 25, 30} ;
char s[4] = {‘a’, ’e’, ’o’, ’u’} ;
L’accès aux éléments du tableau se fait à l’aide des indices, en utilisant la syntaxe suivante :
nomDuTableau[indicen]
Exemple :
Exemple 1 :
int J[5] = {10, 15, 20, 25, 30} ;
L’instruction :
J[2] = 82 ;
Remplace le troisième élément du tableau par 82. Après son évaluation, le tableau J ressemblera à ceci:
{10, 15, 82, 25, 30}
Exemple 2 :
int i, a[10] ; //
for ( i=0, i < 10, i++)
{
a[i] = 0 ;
}
Ce programme initialise à 0 tous les éléments du tableau.
L’instruction a[5] = 8 ; affecte la valeur 8 au sixième élément du tableau.
Tableau à plusieurs dimensions :
Les tableaux peuvent avoir n’importe quelles dimensions, les limites étant fixées par le compilateur.
La syntaxe suivante montre comment on peut déclarer un tableau à n dimensions :
type nomDuTableau[nombreDelements1]…[nombreDelementsn] ;
Exemple :
int tab1[10][10] ; // tableau à 2 dimensions 10 x 10, soit 100 éléments.
int tab2[10][10][10] ; // tableau à 3 dimensions 10 x 10 x 10, soit 1000 éléments
Pour un tableau à deux dimensions: tab[x][y], le premier indice, x représente la ligne, puis le second, y la colonne.
Pour un tableau à trois dimensions: tab[z][x][y], le premier indice, z représente le plan, le second, x la ligne et le troisième, y la colonne.
Initialisation :
Pour initialiser un tableau à n dimensions, il faut utiliser le principe des listes dans une liste.
Syntaxe :
type nomDuTableau[nombreDelements0]…[nombreDelementsn] = {{donnée,...,donnée},
.
.
.
{donnée,...,donnée}}
Exemple :
int a[3][3] = {{10, 20, 30},
{40, 50, 60},
{70, 80, 90}};
a[0][0] = 10
a[0][1] = 20
a[0][2] = 30
a[1][0] = 40
a[1][1] = 50
a[1][2] = 60
a[2][0] = 70
a[2][1] = 80
a[2][2] = 90
int b[2][2][2] = {{{0,1},{2,3}},{{4,5},{6,7}}} ;
b[0][0][0] = 0
b[0][0][1] = 1
b[0][1][0] = 2
b[0][1][1] = 3
b[1][0][0] = 4
b[1][0][1] = 5
b[1][1][0] = 6
b[1][1][1] = 7
Exemple :
Ce programme affiche des nombres de 0 à 90 par saut de 10 :
int main(void)
{
int i = 0 ;
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} ;
while (i < 10)
{
a[i] *= 10 ;
print("%d\n", a[i]) ;
i++ ;
}
while(1) ;
}