Chapitre 2 : Premières Applications Java

publicité
Chapitre 2 : Premières Applications Java
Objectifs
l 
- 
Etre capable d’écrire des programmes simples en Java
- 
Etre capable d’utiliser les instructions d’entrées/sorties
- 
Devenir familier avec les types de données primitifs
- 
Comprendre les concepts de base de la mémoire
- 
Etre capable d’utiliser les opérateurs arithmétiques, relationnels et logiques
- 
Comprendre la précédence des opérateurs
- 
Utiliser la documentation
Sommaire
l 
- 
Introduction
- 
Premier programme en Java
- 
Compiler et exécuter un programme Java
- 
Affichage de plusieurs lignes de texte
- 
Affichage dans une boite de dialogue
- 
Saisie et Affichage
© Karim Bouzoubaa
- 
Va r i a b l e s , C o n s t a n t e s ,
Tableaux
- 
Opérateurs
- 
Utiliser la documentation
1
2.1 Introduction
l 
Programmation avec le langage Java
- 
Exemples simples
- 
Analyse détaillée des exemples
- 
Analyse des types des données en Java
- 
Étude des opérateurs pour combiner des données dans
une expression
© Karim Bouzoubaa
2
2.2 Premier prog en Java : afficher une ligne de texte
l 
Programme pour afficher le texte
- 
˝Premier programme en Java˝
© Karim Bouzoubaa
3
2.2 Premier prog en Java : afficher une ligne de texte
1
2
3
4
5
6
7
8
9
10
11
// prog 2.1: Premier.java
// Un premier programme en Java
public class Premier {
// Méthode main commence l’exécution d’un programme Java
public static void main(String args[]) {
System.out.println("Premier programme en Java");
} // Fin de la méthode main
} // Fin de la classe Premier
© Karim Bouzoubaa
4
2.2 Premier prog en Java : afficher une ligne de texte
1.  // prog 2.1: Premier.java
2.  // Un premier programme en Java
l 
Commentaires
- 
l 
l 
Améliorer la lisibilité des programmes
Un commentaire ne cause l’ordinateur à
l’exécution d’aucune action
- 
l 
Un commentaire qui commence par le symbole // et
finit à la ligne est appelé commentaire simple ligne
Java ignore les commentaires
Commentaire à lignes multiples
/* Ceci est
un commentaire
à lignes multiples */
© Karim Bouzoubaa
5
2.2 Premier prog en Java : afficher une ligne de texte
4.  public class Premier {
l 
l 
l 
l 
l 
l 
7. 
l 
l 
l 
l 
Déclare la définition d’un programme appelé Premier
Tout programme Java doit contenir au moins la définition d’une classe (mot clé class)
Un mot clé est un mot réservé à l’utilisation par Java (public class class)
Le mot public veut dire que le programme est publique (avant chapitre 4)
Nécessaire de nommer le fichier avec le même nom que celui de la classe publique suivi
de l’extension .java (Premier.java)
Une accolade ouvrante{ (ligne 4) introduit le corps de toute classe. Une accolade fermante
correspondante } (ligne 11) doit terminer toute définition de classe.
public static void main(String args[]) {
Tout programme Java commence son exécution par main
Les parenthèses après main indiquent que c’est un bloc de programme appelé méthode.
Une classe java contient une ou plusieurs méthodes. seulement une de ces méthodes doit
être la méthode main et doit être définie tel qu’illustrée à la ligne 7
Le mot clé void indique que main exécutera un ensemble de tâches mais ne retournera à la
fin aucune information.
L’accolade gauche { (ligne 7) initie le corps de main. L’accolade droite } finit la définition de
main (ligne 9).
© Karim Bouzoubaa
6
2.2 Premier prog en Java : afficher une ligne de texte
8. 
System.out.println("Premier programme en Java");
l 
Chaque instruction en Java finit par le symbole ;
l 
Afficher la chaîne de caractères contenue entre les doubles quottes " "
l 
l 
La méthode System.out.println affiche une ligne de texte dans la fenêtre de
console et passe à la ligne suivante,
La méthode System.out.print affiche une ligne de texte et le curseur reste
positionné sur la même ligne et exactement à la fin du texte en question.
© Karim Bouzoubaa
7
2.3 Compiler et exécuter un programme Java
l 
Deux étapes
1.  Compiler : javac
Premier.java (Si pas d’erreurs, génération de Premier.class)
Figure 2.4 - Exécution du programme Premier sur une console DOS
2. 
Exécuter le programme
Par ailleurs, et comme nous l’avons dit précédemment, le même fichier .c
:s’exécute
java Premier
de la même manière sur les autres plateformes. La figure 2.5 m
l’exécution du programme Premier sur une console Linux.
!
Figure 2.5 - Exécution du programme Premier sur une console Linux
© Karim Bouzoubaa
Nous remarquerons que le fichier testé a été enregistré dans le répertoire bin de
afin d'être capable d'appeler les commandes javac et java qui se trouvent s
8
2.4 Affichage de plusieurs lignes de texte
l 
Exécution du programme PlusieursLignes.java
l 
Chaque mot du texte est affiché sur une ligne
© Karim Bouzoubaa
9
2.4 Affichage de plusieurs lignes de texte
1
// prog 2.2: PlusieursLignes.java
2
// Un second programme en Java
3
4
public class PlusieursLignes {
5
6
// Méthode main commence l’exécution d’un programme Java
7
public static void main(String args[]) {
8
System.out.println("Mon ");
9
System.out.print("premier\nprogramme\nJava");
10
} // Fin de la méthode main
11
12 } // Fin de la classe PlusieursLignes
© Karim Bouzoubaa
10
2.4 Affichage de plusieurs lignes de texte
1 // prog 2.2: PlusieursLignes.java
2 // Un second programme en Java
…
6 // Méthode main commence l’exécution d’un programme Java
…
l 
commentaires
4 public class PlusieursLignes {
l 
7
l 
déclare la définition d’un programme appelé PlusieursLignes
public static void main(String args[]) {
La méthode main où Java commence l’exécution
© Karim Bouzoubaa
11
2.4 Affichage de plusieurs lignes de texte
8
l 
System.out.println("Mon ");
La méthode System.out.println affiche le texte "Mon " et passe à la ligne
suivante
9
l 
l 
System.out.print("premier\nprogramme\nJava");
Quand Java rencontre le caractère \, il le combine avec le caractère suivant pour
former une séquence. La séquence \n est interprétée comme étant le caractère
de saut de ligne. \n n’est pas affiché à l’écran
Le caractère spécial "\n" indique aux méthodes println et print de positionner
le curseur au début de la ligne suivante.
è 
l 
La ligne 9 affiche les textes premier, programme et Java, chacun sur une ligne
séparée
Les autres séquences de Java
Séquence
Nom
\n
Nouvelle ligne
Positionne le curseur au début de la ligne suivante
\t
Tabulation horizontale
Déplace le curseur au prochain stop de tabulation
\r
Retour chariot
Positionne le curseur au début de la ligne courante
Utilisé pour afficher le caractère \ backslash
\\
\"
© Karim Bouzoubaa
Description
Double quotte
Utilise pour afficher le caractère “ double quotte
12
2.4 Affichage de plusieurs lignes de texte
l 
Exécution du programme PlusieursLignes.java
l 
Chaque mot du texte est affiché sur une ligne
© Karim Bouzoubaa
13
2.5 Affichage dans une boite de dialogue
© Karim Bouzoubaa
14
2.5 Affichage dans une boite de dialogue
1.  // prog 2.3: BoiteDialogue.java
2.  // Un programme en Java qui affichage un message dans une
3.  // boite de dialogue
4. 
5.  // importer la classe JOptionPane
6.  import javax.swing.JOptionPane ;
7. 
8.  public class BoiteDialogue {
9. 
10.  // Méthode main commence l’exécution d’un programme Java
11.  public static void main(String args[]) {
12.  JOptionPane.showMessageDialog(null, "Mon premier programme Java");
13. 
System.exit(0);
14.  } // Fin de la méthode main
15. 
16. } // Fin de la classe BoiteDialogue
© Karim Bouzoubaa
15
2.5 Affichage dans une boite de dialogue
l 
l 
l 
l 
l 
et print affichent à l’intérieur de la fenêtre de
commandes
De nos jours, il y a utilisation des interfaces graphiques
Utilisation de libraires dédiées. Dans Java, une libraire
s’appelle un package
Un package est un programme déjà écrit qui fournit un
ensemble de services
println
o 
Un package contient des classes
o 
Une classe contient des méthodes
o 
Chaque service correspond à une méthode
est un package (plus de détails, section 2.9).
La classe qui nous intéresse est JOptionPane
javax.swing
© Karim Bouzoubaa
16
2.5 Affichage dans une boite de dialogue
1. 
2. 
3. 
4. 
5. 
6. 
//
//
//
…
//
…
prog 2.3: BoiteDialogue.java
Un programme en Java qui affiche un message dans une
boite de dialogue
importer la classe JOptionPane
commentaires
l 
6.  import javax.swing.JOptionPane;
l 
Dans Java, pour appeler une librairie, utiliser le mot clé import
l 
Cette instruction permet d’importer la classe JOptionPane du package
javax.swing
l 
La classe JOptionPane contient des méthodes qui permettent d’interagir avec
l’utilisateur (e.g. lire des données ou les afficher à l’écran) par utilisation de
composantes graphiques.
8.  public class BoiteDeDialogue {
l 
déclare la définition d’un programme appelé BoiteDeDialogue
© Karim Bouzoubaa
17
2.5 Affichage dans une boite de dialogue
11.
l 
public static void main(String args[]) {
La méthode main où Java commence l’exécution
12.
JOptionPane.showMessageDialog(null, "Mon premier programme Java");
l 
Appel à la méthode showMessageDialog de la classe JOptionPane
l 
L’appel à une méthode appartenant à une classe se fait suivant la syntaxe
NomClasse.NomMéthode(paramètres)
l 
affiche à l’écran une boite de dialogue contenant un
message. Elle est appelée avec deux paramètres séparés par une virgule
showMessageDialog
13.
- 
Le premier argument correspondra au mot clé Java null
- 
Le second paramètre est le texte correspondant au message. Comme print et
println, le texte doit être entre deux double quottes.
System.exit(0);
l 
Termine l’exécution du programme
l 
Nécessaire lors de l’utilisation de composants graphiques.
© Karim Bouzoubaa
18
2.5 Affichage dans une boite de dialogue
Titre de la boite de dialogue
Icône de la boite de dialogue
Texte de la
boite de
dialogue
Bouton de validation
© Karim Bouzoubaa
19
2.6 Saisie et Affichage
© Karim Bouzoubaa
20
2.6 Saisie et Affichage
l 
l 
Programme qui permet d’afficher et de saisir des
informations de l’utilisateur
But du programme :
- 
utilisateur saisit un nombre
- 
programme affiche le carré du nombre saisi
- 
deux versions de ce programme:
l 
La première version utilisera une interface console
l 
La deuxième version utilisera une interface graphique
© Karim Bouzoubaa
21
2.6 Saisie et Affichage – version 1
1.  // prog 2.4: Carre.java
2.  // Un programme Java qui calcule le carré d’un nombre
3. 
4.  // importer la classe Scanner
5.  import java.util.Scanner ;
6. 
7.  public class Carre {
8. 
9.  // Méthode main commence l’exécution d’un programme Java
10.  public static void main(String args[]) {
11. 
12. 
Scanner entree;
13. 
int nombre;
// le nombre entier
14. 
int carre;
// le carré à afficher
15. 
16. 
System.out.print("Donner un nombre : ");
17. 
entree = new Scanner(System.in) ;
18. 
nombre = entree.nextInt() ;
19. 
carre = nombre * nombre ;
20. 
System.out.print("Le carré du nombre est : " + carre);
21. 
22.  } // Fin de la méthode main
23. 
24. } // Fin de la classe Carre
© Karim Bouzoubaa
22
2.6 Saisie et Affichage – version 1
5.  import java.util.Scanner ;
Cette instruction permet d’importer la classe Scanner du package java.util
l 
La classe Scanner contient des méthodes qui permettent de lire une chaîne de
caractères de l’utilisateur, de l’analyser et d’en reconnaître les types primitifs
tels que les entiers, les caractères, etc.
l 
7. public class Carre {
…
10.
public static void main(String args[]) {
l 
déclare la définition d’un programme appelé Carre
l 
La méthode main où Java commence l’exécution
© Karim Bouzoubaa
23
2.6 Saisie et Affichage – version 1
12. 
13. 
14. 
l 
l 
Scanner entree;
int nombre;
int carre;
Pour récupérer la valeur du nombre dont on veut calculer le carré, nous devons
utiliser des variables
Une variable
- 
- 
est une case de la mémoire de l’ordinateur
est d’un certain type
l 
l 
l 
l 
- 
l 
prend des valeurs (selon le type)
il faut la déclarer toutes les variables utilisées dans le programme
- 
- 
l 
entier : 6, 0, -4, 99, -458
réel : 3.5, 56.1, -5.451
caractère : ‘b’, ‘m’, ‘a’
etc
spécifier son nom
spécifier son type
Dans le programme, 3 variables sont déclarées : entree, nombre et carre
- 
- 
- 
chaque déclaration finit par le symbole ‘;’
entree est de type Scanner,
nombre et carre sont de type int (entières)
© Karim Bouzoubaa
24
2.6 Saisie et Affichage – version 1
System.out.print("Donner un nombre : ");
16. 
l 
Affiche un message à l’utilisateur pour l’informer de saisir un nombre
17. 
l 
l 
entree = new Scanner(System.in) ;
Permet de spécifier la source d’où proviennent les données
En effet, un Scanner permet au programme de lire des données des
périphériques externes
o 
Les données peuvent provenir de plusieurs sources, telles que le disque ou le clavier
o 
Dans notre cas, le Scanner est associé à l’entrée standard System.in qui est le clavier
18. 
l 
l 
nombre = entree.nextInt() ;
la méthode nextInt de la classe Scanner
o 
requiert une rentrée (valeur entière) de la part de l’utilisateur
o 
La valeur saisie est affectée à la variable nombre
L’opérateur ‘=’ permet d’assigner (ou d’affecter) ce qui est lue par la méthode
nextInt à la variable nombre : cette une instruction d’affectation.
© Karim Bouzoubaa
25
2.6 Saisie et Affichage – version 1
19. 
carre = nombre * nombre ;
l 
Multiplie la valeur de la variable nombre par elle-même
l 
Affecte le résultat à la variable carre
l 
L’opération de multiplication est effectuée grâce au symbole ‘*’ (étoile) et non
pas au symbole ‘x’
20.  System.out.print("Le carré du nombre est : " + carre);
l 
Afficher un message contenant le résultat recherché.
l 
Le message comporte deux parties:
- 
une partie statique "Le carré du nombre est : "
- 
une partie dynamique : la variable carre dont la valeur change selon les exécutions
- 
Les deux parties sont concaténées grâce à l’opérateur de concaténation ‘+’:
© Karim Bouzoubaa
26
2.6 Saisie et Affichage – version 2
1.  // prog 2.5: CarreGraphique.java
2.  // Un programme Java qui calcule le carré d’un nombre
3. 
4.  // importer la classe JOptionPane
5.  import javax.swing.JOptionPane ;
6. 
7.  public class CarreGraphique {
8. 
9.  // Méthode main commence l’exécution d’un programme Java
10.  public static void main(String args[]) {
11. 
12. 
String nombreChaine; // chaine saisie par l’utilisateur
13. 
int nombre;
// le nombre entier
14. 
int carre;
// le carré à afficher
15. 
16. 
nombreChaine = JOptionPane.showInputDialog("Donner un nombre");
17. 
nombre = Integer.parseInt(nombreChaine) ;
18. 
carre = nombre * nombre ;
19. 
JOptionPane.showMessageDialog(null,"Le carré du nombre est : " +
20. 
carre, "Résultat", JOptionPane.PLAIN_MESSAGE);
21. 
System.exit(0);
22. 
23.  } // Fin de la méthode main
24. 
25. } // Fin de la classe CarreGraphique
© Karim Bouzoubaa
27
2.6 Saisie et Affichage – version 2
5.  import javax.swing.JOptionPane
;
Cette instruction permet d’importer la classe
l 
JOptionPane
du package
javaw.swing
La classe JOptionPane contient des méthodes qui permettent d’interagir avec
l’utilisateur (e.g. lire des données ou les afficher à l’écran) par utilisation de
composantes graphiques.
l 
7. public class CarreGraphique {
…
10.
public static void main(String args[]) {
l 
déclare la définition d’un programme appelé CarreGraphique
l 
La méthode main où Java commence l’exécution
12. 
13. 
14. 
l 
String nombreChaine;
int nombre;
int carre;
Trois variables utilisées
- 
- 
de type String, i.e. chaine de caractères "mon programme" , "java"
nombre et carre sont de type int (entières)
nombreChaine
© Karim Bouzoubaa
28
2.6 Saisie et Affichage – version 2
16.  nombreChaine = JOptionPane.showInputDialog("Donner un nombre");
l 
l 
l 
l 
l 
Cette instruction lit une chaîne de caractères de l’utilisateur représentant le
nombre pour lequel nous désirons calculer le carré.
La méthode showInputDialog de la classe JOptionPane affiche une boite de dialogue
requérant une rentrée de la part de l’utilisateur
Cette méthode possède un argument de type chaîne de caractères qui
représente le message à afficher à l’utilisateur "Donner un nombre". Le message
renseigne l’utilisateur sur ce qui lui est demandé de fournir à l’ordinateur.
Cette boite de dialogue comprend également un zone où l’utilisateur doit taper
la valeur demandée et comprend également deux autres boutons:
- 
Le bouton ‘OK’ permet de valider la valeur saisie
- 
Le bouton ‘Annuler’ annule la saisie.
La valeur saisie par l’utilisateur est affectée à la variable nombreChaine.
© Karim Bouzoubaa
29
2.6 Saisie et Affichage – version 2
17.  nombre = Integer.parseInt(nombreChaine) ;
Différence entre version 1 et version 2
l 
o 
La méthode nextInt lit directement un entier
o 
La méthode parseInt lit une chaine de caractères
La méthode parseInt de la classe Integer convertit la valeur de la variable
donnée en argument (nombreChaine dans notre cas) et la convertit en la valeur
entière correspondante. Ensuite, grâce à l’opérateur =, cette valeur est affectée
à la variable entière nombre.
l 
18. 
l 
carre = nombre * nombre ;
Multiplie la valeur de la variable
variable carre
© Karim Bouzoubaa
nombre
par elle-même et affecte le résultat à la
30
2.6 Saisie et Affichage – version 2
19. 
JOptionPane.showMessageDialog(null,"Le carré du nombre est : " + carre,
"Résultat", JOptionPane.PLAIN_MESSAGE);
l 
Afficher un message contenant le résultat recherché par l’utilisateur
l 
showMessageDialog
l 
utilisée avec quatre paramètres:
- 
Le premier est le même qu’avec l’appel à deux paramètres
- 
Le second paramètre représente le message à afficher
- 
Le troisième argument : nom de la boite de dialogue
- 
Le quatrième argument correspond au type de la boite de dialogue
(PLAIN_MESSAGE sans icône)
- 
Par défaut, showMessageDialog affiche une boite de type informationnel symbolisé par
l’icône portant la lettre ‘i’.
Autres types de boite de dialogue
Type de la boite de dialogue
Description
JOptionPane.ERROR_MESSAGE
Indique une erreur
JOptionPane.INFORMATION_MESSAGE
Indique un message informationnel
JOptionPane.WARNING_MESSAGE
Indique un avertissement
JOptionPane.QUESTION_MESSAGE
Pose une question
JOptionPane.PLAIN_MESSAGE
© Karim Bouzoubaa
Icône
aucune
Indique un message sans icône
31
2.7 Variables
l 
Variable : donnée utilisée dans un programme (e.g. nombre, nombreChaine et carre)
l 
Variable : emplacement dans la mémoire centrale de l’ordinateur
l 
l 
l 
Lors d’une affectation : le système se charge de mettre une valeur (en code
binaire) dans l’emplacement mémoire correspondant
Lorsque cette variable est utilisée pour affichage ou pour être évaluée dans une
expression, le système va récupérer sa valeur de la mémoire pour effectuer le
traitement demandé
Chaque variable possède :
- 
un nom (qui l’identifie de manière unique dans le programme)
- 
un type (entier, chaîne de caractères, réel, etc.)
- 
une taille (en octets)
- 
une valeur (selon le type)
- 
Exemple, nombre porte le nom nombre, est de type entier, a une taille de 4 octets en
mémoire centrale et possède la valeur 5 suite à l’exécution de l’instruction de la ligne 18.
© Karim Bouzoubaa
32
2.7 Variables - Le nom
l 
Nommer une variable :
- 
Conditions
l 
l 
- 
Correct : x, x1, som, moy_1, _x
Non correct : 1x, x-y, x!
Conventions
l 
l 
Commencer une variable par une minuscule (e.g. nombre)
Si le nom de la variable est composé (de plusieurs mots), commencer chaque nouveau mot
par une majuscule (e.g. monPremierNombre).
© Karim Bouzoubaa
33
2.7 Variables - Le type et la taille
l 
l 
Le type d’une variable permet de connaître
- 
sa taille en mémoire (en octets),
- 
l’ensemble des valeurs possibles
- 
les opérations que cette variable est susceptible de subir.
Types simples et types composés:
- 
- 
Un type est simple lorsque ses valeurs ne sont pas décomposables en constituants
plus simples. Quatre catégories:
1. 
Types entiers : byte, short, int et long qui correspondent aux nombres entiers positifs,
nuls ou négatifs
2. 
Types à virgule flottante : float et double qui représentent les nombres avec une précision
fractionnelle
3. 
Type caractère : char, qui représente les symboles dans un ensemble de caractères tels
que les lettres et les digits
4. 
Type booléen : boolean, qui permet de représenter les valeurs logiques
l 
La valeur par défaut pour byte, short, int, long, float, double = 0, char = 0.
l 
La valeur par défaut pour boolean = false
Dans le cas contraire, un type est dit composé (sous forme de classes, voir chapitre
oritenté-objet).
© Karim Bouzoubaa
34
2.7 Variables - Le type et la taille
Nombre
d’octets
Intervalle des valeurs
byte
1
-128 .. 127 (-27 .. 27 – 1)
short
2
-32 768 .. 32 767 (-215 .. 215 – 1)
int
4
-2 147 483 648 .. -2 147 483 647 (-231 .. 231 – 1)
long
8
-9 223 372 036 854 775 808 .. -9 223 372 036 854 775 807 (-263 .. 263 – 1)
Type
-3.4 028 234 663 852 886 E+38 .. -1.40 129 846 432 481 707 e-45
float
4
et
1.40 129 846 432 481 707 e-45 .. 3.4 028 234 663 852 886 E+38
-1.7 976 931 348 623 157 E+308 .. -4.94 065 645 841 246 544 e-324
double
8
et
4.94 065 645 841 246 544 e-324 .. 1.7 976 931 348 623 157 E+308
char
2
’\u0000’ .. ’\uFFFF’ Ensemble de caractères unicode
boolean
1
true, false
© Karim Bouzoubaa
35
2.8 Constantes
l 
l 
l 
Une constante est une donnée qui ne change de valeur durant tout le temps
d’exécution du programme.
Comme la variable, une constante porte
- 
un nom,
- 
un type,
- 
une taille
- 
et une valeur
Pour spécifier qu’une donnée est constante, utiliser le mot clé Java final
final double PI = 3.14 ;
l 
Les conventions d’écriture des constantes :
- 
Tous les caractères du nom de la constante sont majuscules (e.g. PI)
- 
Si le nom de la constante est composé (de plusieurs mots), séparer les mots par un
souligné ‘_’ (e.g. MA_CONSTANTE).
© Karim Bouzoubaa
36
2.9 Tableaux
l 
tab[0]
tab[1]
tab[2]
tab[3]
tab[4]
6
5
-2
54
18
Un tableau est une composante Java ni simple ni composée :
- 
un tableau est une structure de données qui consiste en un ensemble fixe d’éléments de même
type
- 
on se réfère à tous les éléments du tableau avec le même nom
l 
D’autres types de structures de données existent :
l 
Les structures de données peuvent être regroupées sous deux groupes :
l 
l 
- 
les structures statiques (taille fixe) : les tableaux
- 
les structures dynamiques (taille peut changer) : les listes, les piles, les graphes, etc.
Pour référer à un élément du tableau :
- 
le nom
- 
le numéro de sa position (ou l’indice). Indice premier élément = 0
- 
Exemple tab[1] deuxième élément du tableau, valeur = 5
Le nom du tableau : mêmes conditions et conventions de nomination qu’une variable
© Karim Bouzoubaa
37
2.9 Tableaux
l 
- 
tab[3]
tab[4]
6
5
-2
54
18
int tab[];
Etape 2 : spécifier le nombre d’éléments avec l’opérateur new nom = new type[nombre];
l 
tab = new int[5];
Déclaration d’un tableau en une seule étape :
l 
int tab[] = new int[5];
Accéder à un élément du tableau (lecture/écriture) : en précisant son indice
- 
l 
tab[2]
Etape 1 : spécifier le type des éléments et le nom du tableau type nom[] ;
l 
l 
tab[1]
Déclaration d’un tableau en deux étapes:
- 
l 
tab[0]
tab[i] : élément d’indice i de tab
Initialiser un tableau : deux façons
- 
Initialiser chaque élément du tableau
l 
- 
tab[0] = 6; tab[1] = 5; … tab[4] = 18;
Initialiser lors de la déclaration (plus nécessaire d’utiliser new et de spécifier le nombre)
l 
int tab[] = {6, 5, -2, 54, 18};
© Karim Bouzoubaa
38
2.9 Tableaux
l 
But du programme :
- 
Déclarer
tableau,
- 
l’initialiser
- 
afficher un de
ses éléments.
© Karim Bouzoubaa
un
1. 
2. 
3. 
4. 
5. 
6. 
7. 
8. 
9. 
10. 
11. 
12. 
13. 
14. 
15. 
16. 
17. 
18. 
19. 
20. 
21. 
22. 
23. 
24. 
25. 
26. 
27. 
28. 
29. 
30. 
31. 
// prog 2.6.1: Tableau.java
// Un programme Java qui initialise les éléments d’un tableau
// et affiche un de ses éléments
// importer la classe JOptionPane
import javax.swing.JOptionPane ;
public class Tableau {
// Méthode main commence l’exécution d’un programme Java
public static void main(String args[]) {
int tab[];
String indiceChaine;
int indice;
// tableau d’entiers
// chaine saisie par l’utilisateur
// le nombre entier
tab = new int[5] ;
// allocation en mémoire de 5 entiers
tab[0] = 6;
tab[1] = 5;
tab[2] = -2;
tab[3] = 54;
tab[4] = 18;
indiceChaine = JOptionPane.showInputDialog("Donner un indice");
indice= Integer.parseInt(indiceChaine) ;
JOptionPane.showMessageDialog(null,
"Le tableau à l’indice " + indice + " est : " + tab[indice-1]);
System.exit(0);
} // Fin de la méthode main
} // Fin de la classe Tableau
39
2.9 Tableaux
13. 
14. 
15. 
l 
l 
Déclaration d’un tableau tab d’entiers
Déclaration d’une variable indiceChaine qui permettra à l’utilisateur de saisir une
chaîne de caractères représentant un indice du tableau utilisé pour afficher un
élément du tableau
17. 
18. 
19. 
20. 
21. 
22. 
l 
tab = new int[5] ;
tab[0] = 6;
tab[1] = 5;
tab[2] = -2;
tab[3] = 54;
tab[4] = 18;
Allocation de 5 éléments pour tab et son initialisation élément par élément
23. 
24. 
25. 
26. 
l 
int tab[];
String indiceChaine;
int indice;
indiceChaine = JOptionPane.showInputDialog("Donner un indice");
indice= Integer.parseInt(indiceChaine) ;
JOptionPane.showMessageDialog(null,
"Le tableau à l’indice " + indice + " est : " + tab[indice-1]);
La ligne 23 demande à l’utilisateur de saisir un indice. Ce dernier est converti à
la ligne 24 en entier. L’instruction des lignes 25 et 26 affiche l’élément
correspondant à l’indice demandé par l’utilisateur.
© Karim Bouzoubaa
40
2.10 Opérateurs
l 
Les expressions sont utilisées dans beaucoup de programmes (Δ = b2 – 4ac)
l 
Expression = combinaison (variable, valeur, constante, méthode)
l 
La combinaison par utilisation d’opérateurs
l 
Exemple : est-ce que Δ est positif ou non
- 
l 
Expression : (Math.pow(b,
2) – (4 * a * c))
> 0
l 
utilisation de variables a, b et c
l 
utilisation de la valeur 4
l 
appel à la méthode Math.pow
l 
opérateurs arithmétiques de soustraction ‘-‘ et de multiplication ‘*’
l 
opérateur relationnel ‘>’
Opérateurs sont de trois types :
- 
Arithmétiques
- 
Relationnels
- 
Logiques.
© Karim Bouzoubaa
41
2.10 Opérateurs arithmétiques
Opérateur
Opérateur arithmétique
+
*
Expression algébrique
a+b
a–b
ab
Expression Java
a+b
a–b
a*b
Division
/
a
b
a/b
Modulo (Reste de la division)
%
a mod b
a%b
Addition
Soustraction
Multiplication
l 
(a + b)(c − d)
2
l 
Pour évaluer une expression sans parenthèses : Règles de priorité
- 
devient ((a
a + b * c – d
=
(a + b) * (c – d)
Opérateur
Opération
()
Parenthèses
*, / et %
+, -
© Karim Bouzoubaa
+ b) * (c – d)) / 2
Multiplication,
Division et Modulo
Addition et
Soustraction
ou
a + (b * c) – d
Priorité
Evalué en premier. L’expression la plus interne est évaluée
d’abord. S’il y a plusieurs pairs de parenthèses du même niveau,
elles sont évaluées de gauche à droite
Evalué en second. S’il y a plusieurs opérateurs de ce niveau, ils
sont évalués de gauche à droite.
Evalué en dernier. S’il y a plusieurs opérateurs de ce niveau, ils
sont évalués de gauche à droite.
42
2.10 Opérateurs arithmétiques
•  Évaluation de l’expression a + b * c – d
© Karim Bouzoubaa
1
a = 1, b = 2, c = 4, d = 3
2
a+b*c-d
3
a+b*c-d
4
a+8-d
5
9-d
6
6
43
2.10 Opérateurs arithmétiques – Incrémentation & Décrémentation
l 
i = i + 1; instruction qui
revient très souvent dans
les programmes
l 
- 
Java propose
raccourcis
des
- 
Post-incrémentation : i++;
- 
Pré-incrémentation : ++i;
i = i - 1; remplacé par
- 
Post-décrémentation :
i--;
- 
Pré-décrémentation : --i;
© Karim Bouzoubaa
1. 
2. 
3. 
4. 
5. 
6. 
7. 
8. 
9. 
10. 
11. 
12. 
13. 
14. 
15. 
16. 
17. 
18. 
19. 
20. 
21. 
22. 
23. 
24. 
25. 
26. 
27. 
// prog 2.7: Incrementation.java
// Un programme Java qui montre l’utilisation de l’incrémentation
public class Incrementation {
// Méthode main commence l’exécution d’un programme Java
public static void main(String args[]) {
int x, y ;
// deux entiers
x = 9 ;
System.out.println("x = " + x) ;
y = ++x -5 ;
System.out.println("x = " + x) ;
System.out.println("y = " + y) ;
x = 9 ;
System.out.println("\nx = " + x) ;
y = x++ -5 ;
System.out.println("x = " + x) ;
System.out.println("y = " + y) ;
} // Fin de la méthode main
} // Fin de la classe Incremenation
44
2.10 Opérateurs arithmétiques – Assignation
l 
Java fournit des opérateurs d’assignation pour réduire les expressions d’affectation
l 
Par exemple, l’expression x = x + 9 devient x += 9
l 
l 
L’opérateur d’assignation d’addition += ajoute la valeur de l’expression de droite à la valeur
de la variable se trouvant à gauche de l’opérateur.
De manière générale
- 
variable = variable opérateur expression (opérateur étant +, -, *, / et %)
- 
variable opérateur= expression
- 
Exemple, x = x * (5 / y) réduit à x *= 5 / y
© Karim Bouzoubaa
45
2.10 Opérateurs relationnels
•  Pour comparer deux valeurs, java fournit l’ensemble des opérateurs
relationnels suivants (retournent true ou false)
Opérateur
==
!=
>
>=
<
<=
© Karim Bouzoubaa
Explication
Egal
Non égal
Supérieur
Supérieur ou égal
Inférieur
Inférieur ou égal
46
2.10 Opérateurs logiques
•  Comment exprimer : x est dans l’intervalle [5, 10] ?
•  En java, Il faut exprimer
–  x est supérieur ou égale à 5 (x >= 5)
•  et (conjonction logique)
–  x est inférieur ou égal à 10 (x <= 10)
•  En java, l’expression devient : (x >= 5)
•  La liste des opérateurs logiques est
Opérateur
&&
&
||
|
^
!
© Karim Bouzoubaa
&& (x <= 10)
Explication
et logique
et logique booléen
ou logique
ou logique booléen inclusif
ou logique booléen exclusif
non logique
47
2.10 Opérateurs - Priorité
l 
La priorité entre tous les opérateurs. Ces derniers sont
listés de haut en bas dans un ordre décroissant de priorité
Opérateur
()
++ -- !
* / %
+ > >= < <=
== !=
&
^
|
&&
||
= += -= *= /= %=
© Karim Bouzoubaa
48
2.10 Opérateurs – Exemple récapitulatif
l 
Évaluation de l’expression : (
- 
a – b > 0 ) && ( a * b + c < 100 )
a = 5, b = 2 , c = 3
Ordre
1.
2.
3.
4.
5.
6.
© Karim Bouzoubaa
Opération
a - b
3 > 0
a * b
10 + c
13 < 100
true && true
Expression
( 3 > 0 ) && ( a * b + c < 100 )
true && ( a * b + c < 100 )
true && ( 10 + c < 100 )
true && ( 13 < 100 )
true && true
true
49
2.11 Documentation
l 
l 
l 
l 
l 
Documentation Java disponible gratuitement : java.sun.com/reference/docs/
Objectifs de Java : fournir un langage comportant le plus possible de
fonctionnalités (e.g. puissance, maximum, tri de nombres, date
système, etc.)
Ces fonctionnalités sont regroupées dans une API
Pour les programmeurs : se concentrer sur la programmation de
leurs problèmes particuliers au lieu de perdre du temps à
programmer des fonctions qui peuvent avoir déjà été programmées
par d’autres par le passé.
API très vaste (très difficile à connaître en entier)
- 
Java fournit l’API à travers une documentation
- 
Obtenir de l’aide sur ces fonctions et sur la manière dont elles doivent être
utilisées.
© Karim Bouzoubaa
50
2.11 Documentation
l 
Structure de ces fonctionnalités:
API = ensemble de packages (ou librairies)
-  Un package = ensemble de classes (ou programmes)
-  Classe = ensemble de méthodes (ou fonctionnalités)
- 
l 
Exemple, puissance mathématique xy
Package java.lang, classe Math, méthode pow(x, y)
-  Pour utiliser la méthode pow(x, y) dans un programme
- 
l 
l 
Mentionner le package et la classe import java.lang.Math;
Pour utiliser toutes les classes du package import java.lang.*;
© Karim Bouzoubaa
51
2.11 Documentation
Cadre des
packages
Cadre
principal
Cadre
des
classes
© Karim Bouzoubaa
52
2.11 Documentation
l 
Importance de l’index (e.g. méthode de tri sort)
© Karim Bouzoubaa
53
Téléchargement