Académique Documents
Professionnel Documents
Culture Documents
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 :
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’une variable évolué scores qui référence un tableau d’entiers de taille fixe.
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 !
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.
Une fois le tableau déclaré et construit, il faut le remplir élément par élément :
- 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.
Il est impératif que l’élément auquel vous voulez accéder existe effectivement !
Si l’on veut faire afficher les éléments du tableau référencé par tab, il faut prévoir une structureitérative.
Attention Cette structure ne s’applique qu’à des consultations de valeurs, et en aucun cas à des modifications.
Exercice
Donner le schémé mémoire de l’exécution de ces deux codes.
}
}
y[0][0] = 1;
y[0][1] = 2;
y[1][0] = 3;
y[1][1] = 4;
y[2][0] = 5;
y[2][1] = 6;
Figures
Notion de types de bases et types composés
Un langage de programmation évolué doit fournir le moyen de composer les types élémentaires pour construire des
types plus complexes, les types composés.
Exemples de données structurées
Ajout
Types de base et types évolués (2) I Toute variable de type de base stocke directement une valeur
I Toute variable de type évolué stocke une référence vers une valeur
+ Attention : ceci a une très grande incidence sur la sémantique des
opérateurs = et == en Java !
+ Cela a aussi un incidence sur l’affichage
I double x = 13.5 veut dire « J’affecte à x la valeur 13.5 »
I String s = "coucou" veut dire « J’affecte à s une référence à la chaîne de
caractères coucou »
En clair, si v1 et v2 sont de type évolué :
I v1 = v2 affecte l’adresse de v2 à la variable v1
I v1 == v2 compare l’adresse de v2 avec celle de v1
I System.out.println(v1); affiche l’adresse de v1 (dans le cas général)
Nous y reviendrons . . .