Le langage Java
Les tableaux statiques
Les tableaux statiques 1
Le langage Java
Notion de types composés et tableaux
Un langage de programmation évolué doit fournir le moyen de composer les types élémentaires (type de base) pour
construire des types plus complexes, les types composés (type évolué).
Exemples de données structurées
Un tableau est une variable de type composée (évoluée).
Un tableau (variable indicée) est une collection de valeurs homogènes,
constitué d’éléments qui sont tous du même type.
Ensemble de valeurs portant le même nom de variable et repérées par un indice
(indice(indice)
Il existe deux sortes de tableaux
Ceux de taille fixe, les tableaux statiques
Ceux dont la taille peut varier en cours d’exécution, les tableaux dynamiques
Les tableaux statiques 2
Le langage Java
Gestion mémoire des variables bases/évoluées
Type de base
Toute variable de type primitif (ou de base) stocke directement une valeur :
Type évolué
Toute variable de type évolué, comme les tableaux, les chaînes de caractères (String) ou objet que vous allez voir dans
ce cours, stocke une référence (adresse) vers une valeur :
Les tableaux statiques 3
Le langage Java
Les tableaux statiques (taille fixe)
Exemple : Tableau scores contenant 4 int
scores[0] scores[1] scores[2] scores[3]
1000 1500 2490 6450
On peut définir des tableaux de int, de double, de bool , ... de n’importe quel autre type (de base ou évolué).
Un tableau est une variable de type évolué donc une référence (adresse) vers une valeur.
Attention ! Les indices correspondant aux éléments d’un tableau de taille T varient entre 0 et T-1
Attention ! L’indice est toujours un entier
Déclaration d’un tableau de taille fixe ou
Déclaration d’une variable évolué scores qui référence un tableau d’entiers de taille fixe.
Exemples d’erreur sur l’indice
Il existe deux techniques pour initialiser les éléments :
1. Dans l’instruction de déclaration
2. Dans des instructions séparées
Les tableaux statiques 4
Le langage Java
Initialisation d’un tableau dans l’instruction de déclaration
L’on connaît les valeurs de tous les éléments lors de la déclaration du tableau
Situation en mémoire
Important : Un tableau n’est pas de type de base, il est donc manipulé via une référence !
On dit que la variable scores référence (ou pointe vers) un tableau d’entiers.
La variable scores contient une adresse : l’emplacement du tableau en mémoire !
Les tableaux statiques 5
Le langage Java
Initialisation d’un tableau dans des instructions séparées
Dans le cas général, on ne connaît pas les valeurs de tous les éléments lors de la déclaration du tableau
On utilise alors plusieurs instructions pour déclarer et initialiser :
1. Déclarer le type du tableau
2. Construire le tableau avec : new type [ taille ]
3. remplir le tableau élément par élément
Déclaration-construction d’un tableau de taille fixe
Deux instructions distinctes
Une seule instruction
L’instruction new int[4]; alloue l’emplacement nécessaire à un tableau de 4 éléments de type entier et en place la
référence dans scores (notez que la variable tableau une fois créé ne pourra pas voir sa taille modifiée).
En revanche, comme n’importe quelle référence à un objet, la référence contenue dans scores pourra très bien
évoluer au fil de l’exécution et désigner finalement des tableaux différents.
Valeurs par défaut
Chaque élément d’un tableau reçoit une valeur par défaut lors de la construction avec new
Les tableaux statiques 6
Le langage Java
Une fois le tableau déclaré et construit, il faut le remplir élément par élément :
Les tableaux statiques 7
Le langage Java
Accès direct aux éléments d’un tableau
Exemple : Tableau scores contenant 4 entiers
Scores[0] Scores[1] Scores[2] Scores[3]
1000 1500 2490 6450
- Les indices des tableaux commencent 0 et non à 1. Donc attention, tab [2] est le troisième élément du tableau tab!
Attention !
Les indices correspondant aux éléments d’un tableau de taille T varient entre 0 et T-1
Il n’y a pas de contrôle de débordement ! ! Il est impératif que l’élément que vous référencez existe effectivement.
Démo : Erreur accès mémoire
Il est impératif que l’élément auquel vous voulez accéder existe effectivement !
Attention ! En cas de débordement une exception est lancée par le programme
=> situation d’erreur provoquant l’arrêt du programme si on ne la traite pas
Les tableaux statiques 8
Le langage Java
Afficher un tableau de taille fixe
=> affiche la référence au tableau tab, donc une adresse.
Si l’on veut faire afficher les éléments du tableau référencé par tab, il faut prévoir une structureitérative.
Il existe en fait au moins trois façons d’itérer sur un tableau :
1. avec les itérations sur ensemble de valeurs
Attention Cette structure ne s’applique qu’à des consultations de valeurs, et en aucun cas à des modifications.
2. avec une itération for « classique »
3. avec des itérateurs (non présenté dans ce cours)
Les tableaux statiques 9
Le langage Java
Nombre d’éléments d’un tableau (taille)
Pour connaître la taille d’un tableau :
Erreur classique : accès avant construction
Les tableaux statiques 10
Le langage Java
Types de base / Types évolué (rappel)
Les tableaux statiques 11
Le langage Java
Tableaux : sémantique de l’opérateur =
L’objet que constitue le tableau de trois entiers anciennement
désigné par t1 n’est plus référencé, il deviendra candidat au
ramasse-miettes.
Les tableaux statiques 12
Le langage Java
Exercice
Donner le schéma mémoire de l’exécution de ces deux codes.
Les tableaux statiques 13
Le langage Java
Tableaux : sémantique de l’opérateur ==
L’opérateur a == b teste si les variables a et b référencent le même emplacement mémoire.
L’opérateur a == b ne teste pas l’égalité des valeurs contenues dans les tableaux pointés par a et b !
Les tableaux statiques 14
Le langage Java
Quelques exemples de manipulation de tableaux
si l’on n’a pas besoin d’expliciter les indices
si l’on veut expliciter les indices
Les tableaux statiques 15
Le langage Java
Tableaux à plusieurs dimensions
On connaît tous les éléments lors de la déclaration
On ne connaît pas tous les éléments lors de la déclaration
Les tableaux statiques 16
Le langage Java
Parcourir un Tableau à plusieurs dimensions
Le moyen le plus naturel de parcourir un tableau multidimensionnel consiste à utiliser des boucles for imbriquées :
Les tableaux statiques 17