A 11 - Tableaux
Les tableaux sont des variables qui permettent de "regrouper" plusieurs valeurs de même type. Leur intérêt est de faciliter la manipulation de l'ensemble des valeurs.
On peut créer des tableaux de tout type de variables : entier, décimaux, caractère, chaînes de caractères, booléens, etc. On peut même créer des tableaux de tableaux...
Déclarer un tableau
Comme toute variable, les tableaux doivent être déclarés en précisant leur nom et leur type. On peut soit les déclarer de façon préalable et leur affecter des valeurs ultérieurement, soit réaliser les deux opérations en une seule étape.
Le type d'un tableau est obtenu en accolant au type des variables qu'il contient les symboles []
.
Par exemple, int [] score
désigne un tableau d'entiers nommé "score" et String [] langage
un tableau de chaînes de caractères nommé "langage".
-
Déclaration seule :
L'instruction pour déclarer un tableau sans préciser les valeurs est :
type [] nomTableau = new type[nombreDeValeurs] ;
Par exemple :
int [] score = new int[4]
pour déclarer un tableau de 4 entiers nommé "score" ouString [] langage = new String[5]
pour déclarer un tableau de 5 chaînes de caractères nommé "langage". -
Déclaration et affectation simultanées :
L'instruction générale est :
type [] nomDuTableau = {valeur1, valeur2, ...} ;
Par exemple :
int [] score = {23, 45, 13, 35}
ouString [] langage = {"C++", "Java", "PHP" , "Python", "Ruby"}
Accès aux valeurs du tableau
On accède aux valeurs du tableau grâce à la syntaxe nomDuTableau [indice]
où indice est un entier compris entre 0 et "le nombre total de valeurs moins un". Attention, les valeurs étant indexées à partir de l'indice 0, la dernière valeur n'a pas pour indice le nombre total de valeurs, mais l'entier précédent.
- La première valeur du tableau "score" est obtenue par la syntaxe
score[0]
. Cette valeur, d'après la déclaration-affectation du paragraphe précédent, vaut 23. - La dernière valeur du tableau "score" est obtenue par la syntaxe
score[3]
. Elle vaut 35. - L'instruction
score[1]=44
modifie la 2e valeur du tableau, en lui affectant la valeur 44. - La syntaxe
langage[1]
donne accès à la 2e chaîne du tableau "langage", c'est à dire "Java". - L'instruction
langage[4]="Scala"
modifie la 5e et dernière valeur du tableau, en lui affectant la chaîne "Scala".
On peut lire ou modifier chaque valeur du tableau. Par exemple :
Si l'on essaie d'affecter ou de lire une valeur d'indice supérieur à l'indice maximal déclaré, un message d'erreur apparaît lors de la phase de compilation du programme, contenant par exemple l'expression "ArrayIndexOutOfBoundsException", signalant qu'on a tenté de dépasser les bornes autorisées pour l'indice du tableau.
Longueur d'un tableau
Une fois qu'un tableau est créé, on peut accéder à sa longueur à l'aide de la syntaxe nomDuTableau.length
.
Ainsi après la déclaration int [] score = {23, 45, 13, 35}
, l'instruction println(score.length)
affiche 4.
Et après la déclaration String [] langage = {"C++", "Java", "PHP" , "Python", "Ruby"}
l'instruction println(langage.length)
affiche 5.
Parcourir un tableau
Les boucles permettent de parcourir toutes les valeurs du tableau.
La syntaxefor (int i = 0; i < nomDuTableau.length ; i=i+1)
crée une boucle où la variable i prend toutes les valeurs des indices du tableau.
Par exemple :

Exemple 1 : la boucle for sert ici à lire les valeurs du tableau "effectifs".
int[] effectifs={116, 97, 105, 158, 192, 173} ;
void setup(){
size(250,250);
background(255);
fill(0, 50, 200);
}
void draw(){
for( int i=0; i < effectifs.length ; i=i+1) {
rect (10+i*39, 240-effectifs[i], 35, effectifs[i] ) ;
// rectangles de hauteur effectifs[i] , de largeur 35, espacés de 39 pixels
}
}
Exemple 2 : la boucle for sert ici à la fois à affecter les 50 valeurs du tableau et à les lire.
int[] valeurs= new int[50];
void setup(){
size(250,250);
stroke(200,50,0);
strokeWeight(5);
}
void draw(){
background(255);
float alpha = mouseX/3.0;
for( int i=0; i < valeurs.length ; i=i+1) {
valeurs[i]=floor(sin(i*alpha)*alpha);
// affectation des valeurs du tableau ; (floor = partie entière)
point (i*5, 125-valeurs[i]);
// lecture des valeurs du tableau
}
}
Tableaux à plusieurs dimensions
Les tableaux à plusieurs dimensions sont des tableaux de tableaux.
Par exemple un tableau d'entiers à deux dimensions nommé "coordonnees" se déclare par int[][] coordonnees
.
Ce tableau sera parcouru à l'aide de deux indices. On peut considérer que l'un des indices est l'indice de "ligne" et l'autre l'indice de "colonne", mais d'autres représentations sont possibles.
Une grille de cases aléatoirement noires ou blanches :
int[][] coordonnees= new int[4][5];
tableau de 4x5 valeurs
void setup(){
size(250,250);
frameRate(3);
}
void draw(){
background(255);
// fond blanc
for ( int i=0; i < 4 ;i=i+1) {
// indice de colonne
for ( int j=0; j < 5 ;j=j+1) {
// indice de ligne
coordonnees[i][j]=floor(random(0,2));
// 0 ou 1, aléatoirement
fill(coordonnees[i][j]*255);
// niveau de gris valant 0 ou 255
rect (25+50*i,50*j,50,50);
// carré placé en colonne i, ligne j
}
}
}