Bases de la programmation Java - maurise-software.e ...maurise-software.e-monsite.com/medias/files/introduction-2.pdfBases de la programmation Java Introduction 23 Types de base Java
Post on 13-Jul-2020
8 Views
Preview:
Transcript
1
Bases de la programmationJava
Introduction
Bases de la programmation Java Introduction
2
Plan1 Informations utiles2 Langages de haut niveau3 Présentation du langage Java4 Syntaxe de base5 Un langage Objets / Valeurs6 Les tableaux en Java
2
Bases de la programmation Java Introduction
3
1. INFORMATIONS UTILESEnseignement
l Cours →→→→ 9 séances de 2 heuresl Travaux dirigés →→→→ 11 séances de 2 heuresl Projet →→→→ à faire en groupe
Enseignant (pour le cours)l Yann Viémontl Bt. Descartes — Bureau 304-a — Poste 54046l Laboratoire PRiSM — CNRS UMR 8144l Http://www.prism.uvsq.fr/~viemontl GSM : 06 19 14 32 57 (pour les cas d ’urgence)
Bases de la programmation Java Introduction
4
Programme de l’ UE7-InfoBases de la programmation Java
l Syntaxe de base (rappels)l Tableaux complexes en Java
La programmation objet en Javal Notions d ’objets (rappels)l Interfaces et polymorphismel Héritagel Classes abstraites
Structures de données abstraites et implémentations Javal Listesl Pilesl Files
3
Bases de la programmation Java Introduction
5
2. LANGAGES DE HAUT NIVEAU
Avantagesl Compréhensible par l’homme (non binaire)l Indépendant des matérielsl Manipulation des données complexes (entiers, réels,
tableaux, objets : dessins, livres, …)l Manipulation des expressions complexes (A*B)/Cl Mécanismes élaborés d’enchaînement des instructionsl Organisation des programmes (modularité, visibilité,
protection, …)Nécessite un traducteur (compilateur / interpréteur)
Bases de la programmation Java Introduction
6
CompilateurLe code source est indépendant de lamachineLa compilation est faite une fois pour toutesLe code objet est du binaire dépendant ducodage et des instructions de la machinecibleLe chargeur adapte le code objet auxadresses mémoires réellement utilisées pourchaque exécution demandéeL’objet devient une suite de 0 et de 1 enmémoire
Codesource(fichier)
Objet(fichier)
Machine cibleObjet
(mémoire)
Compilateur
Chargeur
4
Bases de la programmation Java Introduction
7
InterpréteurL’interpréteur est lui-même unprogramme source qui a étécompilé puis chargé sur lamachineLe programme a interprétercorrespond aux données del’interpréteur qui s’exécuteL’exécution est plus lente car latraduction est faite à chaquelancement du programme
Codesource(fichier)
Machine cible
Interpréteur(objet enmémoire)
Source(données en
mémoire)
Bases de la programmation Java Introduction
8
Cas des boucles
Chaque instruction duprogramme source est traduite(interprétée) au fur et à mesureEn cas d’itération (boucle), lamême instruction estréinterprétée à chaque passageLa pénalité de performance estimportante
Exécution
Boucle
Interprétation
5
Bases de la programmation Java Introduction
9
Et le langage Java ?Le source Java est « compilé »en code-octet (byte code)correspondant aux instructions d ’une machine virtuelleAAAA La machine virtuelle est un programme source compilépour chaque type de couple
(machine physique + système d’exploitation)La machine virtuelle fournit un environnement de programmationstandard
l Gestion de la mémoire (ramasse-miette)l Gestion des entrées / sorties (disque, écran, clavier, …)l Interface avec le système d’exploitation
Bases de la programmation Java Introduction
10
Interprétation optimiséeCode
source(fichier)
Code-octet
(fichier)
Compilateur Machine cible
Machine virtuelle(objet enmémoire)Code-octet(données en
mémoire)
La pénalité de performance est très fortement réduite
toto.java
toto.class
javac
java toto.class
6
Bases de la programmation Java Introduction
11
Beaucoup plus qu’un langageJava est un langage orienté-objet récemment introduit parSUN et rendu disponible dans le domaine public.Java est un :
l Langage complet à tout fairel Environnement de programmation très développé
comprenant de nombreuses bibliothèques standardsl Véritable système d ’objets distribués
Java permet d’ :l Interagir simplement avec le Webl Accéder et fournir des services simplement au travers
du réseau
Bases de la programmation Java Introduction
12
HistoriqueJava a commencé avec le projet Green en 1991
l Langage Oak est destiné au logiciel intégré auxappareils électroménagers et audio / vidéo
Adaptation à la technologie Webl Intégration à un navigateur Web (HotJava 1994)l Création des appletsl Extension du langage renommé Java (version 1)l Définition du « byte code » en 1995l Premier JDK (atelier de développement) en 1996
Nouvelle plate-forme Java2l Environnement complet de développementl Déploiement d’applications distribuéesl Services Web
7
Bases de la programmation Java Introduction
13
Logiciel pour appareillage électronique
Machineà laver
Magnétoscope
Micro-onde
Machinede
développement
Codesource
Objet 1
Objet 2
Objet 3
Problèmes :l Plusieurs versions de source
selon les systèmesd ’exploitation
l Compilation spécifique pourchaque plate-forme
l Gestion des versionsl Coûts de développement
prohibitifs
Bases de la programmation Java Introduction
14
Solution Oak
Machineà laver
Magnétoscope
Micro-onde
Machinede
développement
Codesource
Machinevirtuelle
Machinevirtuelle
Machinevirtuelle
Objet
Objet
Objet
8
Bases de la programmation Java Introduction
15
Transposition au Web
Web
Posteclient
Posteserveur
ApplicationJava
téléchargeable
Browser + JVMApplet
Chargement dynamique d’une applicationChargement dynamique d’une application
Bases de la programmation Java Introduction
16
3. PRÉSENTATION DU LANGAGE
Points forts de Java :l Simplicitél Orientation objetsl Grande sécuritél Portabilitél Performancesl Parallélisme
9
Bases de la programmation Java Introduction
17
Simplicité
Le langage Java :l Reprend la syntaxe de base de Cl Possède une grande cohérence de conceptionl Offre un nombre limité de constructions non
redondantesl Rend la gestion de la mémoire transparentel Ne demande aucun précompilateur
Bases de la programmation Java Introduction
18
Orientation objetsJava reprend le meilleur des concepts objets les plus simples
l Langage de programmation inspiré d’Objective C et deC++
l La définition d’interfaces est supportée en natifl Tout est une classe, un objet, une variable d’instance
ou une méthodel Le modèle soujascent est un modèle objet / valeurl L ’encapsulation est complètement contrôlable par le
programmeurl Les librairies systèmes sont des classes qui rendent
le langage extensible à l’infini
10
Bases de la programmation Java Introduction
19
SécuritéLa grande majorité des erreurs de programmation courantessont décelées par l ’interpréteur
l Java est fortement typél Les indices de tableau ne peuvent déborderl Pas de calcul d ’adressel Toutes les variables sont initialisées
La machine virtuelle contrôle les actions de l’applicationl Modèle Bac-A-Sable (Sand box)l Permissions définies dans un fichier
Bases de la programmation Java Introduction
20
Portabilité
Java comporte une spécification très stricte de la JVMl Java est interprétél Le code-octet est indépendant de la plate-formel Pas de comportement spécifique à une implémentationl L ’API est constituée de librairies standards extensives
11
Bases de la programmation Java Introduction
21
PerformanceGrâce au code-octet, l’interpréteur ne conduit qu’à une faibleperte de performanceDe plus on dispose maintenant de :
l Compilateurs « juste-à-temps » (JIT : just in time)l Compilateurs natifs
La gestion de l ’interface homme/machine est fortementoptimisée dans les bibliothèques de l’APILes JVM disponibles savent utiliser les bibliothèquesperformantes pour le graphisme, l’audio, la vidéo
l Open GLl MPEG-4
Bases de la programmation Java Introduction
22
4. SYNTAXE DE BASE (rappels)La syntaxe de base comprend :
l Les expressions– Types de base– Constantes– Variables– Opérateurs
l Les instructions– Instructions simples (déclarations, affectations, …)– Instructions conditionnelles– Instructions itératives
l Les tableauxl Les méthodes
12
Bases de la programmation Java Introduction
23
Types de baseJava est un langage fortement typé :
toute donnée manipulée est typée et ne peut échapper àson type que par conversion implicite ou explicite.
Conversions implicites :l Augmentation de la précision (p.e. int --> long)l En maths les entiers sont des réels (p.e. int --> float)l Les expressions sont calculées dans le type le plus général
de ses composants
Bases de la programmation Java Introduction
24
Types numériquesEntiersl byte (complément à deux sur 8 bits)l short (complément à deux sur 16 bits)l int (complément à deux sur 32 bits)l long (complément à deux sur 64 bits)
Réels (mantisse + exposant)l float (standard IEEE 754 sur 32 bits)l double (standard IEEE 754 sur 64 bits)
13
Bases de la programmation Java Introduction
25
Types non numériquesBooléens
l boolean (true ou false)Caractères
l char (codage Unicode sur 16 bits)l byte (peut être utilisé pour stocker de l'ascii)
l String (en fait une classe prédéfinie mais munie d'une syntaxe spéciale)
Bases de la programmation Java Introduction
26
Constantesl byte, short ou int en décimal, octal ou hexadécimal :
– 0, 104, -1098, 0777, 0xAFl long (idem avec un "l" ou un "L" à la fin)
– 0L, -47652913476L, 0x3FFFFFFFFFFFLl double en décimal ou en scientifique
– 35.99, -0.0007, 2., 1.628E6, -0.7803E-3l simple (idem avec un "f" ou un "F" à la fin)
– 3.14159Fl char
– 'c', '\t', '\u0x61'('a')l boolean
– true ou false
14
Bases de la programmation Java Introduction
27
VariablesUne variable est une donnée manipulée par son nom (identificateur)
i, j, x, var1, delta, périmêtre,primeDeTransport, DENSITÉ_DU_PLOMB
l Les variables sont déclaréeint i, j ;double x ;
l Affectéei = 12 ;j = 3*i + delta ;
l Initialiséeint i = 12 ;final float DENSITÉ_DU_PLOMB = 11.35F ;
Bases de la programmation Java Introduction
28
Expressions numériquesint i, j ; float a, b ; double x, y ;l Expressions entières :
long m = 3 * i * (j + 6) ;int k1 = (int) m % 1000 ;int k2 = (int) (m % 1000) ;long p = (long) c + m / -27 ;
l Expressions réelles :double z = 3.53 * i + (a - b) / x ;float c = (float) (-2*i*y + 4.54749E8*a) ;double s = java.lang.Math (c) ;
15
Bases de la programmation Java Introduction
29
Expressions booléennesl Comparaisons numériques
== != < > <= >=l Comparaison de référence d'objets
== != instanceofl Expressions logiques (avec simplification)
&& || !l Expressions logiques (sans simplification)
& | ~Exemples :
((a >= 1E10) || ((b != 0d) && (a/b > 0.2)))(monObjet == null) || !(monObjet instanceof MaClasse)(--i > 0) & (--j > 0) // dangereux !
Bases de la programmation Java Introduction
30
Expressions binairesLes expressions binaires permettent de manipuler des valeursentières comme des chaînes de bits en effectuant
l Décalages : << > >>>l Masquages : & | ^ ~
Exemple :final int VU = 1 ;final int PRIS = 1 << 1 ;int état = … ;boolean pasVuPasPris = (état & (VU | PRIS)) == 0 ;
16
Bases de la programmation Java Introduction
31
Expressions chaînes de caractères
Bien que le type String soit en fait une classe, il est muni d'unesyntaxe particulière
l Constante chaîneString s1 = "exemple de conca" ;
l Opération de concaténationString s2 = s1 + "ténation" ;
Bases de la programmation Java Introduction
32
AffectationsL'affectation permet d'initialiser et de modifier des variables
int i = 12 ;périmètre = 2 * PI * rayon ;
l On peut utiliser des raccourcis : (var1 op= var2) estéquivalent à (var1 = var1 op var2) pour += -= *=/= %= &= |= ^= <<= >>= >>>=
i *= 3 ; // comme i = 3*i ;l Une affectation est une expression qui vaut sa partie droite
i = j = k = 0 ; // comme i = (j = (k = 0))l Les opérateurs d'incrémentation / décrémentation ++ --
modifient directement la valeur d'une variable entièrei++ ; // comme i += 1 ; ou encore i = i + 1 ;(i-- > 0) & (++j < max)
17
Bases de la programmation Java Introduction
33
Expression conditionnelle
Prend une valeur parmi deux selon une conditionl Pour les habitués de C et C++l Peu lisible — sauf dans les cas les plus simplesl Syntaxe
expr_bool ? expr_vrai : expr_fauxExemple :
int maxAB = (a>b) ? a : b ;
Bases de la programmation Java Introduction
34
Résumé des opérateursArithmétique : + - * / %Comparaison : == != < > <= >= instanceofLogique booléenne : && || !Décalage : << >> >>>Logique binaire : & | ^ ~Affectation : = += -= *= /= %= &= |= ^= <<=
>>= >>>=Incrémentation : ++ --Conditionnel : ?:Autre : [] . () new (type)
18
Bases de la programmation Java Introduction
35
PrécédencesOpérateurs post-fixés [] . (params) expr++ expr--Opérateurs unaires ++expr --expr +expr -expr ~ !Création ou conversion new (type)exprMultiplicatifs * / %Aditifs + -Décalage << >> >>>Comparaison < > <= >= instanceofEgalité == !=ET binaire &OU exclusif binaire ^OU inclusif binaire |ET logique &&OU logique ||Conditionnel ? :Affectation = += -= *= /= %= &= ^= |= <<=
>>= >>>=
Bases de la programmation Java Introduction
36
ParenthésageUn opérande peut être remplacé par une expression
l De même typel Entre parenthèses
Les règles de précédences induisent un parenthésage impliciteex1 = a * b + c / d ; // = (a * b) + (c / d)ex2 = a > b && cond || a + c == 12 ; // = (a>b) && (cond || ((a+c) == 12))
Les opérateurs de même précédence sont évalués de gauche à droiteex3 = a / b * c ; // = (a / b) * c ≠≠≠≠ a / (b * c)
Les affectations sont évaluées de droite à gauche
19
Bases de la programmation Java Introduction
37
InstructionsUne instruction est une unité d'exécution du langage
l Elle se termine par un ;l Certaines expressions forment des instructions valides
– Affectation– Incrémentation / décrémentation– Appel de méthode– Création dynamique d'objet
l Une déclaration de variable est une instructionl Les instructions sont normalement exécutées en séquencel Les instructions de contrôle permettent de modifier l'ordre
d'exécutionl Les instructions peuvent être regroupées
Bases de la programmation Java Introduction
38
Organisation en blocsPlusieurs instructions peuvent être regroupées en bloc
l Les blocs sont délimités par { … }l Un bloc est toujours admis à la place d'une instructionl On obtient une structure de blocs imbriquésl Cette structure définit des règles de visibilité
{ double droit = Math.PI / 2. ; angle += droit ; float cos = (float) Math.sin (angle) ; …}
20
Bases de la programmation Java Introduction
39
Portée des variablesUne variable n'est pas définie hors du bloc où elle est déclaréeUn nom de variable peut être réutilisé dans une déclaration dans unbloc imbriqué
l Une nouvelle variable indépendante est créel Cette variable masque la précédente (externe)
{ int x = 14 ;int y = 0 ;{ int x = 10 ;y++ ; // = 1x += y ; // = 11
}y++ ; // = 2x++ ; // = 15 et non 12…
Bases de la programmation Java Introduction
40
Instructions de contrôle
l Tests– Condition– Alternative– Aiguillage
l Boucles– Pré-condition– Post-condition– Itérateur
l Exceptions– Déclenchement– Capture
l Branchements– Appel– Retour– Rupture
L'ordre d'exécution du programme est contrôlé par
21
Bases de la programmation Java Introduction
41
Instructions conditionnellesCondition simple : if (condition) instruction
max = a ;if (a < b) max = b ;
Alternative : if (condition) instruction else instructionif (a > b) max = a ;else max = b ;
Bases de la programmation Java Introduction
42
Aiguillages
switch (var) {case val1 : instructionscase val2 : instructionscase val3 : …default : instructions}
static final int NORD = 0 ;static final int EST = 1 ;static final int SUD = 2 ;static final int OUEST = 3 ;…switch (orientation) { case NORD : y++ ; break ; case EST : x++ ; break ; case SUD : y-- ; break ; case OUEST : x-- ; break ; }
22
Bases de la programmation Java Introduction
43
Enchaînement des voiesswitch (mois) { case 2 : if (bissextile (année)) nbJours = 29 ; else nbJours = 28 ; break ; case 4 : case 6 : case 9 : case 11 : nbJours = 30 ; break ; default : nbJours = 31 ; }
Bases de la programmation Java Introduction
44
BouclesPré-condition : while (condition) instruction
boolean trouvé = false ;while (!trouvé) trouvé = anpe.rechercher (emploi) ;
Post-condition : do instruction while (condition)boolean trouvé ;Do // fait au moins 1 fois trouvé = anpe.rechercher (emploi) ;while (!trouvé)
23
Bases de la programmation Java Introduction
45
Itérateursfor (initialisation ; condition ; itération) instruction
La boucle "for" offre une syntaxe élégante pour écrire une itérationl Contrôlée par une variable compteur
static final int N = 20 ;factorielleN = 1 ;for (int i = 1 ; i <= N ; i++) factorielleN *= i ;
l Contrôlée par une interface appropriéefor (Elément e = liste.premier () ; e != null ; e = liste.suivant ()) e.afficher () ;
Bases de la programmation Java Introduction
46
Capture des exceptions
Java fournit un mécanisme d'exceptionl Une exception peut être levée ou capturéel La capture suit une syntaxe de bloc
try { instructions dangeureuses }catch (exception) { traitement d'erreur }finally { instructions de fin }
24
Bases de la programmation Java Introduction
47
RupturesLes ruptures sont utiles pour
l Eviter de faire du travail inutilel Simplifier le code
break permet de sortir d'un aiguillage ou d'une bouclel D'un niveau de bloc par défautl De plusieurs niveaux à l'aide d'une étiquette
continue permet de passer à l'itération suivantel D'un niveau de boucle par défautl De plusieurs niveaux à l'aide d'une étiquette
return permet de sortir d'une méthodel Quel que soit le niveau de bloc où le return se trouve dans
la méthode
Bases de la programmation Java Introduction
48
5. UN LANGAGE OBJETS / VALEURSJava est construit sur deux concepts de base :
l Les objetsl Les valeurs
Cette distinction traverse tout le langage et toutes lesconstructions.La manipulation des valeurs se fait directement :
int i = 4 ;int j = i * 1000 ;
La manipulation des objets de fait par référence :Object o ; // référence nulle au départo = new Object () ; // o référence un nouvel
objet créé dynamiquement
25
Bases de la programmation Java Introduction
49
ValeursDéfinition : une valeur est un élément d ’un type de base(prédéfini) du langageLes types prédéfinis sont :
char, byte, short, int, longfloat, double, boolean, void
l Les variables correspondantes peuvent êtredirectement affectées
l Les paramètres de ces types sont transmis par valeurl Le typage est strict
Bases de la programmation Java Introduction
50
Exemple
int x ;
x = 46 ;
float pi = 3.1416F ;
x 0
x 46
pi 3.1416
26
Bases de la programmation Java Introduction
51
Typage strictint a = 3 ;float x = 1.25F ;int b = a + x ; // ERREUR !
Si le programmeur sait ce qu’il fait, il peut écrire :int b = a + (int) x ; // ce qui fait 4 !float y = a + x ; // dans ce sens c’est permis // et on obtient bien 4.25
Bases de la programmation Java Introduction
52
Objets
Définition : les objets sont des instances de classesl Ils sont crées et détruits dynamiquement par la JVMl Ils sont accédés par des référencesl La notation pointée permet le déréférencementl Une référence n’est pas un pointeurl Les références sont fortement typéesl Les paramètres objets sont transmis par référence
27
Bases de la programmation Java Introduction
53
Exempleclass Simplissime{ int i = 0 ;
void incrémente (){ i++ ; }
}
…Simplissime o1 ;o1 = new Simplissime () ;o1.i = 18 ;o1.incrémente () ; // donc 19o1 = new MonAutreClasse () ; // interdit !
Bases de la programmation Java Introduction
54
Exemple (suite)o1 null
incrémente ()
0o1
incrémente ()
18o1
incrémente ()
19o1
28
Bases de la programmation Java Introduction
55
6. LES TABLEAUXUn tableau est une structure qui comporte plusieurs éléments demême typeLa taille du tableau est déterminée au moment de sa créationdynamiqueAprès sa création, un tableau est une structure de taille fixe
Bases de la programmation Java Introduction
56
Tableaux = objetsUn tableau Java est un objet Java
l Extension implicite de la classe Objectl Créé par un newl Manipulé par référencel Intégré au langage avec une syntaxe particulière
Un tableau Java tab contient deux variablesl La longueur
tab.lengthl Le tableau proprement dit qui est encapsulél La notation indicée permet d'accéder aux éléments
tab [indice]
29
Bases de la programmation Java Introduction
57
Type des éléments
Les éléments d'un tableau sont soit des valeurs soit des objetsl Valeurs d'un même type de base
char [], byte [], short [], int [], long [],float [], double [], boolean []
l Objets d'une même classeObject [], String [], Frame [], Point [], …
l Objets particuliers : tableaux de même type ========>>>> Tableaux à plusieurs dimensionsint [] [], int [] [] []
Un tableau Java est typé : ses éléments sont uniformément typés
Bases de la programmation Java Introduction
58
Représentation interneEn interne, un tableau comporte deux variables d'instance
l La longueur sur un intl La suite des éléments
Les éléments d'un tableau sont rangées en séquencel Valeurs d'un même type de base
– Ces valeurs sont rangées en séquencel Objets d'une même classe
– Les références à ces objets sont rangées en séquencel Tableaux de même type
– Les références aux tableaux sont rangées en séquenceL'accès à un élément particulier se fait par un calcul d'adresse à partirde son indice
30
Bases de la programmation Java Introduction
59
Référence de tableauUne référence de tableau est typée
l Par le type du tableau (de ses éléments)l Le type du tableau ne détermine pas sa taille
Une référence de tableau est déclarée et initialisée à null par défautl Le tableau doit ensuite être créé dynamiquement d'une
taille donnéel Une même référence peut être utilisée successivement
– Pour des tableaux différents– Pour des tableaux de tailles différentes
Bases de la programmation Java Introduction
60
Tableau de valeurs
int [] tab ;tab = new int [n] ;tab [3] = 10 ;
tab null
taille = ntab
………………………
00
0
A l'initialisation, le tableau d'entiers estun tableau de valeurs 0
000
01234
n-1
/ 10
31
Bases de la programmation Java Introduction
61
La variable tableau est une référence
tab = {7, 8, 9} ;La variable tab référence unnouveau tableauLe premier tableau est récupéré parle ramasse-miette
taille = ntab
………………………
00
0
000
01234
n-1
/ 10taille = 3789
012
Bases de la programmation Java Introduction
62
Syntaxel Déclaration
int [] tab ;l Création
tab = new int [N] ;l Déclaration + création
int [] tab = new int [N] ;l Création des éléments
// les int sont crées avec le tableau// ils valent 0 au départ
l Initialisation à l'aide d'une constante tableauint [] tab = {12, 0, 23, 1, -2, 0, 10} ;
32
Bases de la programmation Java Introduction
63
Itération sur un tableau
La boucle for est utilisée de façon "canonique" pour parcourir leséléments d'un tableauEx :
int [] tab = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} ;int somme = 0 ;for (int i = 0 ; i < tab.length ; i++)
somme += tab [i] ;
Bases de la programmation Java Introduction
64
Tableau d'objets
Simplissime [] tab ;tab = new Simplissime [n] ;tab [3] = new Simplissime() ;tab [3].incrémente () ;
tab null
taille = ntab
………………………
nullnull
nullA l'initialisation, le tableau d'objets estun tableau de références nulles
nullnullnull
01234
n-1
incrémente ()
0/ / 1
33
Bases de la programmation Java Introduction
65
Syntaxel Déclaration
MaClasse [] tab ;l Création
tab = new MaClasse [N] ;l Déclaration + création
MaClasse [] tab = new MaClasse [N] ;l Création des éléments
for (int i = 0 ; i < tab.length ; i++)tab [i] = new MaClasse (…) ;
Bases de la programmation Java Introduction
66
Syntaxe (suite)l Initialisation à l'aide d'une constante tableau
MaClasse unObjet = new MaClasse (…) ;
MaClasse [] tab ={ new MaClasse (…),
unObjet,new MaClasse (…),unObjet
} ; // soit 4 éléments pour 3 objets
34
Bases de la programmation Java Introduction
67
Références multiplestaille = n
tab
………………………
null
null
01234
n-1
incrémente ()
1
incrémente ()
0
incrémente ()
14
Bases de la programmation Java Introduction
68
Tableaux multidimensionnelsUn élément de tableau peut lui même être un tableaul Le tableau peut être N-dimensionnel régulier
double [][] matrice = new double [3][3] ;float [][][] valeurChamp =new float [100][100][100] ;
l Le tableau peut être N-dimensionnel irrégulierint [][] triangle5 ={ {1},{1, 1},{1, 2, 1},{1, 3, 3, 1},{1, 4, 6, 4, 1} } ;
l Le "tableau" peut former une hiérarchie de hauteur variable
35
Bases de la programmation Java Introduction
69
Tableau 2D de valeurstab
taille = 500000
01234
taille = 3012
taille = 500000
01234
taille = 500000
01234
int [][] tab ;tab = new int [3][5] ;tab [1][1] = 10 ;
Bases de la programmation Java Introduction
70
11 11 21 3
13 1
1 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 1… … … … … … … … …
Triangle de Pascal
Le triangle est définit par les équationssuivantes :
Ci,j = 1 si j=1 ou j=iCi,j = Ci-1,j-1 + Ci-1,j si 1<j<i
36
Bases de la programmation Java Introduction
71
Tableau 2D irrégulierclass TriangleDePascal
{int [][] triangle ;TriangleDePascal (int nbl)
{ if (nbl < 0) return ;triangle = new int [nbl][] ;for (int i = 0 ; i < nbl ; i++){ triangle [i] = new int [i + 1] ;
triangle [i][0] = 1 ;for (int j = 1 ; j < i ; j++)
triangle [i][j] =triangle [i - 1][j - 1] +triangle [i - 1][j] ;
triangle [i][i] = 1 ;}
}
Bases de la programmation Java Introduction
72
Tableau 2D irrégulier — FigureTriangle5
taille = 514641
01234
taille = 3121
012
taille = 41331
0123
taille = 501234
taille = 110
taille = 2110
1
37
Bases de la programmation Java Introduction
73
Itération sur un tableau irrégulierpublic String toString ()
{ String s = "" ;for (int i = 0 ; i < triangle.length ; i++)
{ s += "(" + triangle [i][0] ;for (int j = 1 ; j < triangle [i].length ; j++)
s += ", " + triangle [i][j] ;s += ")\n" ;
}return s ;
}} // fin classe TriangleDePascal
Bases de la programmation Java Introduction
74
Tableaux dangereux
Un élément de tableau peut lui même être un tableaul Le tableau peut être N-dimensionnel régulierl Le tableau peut être N-dimensionnel irrégulierl Le "tableau" peut former une hiérarchie de hauteur variable
Object [] bizarre ={valeurChamp, matrice, new Simplissime (),
unObjet, triangle} ;
top related