Nous avons précisé la nature des éléments utilisés dans nos programmes. Parfois nous avons travaillé avec des entiers et il a fallu déclarer ces entiers avant leur utilisation en précisant leur type c'est à dire le type int (integer). Nous avons aussi utilisé des nombres décimaux lorsque nous avons programmé l'algorithme de résolution d'une équation du second degré dans R. Nous avons alors déclaré ces décimaux sous le type double.
Il existe d'autres types pour répondre à la variété des programmes possibles. Il y a les types élémentaires (boolean, byte, int , long, float, double, char) puis les types composites .
Une variable est d'un type composite lorsqu'elle est composée de plusieurs types. La premier type composite est le tableau : La collection est toujours de même taille, fixée dès la déclaration de la variable et tous les éléments sont du même type élémentaire. Vous verrez plus tard d'autres types composite.
A ce stade nous voilà obligés de parler de la notion de référence . Dans un premier abord cela peut paraître compliqué et inutile, mais nous verrons souvent en informatique qu'il est nécessaire d'être un peu abstrait pour pouvoir mieux programmer ensuite. Si on écrit :
double delta = 4;
Le nom de la variable delta est ce avec quoi nous désignons une variable de notre programme, mais ce nom est la face "humaine" de cette variable. Il y a une face
"machine" ou référence ou adresse mémoire. Cette référence localise en mémoire le contenu de delta c'est à dire 4.
La référence est matérialisée dans le schéma ci-dessus par le pourtour de la case contenant 4. En utilisant le langage des fonctions on pourrait dire que:
delta ----> r ---> 4
la variable delta est liée de manière univoque à une référence r qui est à son tour correspond de manière univoque à la valeur 4.
Si je veux faire un programme portant sur des polynômes à coefficients entiers il me faut un endroit où stocker en mémoire les coefficients de mon polynôme. Supposons que j'ai le polynôme -2x3 +4x2- x +3 alors les coefficients du polynôme sont dans l'ordre croissant 3 puis -1 puis 4 puis -2
Comment stocker ensemble 3 , -1 , 4 et -2 ?
D'abord on déclare une variable poly comme tableau d'entiers.
int[] poly;
A la déclaration on ne précise pas la taille donc contrairement aux variables de type élémentaire la variable poly n'est pas associée à une référence qui ensuite correspond à une partie de la mémoire où il y aurait 3 , -1 , 4 et -2. Nous avons :
poly ----> r
Dans un second temps on précise la taille du tableau, ici on prendra 8 par l'instruction new
new int[8];
ce qui donne r' ---> [0,0,0,0,0,0,0,0]
Enfin l'affectation fait le lien
int[] poly = new int[8];
ce qui donne poly ----> r ---> r' ---> [0,0,0,0,0,0,0,0]
Enfin l'affectation de chaque élément du tableau :
poly[0] = 3;
poly[1] = -1;
poly[2] = 4;
poly[3] = -2;
ce qui donne poly ----> r ---> r' ---> [3,-1,4,-2,0,0,0,0]
Voici de manière imagée comment en Java on va stocker ce polynôme en mémoire.
Faire un programme qui calcule la somme de deux polynômes:
class sommePoly {
public static void main (String[] args) {
// déclaration
int[] poly1 = new int[8];
int[] poly2 = new int[8];
int[] somme = new int[8];
// Entrée des données
........à compléter faire une boucle for
// Calcul de la somme
........ à compléter
}
Faire un programme qui calcule la dérivée d'un polynôme.
Faire un programme qui calcule le produit de deux polynômes.(difficile )