algorithmique et initiation à la programmation java - iawebia.lip6.fr/~auzende/assas/cours1.pdf ·...

31
Licence Monnaie - finance 2012-2013 Algorithmique et programmation java 1 L3 Monnaie - Finance Algorithmique et initiation à la programmation java Première partie O. Auzende 2012-2013

Upload: doantu

Post on 30-Aug-2018

217 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

Licence Monnaie - finance 2012-2013 Algorithmique et programmation java

1

L3 Monnaie - Finance

Algorithmique et initiation à la programmation java

Première partie

O. Auzende

2012-2013

Page 2: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

2

Modalités

Cours en amphithéâtre : les lundis de 12 h à 13 h 30 (amphi 3)

o Deux fascicules de cours (polycopiés à trous) sont distribués en cours Travaux dirigés (12 séances, les TD commençant dès la première semaine du semestre)

o Un fascicule de TD est distribué lors du premier TD. Huit groupes de TD :

Horaire Salle Enseignant Mardi 18 h 50 501 O. Auzende Mardi 20 h 25 501 O. Auzende Mercredi 14 h 05 503 N. Thibault Mercredi 15 h 40 503 N. Thibault Vendredi 9 h 20 502 F. Jézéquel Vendredi 10 h 55 502 F. Jézéquel Vendredi 12 h 30 502 N. Thibault Vendredi 14 h 05 502 O. Auzende Pour les TD :

o avoir toujours les fascicules de cours et de TD avec soi o disposer dès le premier TD d’une clé USB standard

Evaluation : contrôle continu et projet

o 1 contrôle sur 20 points au TD 5 (C1) o 1 contrôle sur 20 points au TD 8 (C2) o 1 contrôle sur 30 points au TD 11 (C3)

Programme : cours et TD précédents o Un projet sur 30 points (P)

Rendu progressif, de la 6ème à la 11ème semaine Soutenance lors du TD de la 12ème semaine

Note finale sur 10 : (C1 + C2 + C3 + P)/10 En cas d’absence en TD

o Prévenir l’enseignant o Venir en TD dans un autre groupe de la même semaine o Tout contrôle non passé est sanctionné par un 0

Page 3: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

Licence Monnaie - finance 2012-2013 Algorithmique et programmation java

3

MODALITES 2

INTRODUCTION 5

Qu’est-ce que l’algorithmique ? 5

Qu’est-ce qu’un programme ? 5

Comment écrire un programme ? 5

Le langage machine 6

Les langages de programmation 6

Java, compilé et interprété 7

Applications, applets et servlets 7

ELEMENTS DE PROGRAMMATION JAVA 8

Notion de variable 8

Affectation 8

Egalité, inégalité 8

Conjonction, disjonction 9

Types de données 9

Notion d’application 10

Les tests 11

Tableaux 12

Les boucles 12

Les sauts 14

JAVA, LANGAGE A OBJETS 15

Classes et instances 15

Attributs et méthodes d’instances 18

Attributs et méthodes de classes 18

ALGORITHMIQUE 19

Permuter le contenu de deux variables 19

Pour les algorithmes sur tableaux suivants, 19

Page 4: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

4

Insérer un élément x dans un tableau à la suite des éléments existants 20

Déterminer les éléments maximum et minimum d’un tableau 20

Déterminer l’indice du maximum ou du minimum d’un tableau 20

Somme des éléments d’un tableau 21

Comptages divers 21

Insérer un élément à sa place, le tableau étant déjà rangé 22

Les tris sur tableaux 23

LES PAQUETAGES JAVA 25

Qu’est-ce qu’un paquetage ? 25

La notion d’héritage 25

Protection des attributs et méthodes 25

Les interfaces 26

Les classes d’exceptions 26

Le paquetage java.lang 27

Le paquetage java.util 28

Le paquetage java.text 31

Page 5: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

Licence Monnaie - finance 2012-2013 Algorithmique et programmation java

5

Introduction

Qu’est-ce que l’algorithmique ?

L’algorithmique est une branche des mathématiques dont le but est de trouver de trouver comment réaliser … des tâches dont le résultat … s’obtenir par une formule, mais par une succession de … effectués en fonction du résultat de tests. Quelques exemples o Nombre de jours écoulés depuis … o Maximum d’un tableau de nombres (il n’y a pas de … donnant la solution) o Somme d’un tableau de nombres (il existe une notation mathématique , mais elle n’est pas … o pour le calcul effectif) o Tri d’un tableau de nombres … La solution s’appelle un algorithme : c’est un ensemble … Exemple : il existe différents algorithmes permettant de trier un tableau de nombres, mais …

Qu’est-ce qu’un programme ?

Un programme est un … (appelées couramment des … ) permettant à un ordinateur d’exécuter une tâche plus ou moins complexe, en interaction ou non avec l’utilisateur. Exemples de programmes élémentaires Calculer : o le nombre de jours écoulés … o le maximum, le minimum, la somme des éléments d’un … o le montant … o un seuil … Trier : o un tableau … o un tableau … Exemples de programmes complexes, appelés logiciels, destinés … : o traitement … o … o programme de gestion de … o programme de … o programme de conception assistée … o programme de publication assistée …

Comment écrire un programme ?

Il faut d’abord … Il faut ensuite trouver un (ou des) … Il faut enfin traduire les instructions qui composent ces algorithmes dans un … compréhensible par un ordinateur

Page 6: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

6

Le langage machine

Le processeur d’un ordinateur ne comprend que du langage machine ( … ) composé … Toute instruction élaborée : o répéter une même … o faire des choses différentes en fonction de … se décompose ainsi en des milliers…

Les langages de programmation

o Intermédiaires entre … o Permettent de décrire les instructions élaborées de manière plus … pour former le …

du programme o Le code source doit ensuite être … en langage machine pour pouvoir être exécuté par le … o Il y a deux modes de traduction du code source :

* la … (langage dit … ) * l’ … (langage dit … )

Les langages compilés Le compilateur o est dédié à … et au … o vérifie la … du code source ; si c’est correct, génère un fichier … en langage

machine, exécutable sur toute machine … Exemples de langages compilés : Cobol ( … ), C, C++ ( … ) Avantage des langages compilés : o Le code objet s’exécute … Inconvénient des langages compilés : o Le code objet est dédié à un seul …

Les langages interprétés L’interpréteur o lit le fichier source ligne à ligne, … la syntaxe de chaque instruction et ne l’exécute que si …

Exemples de langages interprétés : HTML, javaScript, PHP ( … ), SQL Avantage des langages interprétés o On peut interpréter le fichier sur tout type d’ordinateur, à condition de disposer de l’ … adapté

à cet ordinateur Inconvénient des langages interprétés o La vérification ligne à ligne cause une certaine … à l’exécution

Page 7: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

Licence Monnaie - finance 2012-2013 Algorithmique et programmation java

7

Java, compilé et interprété

Langage développé par SUN depuis 1995. Universellement … Sur l’ordinateur sur lequel on écrit un programme Java, le fichier source est transformé par le compilateur javac en un … non exécutable, qui est … quel que soit le type de machine sur lequel on travaille. Transféré sur un autre type d’ordinateur, le pseudo-code est interprété par un … appelé … L’interpréteur :

o ne vérifie plus la syntaxe des instructions (gain de temps) o exécute directement …

Le pseudo-code est donc indépendant du type d’ordinateur sur lequel … et de celui sur lequel … Pour écrire un programme java sur un ordinateur, il suffit donc de disposer … Pour exécuter un programme java compilé, il suffit donc de disposer … Le pseudo-code est de … , donc … java est donc devenu le langage idéal …

Applications, applets et servlets

Java permet d’écrire : o Des applications : programmes …

o Des applets : petits programmes appelés dans une page HTML par la balise … et

interprétés par … o Des servlets : programmes java stockés … permettant de générer

dynamiquement des pages html en réponse à …

Page 8: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

8

Eléments de programmation Java

Notion de variable

La notion de variable en informatique est assez proche … En mathématiques, x = 5 veut dire … En informatique, x est un … dont la taille (nombre de … qui composent cet emplacement) dépend de ce qu’on veut y stocker : un entier, un réel… Le contenu de cet emplacement-mémoire peut constamment être … On écrit donc (syntaxe java) : int x ; (réservation de place … ) x = 2 ; (on y met la valeur 2) x = 5 ; (on change, on y met … ) float y ; (réservation de place … ) y = 3.5 ; (on y met la valeur 3.5)

ou bien directement : int x = 8; (les deux opérations … ) float y = 3.5 ;

Affectation

Toute instruction complète se termine par … Les deux instructions x = 5 ; x = 7 ; y = 3.5 ; donnent des valeurs ( … ) aux emplacements-mémoire x et y. Elles sont appelées des … On dit qu’on … une valeur à une variable occupant une certaine place-mémoire. Il serait plus naturel d’écrire : x 5 (x reçoit la valeur 5), y 3.5 (y reçoit la valeur 3.5), mais tous les langages de programmation actuels (C, C++, JavaScript, Java, PHP…) utilisent la notation a = b au lieu de a b.

L’écriture a = b correspond donc en fait à a b et doit se lire « a … la valeur de b ». A gauche : … A droite : … On peut affecter à une variable :

o une … x = 3; y = 5 ; z = 4 ; o la … d’une autre variable x = y; (x reçoit la VALEUR de y, donc 5) o le résultat du … d’une … x = y + z; (x reçoit la VALEUR de y + z) o le résultat du calcul d’une … t = max(x, y, z) ;

Egalité, inégalité

Egalité Le symbole = étant réservé à l’affectation, on teste l’égalité de deux variables a et b autrement. On écrit : if … qui se lit si (a = b) ... Inégalité On teste l’inégalité de deux variables a et b en écrivant : if … qui se lit si (a ≠ b) ...

Page 9: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

Licence Monnaie - finance 2012-2013 Algorithmique et programmation java

9

Exemples o si x = 4 alors y = 7 : o si annee = 2012 alors nb_jours_fevrier = 29 : o si x ≠ 10 alors y = 8 : o si mois ≠ 2 alors nb_jours > 29 :

Conjonction, disjonction

Conjonction La conjonction ET s’écrit && si (a=b) et (c=d) s’écrit donc : Disjonction La disjonction OU s’écrit | | si (a=b) ou (c=d) s’écrit donc : Exemples

o si x = 4 et y = 5 alors z = 7 : … o si annee=2012 et mois=2 alors nb_jours=29 : … o si mois =1 ou mois=3 alors nb_jours =31 : …

Types de données

Java est un langage typé Toute variable utilisée doit nécessairement être … et son … doit être … Un nom de variable doit :

o être constitué … o ne PAS comporter … ni de … o ne pas être un … du langage (liste fournie en TD)

Exemples : float revenu; int mois_annee; Les types élémentaires sont appelés des … Toute variable d’un type primitif est une variable simple, non composée (int, float…) Les types autres que primitifs sont des … (on verra plus tard)

Types de données primitifs en Java Il y a 8 types de données primitifs (les plus utilisés sont soulignés) :

o boolean : … o char : … o byte : … o short : … o int : … o long : … o float : … o double : …

L’instruction : boolean fini = false; définit une variable fini de type … et de valeur false. L’instruction : int i = 254256; définit une variable i de type … , stockée sur 32 bits et de valeur 254256 L’instruction : float f = 156.256; définit une variable f de type … , stockée sur 32 bits et de valeur 156.256

Page 10: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

10

Opérateurs de cast Pour créer une variable d’un type à partir d’une variable d’un autre type semblable (nombre et nombre, par exemple), on utilise un … Il est noté entre … Exemples float f=156.256; int j=(int)f; j est alors un entier valant 156 double t=0.567833333; float d=(float)t;

d est un flottant stocké sur 32 bits au lieu de 64 bits. On a donc perdu …

Notion d’application

Fichier Programme .java : public class Programme {

public static void main(String[] args) { int a = 25 ; int b = 76 ; System.out.println("a = " + a); System.out.println("b = " + b); }

} Un programme java est contenu dans une … La description d’une classe est faite entre une … { et une … } S’il n’y a qu’une seule classe, elle est déclarée … afin d’être accessible à tout utilisateur Le programme proprement dit figure dans une méthode appelée … déclarée sous la forme : public static void main(String[] args) Toute méthode a un … compris entre { et } Tout programme contenant une méthode appelée … est appelé … o public signale que tout le monde peut exécuter … o static indique que la méthode main est une méthode … (on verra plus tard) o void dit que la méthode main … o String[] args permet de passer … à la méthode main (ce qu’on ne fera pas) o System.out.println(chaîne) fait afficher à l’écran une … Pour

construire une chaîne à partir de plusieurs morceaux, on utilise … qui réalise leur … Compilation javac Programme.java o javac est … o Il compile le fichier Programme.java et crée le fichier … Programme.class qui n’est pas

… exécutable Exécution java Programme o java est … o Il charge le fichier … et … Résultat à l’écran a vaut : 5 b vaut : 7

Page 11: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

Licence Monnaie - finance 2012-2013 Algorithmique et programmation java

11

Les tests

Les tests permettent de faire des traitements … Le test simple : if … else Il s’écrit :

if (test) { instructions; } else { instructions; }

La clause else est … On peut avoir simplement : if (test) { instructions ; }

Exemple : fichier Programme1.java public class Programme1 {

public static void main(String[] args) { int a = 25 ; int b = 76 ; System.out.println("a = " + a); System.out.println("b = " + b); int min ; if (a < b) { min = a; } else { min = b; } System.out.println("le minimum de a et b est " + min); }

} Le test multiple : switch Il s’écrit :

switch (variable) { case 1: instructions; case 2: instructions; ... default : instructions; }

La variable testée doit être de type … Le cas … sert si l’on veut prévoir un traitement par défaut. ... dans les instructions signale que le cas est traité et que l’on saute …

Exemple : fichier Programme1b.java public class Programme1b {

public static void main(String[] args) { int num = 11 ; String mois = "" ; // type chaîne de caractères switch(num) { case 1 : mois="janvier"; break ; case 2 : mois="fevrier"; break ; case 3 : mois="mars"; break ; case 4 : mois="avril"; break ; case 5 : mois="mai"; break ; case 6 : mois="juin"; break ; case 7 : mois="juillet"; break ; case 8 : mois="aout"; break ; case 9 : mois="septembre"; break ; default : mois="au dernier trimestre"; } System.out.println("le mois est " + mois); }

}

Page 12: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

12

Tableaux

Les tableaux sont des collections de variables … , en … . On doit d’abord les … , puis faire … . Une fois qu’un tableau est créé, sa taille … On accède à l’élément d’indice i de t par t[i], les indices … Exemples int[] t ; // ou int t[]; // déclaration d’un tableau d’entiers t=new int[20]; // création de t en mémoire String[] t1 ; // ou String t1[]; // déclaration d’un tableau de chaînes t1 = new String[10] ; // création de t1 en mémoire Utilisation : fichier Tableau.java public class Tableau { public static void main(String[] args) { String[] t = new String[12] ; t[0]="janvier"; t[1]="fevrier"; t[2]="mars"; t[3]="avril"; t[4]="mai"; t[5]="juin";t[6]="juillet"; t[7]="aout"; t[8]="septembre"; t[9]="octobre"; t[10]="novembre"; t[11]="decembre"; System.out.println("Les mois de l'annee sont : "); System.out.println(t[0]); System.out.println(t[1]); System.out.println(t[2]); System.out.println(t[3]); System.out.println(t[4]); System.out.println(t[5]); System.out.println(t[6]); System.out.println(t[7]); System.out.println(t[8]); System.out.println(t[9]); System.out.println(t[10]); System.out.println(t[11]); } }

Les boucles

La boucle for La boucle for permet de … un certain nombre de fois des instructions. Elle s’écrit : for (initialisation; test_continuation; incrémentation) {instructions;} Exemple : répéter 10 fois des instructions for (int i = 0 ; i < 10 ; i++) { instructions; } o L’initialisation précise … qui contrôle la boucle et …

int i=0

o Le test est un … ( test qui doit être vérifié pour que la boucle … ) i < 10

o L’incrémentation précise comment … Généralement on écrit i++ qui veut dire i=i+1 (on passe de i à i+1, donc … )

Page 13: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

Licence Monnaie - finance 2012-2013 Algorithmique et programmation java

13

Fichier Tableau1.java : une seule instruction … public class Tableau1 { public static void main(String[] args) { String[] t = new String[12] ; t[0]="janvier"; t[1]="fevrier"; t[2]="mars"; t[3]="avril"; t[4]="mai"; t[5]="juin"; t[6]="juillet"; t[7]="aout"; t[8]="septembre";t[9]="octobre";t[10]="novembre"; t[11]="decembre"; System.out.println("Les mois de l'annee sont : "); for (int i = 0 ; i < 12; i++) { System.out.println(t[i]); } } }

Fichier Tableau2.java : on utilise deux boucles for : une pour … , l’autre pour faire … public class Tableau2 { public static void main(String[] args) { double[] t = new double[20] ; for (int i = 0 ; i < 20 ; i++) { t[i] = i ; } for (int i = 0; i < 20 ; i++) { System.out.print(t[i] + " * "); } } }

o La variable i est déclarée … o Entre les deux boucles, i … o On dit que la … se limite à la … en cours Fichier Tableau2b.java : la variable i est … o La portée de i est alors … toute entière (i est connu dans … ). public class Tableau2b { public static void main(String[] args) { double[] t = new double[20] ; int i ; for (i = 0 ; i < 20 ; i++) { t[i] = i ; } for (i = 0; i < 20 ; i++) { System.out.print(t[i] + " * "); } System.out.println("\n ---> i vaut maintenant " + i) ; } }

La boucle while Elle permet de … des instructions tant … Elle s’écrit :

while (test) { instructions ; }

Les instructions doivent modifier … une variable intervenant dans le test, pour que la boucle while ne boucle …

Page 14: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

14

Exemple : afficher les éléments d’un tableau de nombres t tant qu’ils sont inférieurs à 20. int i = 0 ; while (t[i] < 20) { System.out.print(t[i] + " ") ; i++ ; } i est modifié dans les instructions, donc t[i] correspond à chaque passage à … du tableau t. Attention cependant à ne pas dépasser … ! Si le tableau est de taille n, il faut écrire : int i = 0 ; while ((i < n) && (t[i] < 20)) { // && est la notation pour ET System.out.print(t[i] + " ") ; i++ ; }

La boucle do … while Elle permet de faire exécuter … des instructions puis de … ces instructions tant qu’un test est vérifié.

Elle s’écrit :

do { instructions ; } while (test);

Les instructions doivent modifier … une variable du test, pour que le do … while ne boucle pas …

Exemple : afficher le premier élément du tableau t, puis les éléments suivants tant qu’ils sont inférieurs au premier : int i = 0 ; do { System.out.print(t[i]+ " "); i++ ; } while ((i<n)&&(t[i]<t[0]));

Les sauts

Le break break permet … en reprenant l’exécution directement … le test ou la boucle (on saute donc … les cas suivants). Exemple : afficher les éléments du tableau t tant qu’ils sont inférieurs à 20. On arrête donc dès qu’on rencontre un élément supérieur ou égal à 20. for (int i = 0 ; i < n ; i++) { if (t[i]<20) { System.out.print(t[i]+" * "); } else { break ; } }

C’est équivalent à la boucle while ci-dessous : int i = 0 ; while ((i<n) && (t[i] < 20)) { System.out.print(t[i]+" * ") ; i++ ; }

Page 15: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

Licence Monnaie - finance 2012-2013 Algorithmique et programmation java

15

Le continue continue permet de sortir … en reprenant l’exécution à l’itération suivante. On arrête donc les instructions de l’itération en cours pour passer … Exemple : afficher les éléments du tableau t qui sont différents de 20. Deux versions, selon que l’on teste si t[i] est égal à 20 ou est différent de 20 :

Si on teste si t[i] est égal à 20, on écrit : Si on teste si t[i] est différent de 20, on écrit :

for (int i = 0 ; i < n ; i++) { if (t[i] == 20) { continue ; } else {

System.out.print(t[i]+" * "); }

}

for (int i = 0 ; i < n ; i++) { if (t[i] != 20) { System.out.print(t[i]+ " * "); } else { continue ; } }

Le return L’instruction return permet … sans nécessairement attendre la fin de celle-ci. Cette instruction ne peut donc pas figurer directement … mais sera très largement utilisée par la suite.

Java, langage à objets

Classes et instances

Un programme java peut ne contenir qu’une seule … , comme on l’a vu jusqu’à présent Cette classe, qui contient … , constitue à elle toute seule toute l’application Mais java est avant tout un « langage … », ce qui veut dire qu’une classe peut aussi être un … à partir duquel on peut fabriquer des objets qu’on appelle des … On souhaite créer des « objets » comportant : o un entier n qui représente la … d’un tableau o un tableau t de n entiers comportant les entiers 1, 2, 3, … n-1 Exemple de deux tels objets :

La classe (encore embryonnaire) correspondant à ces objets est la suivante : class ObjetTableau { // début de la classe int n ; // deux attributs : ... int[] t ; // et t ... } // fin de la classe

Page 16: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

16

Cette description signifie que tout objet de la classe ObjetTableau, dès qu’il sera créé, comportera automatiquement deux variables (qu’on appellera des … ) n et t.

Une classe correspond donc à la description d’un ensemble d’objets ayant … Les objets créés selon ce modèle sont appelés des … de la classe. Pour donner des valeurs aux attributs, donc remplir n et t, on doit ajouter dans la classe une méthode spécifique appelée … Le … est … permettant de construire des objets

class ObjetTableau { // début de la classe int n ; // deux attributs : n et t int[] t ; ObjetTableau(int a) { // le ... n = a ; // n prend la valeur ... t = new int[n] ; // on réserve la place pour ... for (int i=0 ; i < n ; i++) { t[i] = i+1 ; // remplissage de ... } } // fin du ... } // fin de ...

Créer des objets de la classe ObjetTableau se fait … , dans une autre classe qui sert de programme principal : public class ProgObjet { // début de classe public static void main (String args[ ]) { // le main ObjetTableau obj1 = new ObjetTableau(6); ObjetTableau obj2 = new ObjetTableau(3); } // fin ... } // fin ...

Ce programme crée bien les deux objets, mais pour le moment n’affiche … On ajoute donc à la classe ObjetTableau une méthode void affiche() permettant à un objet … (c’est-à-dire de s’afficher … ) : class ObjetTableau { // début de la classe int n ; // deux attributs : n et t int[] t ; ObjetTableau(int a) { // le constructeur n = a; // n prend la valeur a t = new int[n] ; // on réserve la place pour le tableau t for (int i=0;i<n;i++) { // remplissage du tableau t[i] = i+1 ; } } // fin du constructeur void affiche() { System.out.println("affichage des elements"); for (int i = 0; i < n; i++){ System.out.print(t[i]+" * "); } System.out.println(""); } } // fin de la classe

Page 17: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

Licence Monnaie - finance 2012-2013 Algorithmique et programmation java

17

On ajoute ensuite à la même classe une méthode int inferieurs(int p) permettant à un objet de calculer le nombre d’éléments de son tableau qui sont … class ObjetTableau { // début de la classe int n ; // deux attributs : n et t int[] t ; ObjetTableau(int a) { // le constructeur n = a; // n prend la valeur a t = new int[n] ; // on réserve la place pour le tableau t for (int i=0;i<n;i++) { // remplissage du tableau t[i] = i+1 ; } } // fin du constructeur void affiche() { System.out.println("affichage des elements"); for (int i = 0; i < n; i++){ System.out.print(t[i]+" * "); } System.out.println(""); } int inferieurs(int p) { int compteur = 0 ; for (int i = 0; i < n; i++){ if (t[i]<p) compteur++ ; } return compteur ; } } // fin de la classe

On ajoute enfin à … les instructions demandant aux objets créés d’exécuter ces méthodes :

public class ProgObjet { // classe principale public static void main (String args[ ]) { // main ObjetTableau obj1 = new ObjetTableau(6); obj1.affiche(); // affichage de obj1 // nb elements < 3 System.out.println(obj1.inferieurs(3)) ; ObjetTableau obj2 = new ObjetTableau(3); obj2.affiche(); // affichage de obj2 // nb elements < 4 System.out.println(obj2.inferieurs(4)) ; } // fin du main } // fin de classe

Les deux méthodes void affiche() et int inferieurs(int p) ne peuvent être exécutées que par … o On les appelle des … void affiche() affiche les éléments à l’écran, mais ne calcule rien, d’où son type de valeur de retour : … int inferieurs(int p)calcule le nombre d’éléments de t qui sont strictement inférieurs à p o int (valeur de retour) indique que le résultat … (valeur du compteur) o int p est le … de la méthode o return permet de … la valeur du compteur Le fichier comporte finalement deux classes : ObjetTableau et ProgObjet. Il y aura donc … fichiers compilés.

Page 18: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

18

Il s’agit d’une … , car il y a dans une des classes une méthode appelée … La classe principale est celle qui comporte le main ; elle … o On l’appelle aussi … l’application Le fichier doit porter le nom … , suivi de l’extension .java o Ce sera donc ici …

Attributs et méthodes d’instances

Une classe est un … permettant de construire des objets. Un objet est nécessairement créé à partir d’une classe, à l’aide … On dit que l’objet est une … de la classe et qu’il est … Mais une classe n’oblige pas forcément à créer des objets

Un objet comporte des … et dispose de … , définis dans sa classe.

Ainsi, dans la classe ObjetTableau, o n et t sont des … o les méthodes void affiche() et int inferieurs(int p) sont des …

Attributs et méthodes de classes

Une classe peut aussi comporter des … et des … . Ils sont signalés par le mot-clé … et existent dès le début de l’application Seule exception : le … est une méthode de classe, alors qu’il n’est jamais précédé de …

Exemple d’utilisation d’un attribut de classe et d’une méthode de classe pour compter les objets créés : fichier ProgObjet1.java class ObjetTableau { static int nbobjets = 0; // int n ; // attribut d’instance

int[] t ; // attribut d’instance ObjetTableau(int a) { // constructeur n = a; t = new int[n] ; for (int i=0;i<n;i++) { t[i] = i+1 ;} nbobjets++ ; // incrémentation du compteur }

Page 19: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

Licence Monnaie - finance 2012-2013 Algorithmique et programmation java

19

void affiche() { System.out.print("affichage d'un objet :"); for (int i = 0; i < n; i++){ System.out.print(t[i]+" * "); } System.out.println(""); } static void nombreObjets() { // méthode de classe System.out.println("Nombre d'objets : " + nbobjets) ; } } public class ProgObjet1 { // début de classe public static void main (String args[ ]) { // le main ObjetTableau.nombreObjets() ; // appel à la méthode de classe ObjetTableau obj1 = new ObjetTableau(6); obj1.affiche(); // affichage de obj1 ObjetTableau.nombreObjets() ; // appel à la méthode de classe ObjetTableau obj2 = new ObjetTableau(10); obj2.affiche(); // affichage de obj2 ObjetTableau.nombreObjets() ; // appel à la méthode de classe } // fin du main } // fin de classe

static int nbobjets : attribut de classe initialisé … , modifié dans … static void nombreObjets() : méthode de classe affichant le nombre d’objets, appelée dans le programme principal sur … par : ObjetTableau.nombreObjets(); Exécution Nombre d'objets : 0 affichage d'un objet : 1 * 2 * 3 * 4 * 5 * 6 * Nombre d'objets : 1 affichage d'un objet : 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * Nombre d'objets : 2

Algorithmique

Permuter le contenu de deux variables

On veut permuter le contenu de deux variables a et b. Exemple : o Avant la permutation, a contient 38 et b contient 56. o Après la permutation, a doit contenir 56 et b doit contenir 38. Si on écrit a b (a reçoit la valeur de b), a prend la valeur de b mais … Il faut donc … où l’on puisse stocker …. On écrit donc :

temp ... ; ... ... ; ... temp ;

Pour permuter deux variables, on a donc impérativement besoin …

Pour les algorithmes sur tableaux suivants,

On suppose qu’un tableau t, de taille nb, contient n nombres, n ≤ nb. Les cases t[0], t[1], …, t[n-1] du tableau sont donc … Les cases t[n], t[n+1], t[nb-1] sont …

Page 20: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

20

Insérer un élément x dans un tableau à la suite des éléments existants

Exemple Le tableau t dispose de 15 places (nb = 15) mais contient 7 nombres (n = 7), et on veut y insérer le nombre 10.

Algorithme si (n = nb) alors ... sinon faire ... ... ... ... fin faire fin si

Résultat

Déterminer les éléments maximum et minimum d’un tableau

Le tableau t est donné, ainsi que son nombre d’éléments n. On recherche le plus grand ou le plus petit élément du tableau. Algorithme de recherche du maximum

Algorithme de recherche du minimum

max ... pour i allant de 1 à n

faire si ( ... )

alors faire ... ...

fin faire fin si

fin faire fin pour A la fin de l’algorithme, max contient le plus grand élément du tableau.

min ... pour i allant de 1 à n

faire si ( ... )

alors faire ... ...

fin faire fin si

fin faire fin pour A la fin de l’algorithme, min contient le plus petit élément du tableau.

Déterminer l’indice du maximum ou du minimum d’un tableau

C’est le même algorithme, mais où on mémorise en même temps : o la plus grande (ou petite) valeur … o son …

Page 21: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

Licence Monnaie - finance 2012-2013 Algorithmique et programmation java

21

Algorithme pour l’indice du plus grand

Algorithme pour l’indice du plus petit

max ... indice ... pour i allant de 1 à n

faire si ( ... )

alors faire max ... indice ...

fin faire fin si

fin faire fin pour A la fin de l’algorithme, max contient le plus grand élément du tableau et indice contient son indice dans le tableau

min ... indice ... pour i allant de 1 à n

faire si ( ... )

alors faire min ... indice ...

fin faire fin si

fin faire fin pour A la fin de l’algorithme, min contient le plus petit élément du tableau et indice contient son indice dans le tableau

Somme des éléments d’un tableau

Il s’agit de … au fur et à mesure les valeurs des éléments du tableau. Il est donc nécessaire d’avoir une variable contenant … Algorithme : som ... pour i allant de 0 à n faire som ... fin faire fin pour A la fin, la somme des éléments du tableau est …

Comptages divers

On a besoin de variable supplémentaire. Exemple : compter le nombre d’éléments égaux à p. Algorithme : cpt ... pour i allant de 0 à n faire si ( ... ) alors faire ... ... fin faire fin si fin faire fin pour A la fin, le nombre d’éléments égaux à p est …

Page 22: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

22

Insérer un élément à sa place, le tableau étant déjà rangé

Un tableau de nb places contient n nombres déjà rangés dans l’ordre croissant. On veut y insérer un nouveau nombre. Exemple :

Principe o si le tableau est déjà plein, … o si le tableau est vide, … o sinon, c’est que le tableau est partiellement rempli :

- on cherche alors le premier indice i tel que… - on décale vers la fin du tableau les éléments d’indice allant de … - on place x en … - on augmente … d’une unité

Algorithme si ( ... ) ... sinon si ( ... ) faire t[n] ... n ... fin faire sinon faire i ... tant que ( ... ) faire i ... fin faire pour j ... faire ... ... fin faire t[i] ... n ... fin faire fin si fin si Résultat

Page 23: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

Licence Monnaie - finance 2012-2013 Algorithmique et programmation java

23

Les tris sur tableaux

Algorithme du tri tournoi Principe A partir d’un rang i, on considère l’élément … du tableau et on le compare à tous les éléments t[j] suivants. A chaque fois que t[i] est … à t[j], on permute … et … On effectue cela pour i allant du … indice à … indice. Exemple i = 0. On compare t[0] à t[1], t[2],…, t[n-1] et à chaque fois que t[0] > t[j], on permute …

A la fin de ce premier parcours, le plus petit élément est arrivé … On recommence avec i = 1 : on compare t[1] à t[2], … , t[n-1] et lorsque t[1] > t[j], on permute …

A la fin du deuxième parcours, les deux plus petits éléments sont … On recommence ensuite avec i = 2, 3, … n-2. Algorithme : pour i ... pour j ... si ( ... ) faire temp ... t[i] ... t[j] ... fin faire fin si fin pour fin pour

Page 24: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

24

Algorithme du tri à bulles Principe On compare chaque élément à son suivant. S’il lui est supérieur, on les permute ; sinon, on passe à l’élément suivant. Lorsqu’on a parcouru tout le tableau, on recommence un nouveau parcours s’il y a eu au moins une permutation. Exemple du premier parcours : ci-contre A la fin de ce premier parcours, le plus grand élément est arrivé …

Au parcours suivant, on obtient le résultat ci-contre. Les deux plus grands éléments sont … position et … position. Le tableau est trié dès qu’un parcours est fait sans … Pour contrôler l’arrêt des permutations, on utilise une variable initialisée à 0 au début de chaque parcours, et que l’on passe à 1 dès que … Il suffit alors de boucler alors tant que cette variable, à la fin d’un parcours, est égale …

Algorithme permut ... tant que ( ... )

faire permut ... pour i 0 à ... si ( ... ) faire permut ... temp ... t[i] ... t[i+1] ... fin faire fin si fin pour fin faire fin tant que

Page 25: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

Licence Monnaie - finance 2012-2013 Algorithmique et programmation java

25

Les paquetages Java

Qu’est-ce qu’un paquetage ?

Les paquetages ( … ) sont des librairies de … , de … et … regroupées selon leur fonction. Elles sont fournies en même temps que le compilateur javac et l’interpréteur java. La documentation concernant chaque paquetage est stockée sous forme de pages HTML dans un dossier spécifique o A l’université, C:\sun\appserver\docs\doc\docs\ o Chez vous, … Choisir la page index.html puis cliquer sur le lien intitulé : Java 2 Platform … API Specification

La notion d’héritage

Toutes les classes sont liées par la notion … On déclare qu’une classe dérive d’une autre classe par : class Fille extends Mere { ... }

La classe fille hérite de tous … et … de la classe mère. Un objet de la classe fille est donc un objet de la classe … (éventuellement complété par des champs et des méthodes supplémentaires), mais la réciproque est … Toutes les classes héritent d’une classe spécifique appelée … . Si on ne précise pas de clause d’héritage dans la définition d’une classe, par défaut cette classe hérite de …

Protection des attributs et méthodes

Déclarations de protection Les attributs et méthodes d’une classe peuvent être déclarés private, public, protected ou ne pas être précédés de déclaration de protection. Exemple class Truc { private int a ; protected int b ; public int c ; int d ; }

Déclaration private Les attributs et méthodes déclarés private ne sont accessibles qu’à l’intérieur de leur propre classe

a ne sera donc accessible …

Déclaration protected Les attributs et méthodes déclarés protected ne sont accessibles qu’aux sous-classes (qu’elles soient dans le même paquetage ou pas) et aux classes du même paquetage

b sera donc accessible …

Page 26: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

26

Déclaration public Les attributs et méthodes déclarés public sont toujours accessibles

c sera …

Sans déclaration Les attributs et méthodes sans aucune déclaration de protection (mode dit … ) sont accessibles par toutes les classes du même paquetage. C’est le mode de protection par défaut

d sera donc accessible …

Les interfaces

Une interface est une sorte de classe spéciale, dont toutes les méthodes sont déclarées … et … (sans code). En fait, une interface … , mais sans donner le code permettant d’exécuter ces services. Une classe qui souhaite utiliser une interface le signale par le mot implements :

class B implements C { ... } ; On dit alors qu’elle … l’interface. Dans la classe B, on doit alors donner le code de … les méthodes de l’interface. Une classe B peut hériter d’une classe A et implémenter une ou plusieurs interfaces :

class B extends A implements C, D {...} ;

class A interface C, D

extends implements

class B

Les méthodes des interfaces C et D doivent alors obligatoirement … On utilisera quelques interfaces par la suite.

Les classes d’exceptions

Lever une exception Lorsqu’une méthode est exécutée, il peut se produire des erreurs. On dit alors qu’une … est … o Une exception est un objet, instance d’une des nombreuses sous-classes de la classe Exception. Chaque méthode qui risque de provoquer une ou des erreur(s) le … par le mot … suivi de la nature des erreurs susceptibles de se produire. o Les différentes classes d’erreurs possibles sont spécifiées dans …

Exemple : dans la classe FilterInputStream, une méthode de lecture d’un fichier est déclarée sous la forme :

public int read() throws IOException Cela signale que cette lecture peut provoquer une erreur d’entrée-sortie ( … ).

Utiliser une méthode à clause throws Lorsqu’on a besoin d’utiliser une méthode risquant de provoquer des erreurs : o on englobe l’appel à cette méthode dans un bloc … (pour … l’erreur) o on précise ce qu’on fera en cas d’erreur dans une clause … (pour … l’erreur).

Page 27: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

Licence Monnaie - finance 2012-2013 Algorithmique et programmation java

27

Exemple : try { fichier.read() ; } catch (IOException) { System.out.println(" erreur de lecture ") ; return ; }

Le paquetage java.lang

java.lang = java.language Le paquetage java.lang est le seul paquetage dont ... Il comprend notamment la classe Object, … , la classe System, les classes enveloppantes, la classe Math et la classe String (classe des … ).

La classe System La classe System contient des … et des … du système. Quand on écrit System.out.println(...), on fait appel à … out de la classe System. System.out : … System.in : …

Les classes enveloppantes Les variables des types de données primitifs (int, char, double, etc) sont les seuls éléments qui ne sont … des objets dans Java. Mais on peut … à partir de ces types primitifs à l’aide des …

type nature classe enveloppante

boolean true ou false Boolean

char caractère 16 bits Character

byte entier 8 bits signé (petit entier) Byte

short entier 16 bits signé (entier court) Short

int entier 32 bits signé (entier) Integer

long entier 64 bits signé (entier long) Long

float virgule flottante 32 bits (réel simple) Float

double virgule flottante 64 bits (réel double) Double int n = 5 ; // n n’est pas un objet Integer obj1 = new Integer(n) ; // obj1 est ...

double f = 4.68756 ; // f n’est pas un objet Double obj2 = new Double(f) ; // obj2 est ...

La classe Math La classe Math contient toutes les … nécessaires pour effectuer tous les calculs mathématiques. On effectue donc l’appel à une méthode par l’instruction : …

Page 28: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

28

Exemples double j = -3.145 ; double k = Math.abs(j) ; // k ... double l = Math.pow(j,k) ; // l ... double m = Math.sqrt(p) ; // m ...

La classe String La classe String contient de très nombreuses … pour le traitement des chaînes de caractères Il est indispensable de consulter la documentation pour trouver la méthode dont on a besoin

Le paquetage java.util

java.util = utilitaires de java Il contient toutes les classes utilitaires, notamment : o Scanner : pour les … o Random : pour la …

Importation de paquetage Pour utiliser une partie d’un paquetage autre que java.lang, on utilise le mot-clé … : o import java.util.Scanner ;

on se donne le droit d’utiliser la classe Scanner …

o import java.util.Random ; on se donne le droit d’utiliser la classe Random…

o import java.util.* ; on se donne le droit d’utiliser …

Utilisation de la classe Scanner Fichier UtilScanner.java : import java.util.Scanner ; public class UtilScanner { static Scanner sc ; public static void main(String args[]) { sc = new Scanner(System.in); System.out.println("Veuillez saisir une phrase :"); String str = sc.nextLine(); System.out.println("Vous avez saisi : " + str); System.out.println("Veuillez saisir un entier :"); int n = sc.nextInt(); System.out.println("Vous avez saisi le nombre : " + n); System.out.println("Veuillez saisir un float :"); float f = sc.nextFloat(); System.out.println("Vous avez saisi le nombre : " + f); System.out.println("Veuillez saisir un double :"); double d = sc.nextDouble(); System.out.println("Vous avez saisi le nombre : " + d); } }

Page 29: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

Licence Monnaie - finance 2012-2013 Algorithmique et programmation java

29

Le programme UtilScanner.java crée un objet sc de la classe Scanner par un constructeur relié au clavier : sc = new Scanner(System.in); puis d’entrer au clavier : o une phrase : … o un entier : … o un float : … o un double : … Attention : sous Windows, les float et double doivent être entrés sous la forme … (liée à la configuration du système, comme pour Excel).

Utilisation de la classe Random Le programme UtilObjet.java suivant demande la création d’un objet o qui comporte … Le … Objet() : o crée … par l’instruction t = new float[40] ; o appelle le constructeur … de la classe Random par Random r = new Random(); l’objet

construit est appelé un … o demande à ce … de remplir le tableau par l’instruction t[i]=r.nextFloat(); La méthode nextFloat() de la classe Random génère un ... compris entre et … Fichier UtilObjet.java import java.util.Random ; class Objet { float[] t ; Objet() { t = new float[20] ; Random r = new Random(); for (int i = 0 ; i < 20 ; i++) { t[i]=r.nextFloat(); } } void affiche() { for (int i = 0 ; i < 20 ; i++) { System.out.println(t[i]); } } } public class UtilObjet { public static void main(String[] args) { Objet o = new Objet(); o.affiche(); } }

Un exemple de résultat : 0.37464726 0.008410811 0.36294508 0.9819035 0.9982327 0.2542473 0.7204915 0.52173376 0.94769883 0.7458367 0.70877224 0.2125029 0.7863865 0.22088677 0.8084339 0.76560336 0.94098556 0.81110626 0.085951984 0.12518334

Si on veut obtenir des entiers, on modifie le programme en conséquence et on fait appel à la méthode nextInt() qui génère un … dans … des entiers possibles.

Page 30: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

30

Fichier UtilObjet2.java import java.util.Random ; class Objet { int[] t ; Objet() { t = new int[20] ; Random r = new Random(); for (int i = 0 ; i < 20 ; i++) { t[i]=r.nextInt(); } } void affiche() { for (int i = 0 ; i < 20 ; i++) { System.out.println(t[i]); } } } public class UtilObjet2 { public static void main(String[] args) { Objet o = new Objet(); o.affiche(); } }

Un exemple de résultat : 1106836022 -727453113 1406092303 911562671 -1133440582 -1386178611 -1588036922 -994776228 1092643285 1158792337 1429772425 -498695102 341520753 -1052563006 -674535242 789254811 1820655005 1633617820 -1003275755 -1409624375

Si on veut obtenir des entiers compris entre 0 et m (0 … , m … ), on fait appel à la méthode nextInt(m). Exemple ci-dessous avec des entiers entre 0 (compris) et 50 (exclu) : UtilObjet3.java Fichier UtilObjet3.java import java.util.Random ; class Objet { int[] t ; Objet() { t = new int[20] ; Random r = new Random(); for (int i = 0 ; i < 20 ; i++) { t[i]=r.nextInt(50); } } void affiche() { for (int i = 0 ; i < 20 ; i++) { System.out.println(t[i]); } } } public class UtilObjet3 { public static void main(String[] args) { Objet o = new Objet(); o.affiche(); } }

Un exemple de résultat : 42 7 13 0 35 40 43 17 8 29 26 4 34 49 7 47 28 48 36 46

On peut obtenir un entier de n’importe quel intervalle [a, b[ par t[i]= ...

Page 31: Algorithmique et initiation à la programmation Java - IAwebia.lip6.fr/~auzende/Assas/cours1.pdf · Algorithmique et initiation à la programmation ... cours et TD précédents o

Licence Monnaie - finance 2012-2013 Algorithmique et programmation java

31

Le paquetage java.text

Fournit des classes pour le traitement des … Il contient notamment les classes DecimalFormat, DecimalFormatSymbol permettant d’afficher de manière variée des … Exemple : programme UtilFormat.java import java.text.* ; public class UtilFormat { public static void main(String args[]) { double d = 12556125.458997 ; System.out.println("0 : " + d) ; DecimalFormat df = new DecimalFormat() ; DecimalFormatSymbols dfs = df.getDecimalFormatSymbols(); dfs.setGroupingSeparator(' ') ; df.setDecimalFormatSymbols(dfs); System.out.println("1 : " + df.format(d)) ; df.applyPattern("#,###,##0.00 €") ; System.out.println("2 : "+df.format(d)) ; } } Exécution : 0 : 1.2556125458997E7 1 : 12 556 125,459 2 : 12 556 125,46 3 : 12 556 125,46 € Analyse du programme : System.out.println("0 : " + d) ; affichage … DecimalFormat df = new DecimalFormat() ; on crée ... DecimalFormatSymbols dfs = df.getDecimalFormatSymbols(); on récupère … dfs.setGroupingSeparator(' ') ; dans dfs, on choisit ... df.setDecimalFormatSymbols(dfs); on réassocie … System.out.println("1 : "+df.format(d)); résultat … df.applyPattern("#,###,##0.00 €") ; on ajoute … System.out.println("2 : "+df.format(d)); résultat …