Telechargé par hiba akkari

Chap1-POO-SE

publicité
1
Conception p a r Objet
e t Programmation
Java
2SE
2022-2023
2
Plan du cours
Séances Chapitres
1
Introduction à Java
2
Classe et objet
3
Encapsulation
4
Héritage & Polymorphisme
5
Exceptions
6
Interface et collection
3
Objectifs du cours
Décrire
les éléments-clé de laplate-forme
Java
Compiler etexécuter une application Java
Décrire la syntaxedu langage
Comprendre leparadigme OO et
utiliser Javapour le mettre en œuvre
Comprendre et utiliser les exceptions
Comprendre et utiliser lesAPI de java
4
Introduction à Java
Qu’est-ce que Java?
5
Javaest uneplateforme
◦ La plateformeJava,uniquement software,est exécutéesur la
plateforme du systèmed’exploitation
◦ La « JavaPlatform » est constituée de:
La « JavaVirtual Machine » (JVM)
Des interfaces de programmation d’application(JavaAPI)
Java est un langagede programmation
Orienté Objet
◦ Un programme Javaest compilé etinterprété
6
La plateforme Java
Plateforme =
environnement hardware ou
software sur lequel le programme est exécuté.
La Java« Platform » se compose de:
◦ laJavaVirtual Machine (JavaVM)
◦ laJavaApplication Programming Interface(JavaAPI)
7
La plateforme Java
8
La plateforme Java
Java VirtualMachine
9
La plateforme Java
Java VirtualMachine
Une
machine virtuelle est un ordinateur
fictifs’exécutant sur un ordinateur réel
Elle possède un langagenatifpropre et traduit
un programme écrit dans ce langage vers le
langage natif de l’ordinateur.
Lit le bytecode compilé (indépendant de la
plateforme)
Implémentée dans des environnements de
développement ou dans les navigateurs Web
La plateformeJava
10
Java VirtualMachine
La plateforme Java
11
JavaApplication Programming Interface (API)

Java fournit de nombreuses librairies de classes
remplissant des fonctionnalités très diverses :
c'est l'API Java
–

API (Application and Programming Interface /Interface pour la
programmation d'applications) : Ensemble de bibliothèques permettant
une programmation plus aisée car les fonctions deviennent
indépendantes du matériel.
Ces classes sont regroupées, par catégories, en
paquetages (ou "packages").
12
La plateforme Java
JavaApplication Programming Interface (API)
 L’API Javaest structuré en libraires (packages).Les packagescomprennent des
ensembles fonctionnels decomposants (classes)..
Java.lang: gestion des chaînes de caractères (String), interaction avecl’OS
(System), programmation parallèle(Thread).
Java.util:parseur de chaîne,Liste,Dictionnaires, HashTable,...
Java.io: gestion des entrées/Sorties (écran, clavier,fichier)
java.applet: gestion desapplets
Java.awt et Java.swing: gestion de l’interfacegraphique:Fenêtres,boutons,
boites de dialogue,événements souris,...
Outil de développement : le JDK
13

Environnement de développement fourni par Sun

JDK signifie Java Development Kit (Kit de développement
Java).

Il contient :
–
les classes de base de l'API java (plusieurs centaines),
la documentation au format HTML
le compilateur : javac
la JVM (machine virtuelle) : java
le visualiseur d'applets : appletviewer
–
le générateur de documentation : javadoc
–
etc.
–
–
–
–
14
Outil de développement : le JDK
15
Le langage deprogrammation Java
Simple et orienté objet
 Javaest un langagede programmation
simple
◦ Langagede programmation au même titre que C/C++/Perl/Smalltalk/Fortranmais
plus simple
◦ Les aspects fondamentaux du langagesont rapidement assimilés
 Javaest orienté objet :
◦ La technologie OO après un moment de gestation est maintenantcomplètement
intégrée
◦ En java,tout est un objet (à ladifférencedu C++ par ex.)
 Simple aussi parce qu’ilcomporte un grand nombre
d’objets prédéfinis pour l’utilisateur
Gestion
mémoire (« Garbage collector»)
 Javaest familier pour les programmeurs
C++
Le langage deprogrammation Java
16
Neutre architecturalement

Il existe une grande diversité de
systèmes d’exploitation
compilateur Javagénère un
bytecode, c’est à dire un format
intermédiaire, neutre
architecturalement, conçu pour faire
transiter efficacement le code vers
des hardware différents et/ou
plateformes différentes
MyProgram.java
 Le
 Le
bytecode ne peut-être interprété
JVM
que par le processeur de laJVM
Mac
JavaCompiler
MyProgram.class
= bytecode
JVM
Windows
JVM
Unix
JAVA: Caractéristiques
17
Orienté
Objet
Portable
Interprété
Simple
JAVA
Multitâches
Fortement
typé
Gère la
mémoire
Économe
Sû
r
Cours POO & Langage JAVA
Syntaxe du langage
JAVA
Cours POO & Langage JAVA
Introduction
19
Nous traitons Javad'abord comme un langage de programmation
classique.
Nous aborderons les objets ultérieurement.
Dans un programme ontrouve deux choses
- des données
- les instructions qui lesmanipulent
On s'efforce généralement de séparer les données des instructions :
DONNEES
INSTRUCTIONS
Cours POO & Langage JAVA
JAVA: Syntaxe
20
Les commentaires
 Sur plusieurs lignes
 Sur une seule ligne
 Commentaire Javadoc
Cours POO & Langage JAVA
JAVA: Syntaxe
21
Nom de la
classe
Déclaration de classe
Modificateur
public class Personne {
private String nom;
private String prenom;
private int age;
… // autres attributs
Déclaration des
attributs
public Personne () {
nom = " ";
prenom = " ";
age = 0;
Définition des
méthodes
}
public String getNom(){
return this.nom;
}
… // autres méthodes
}
Cours POO & Langage JAVA
JAVA: Syntaxe
Instructions,blocs et blancs
22

Les instructions Java se terminent par un ;

Les blocs sont délimités par :
{ pour le début de bloc
} pour la fin du bloc
Un bloc permet de définir un regroupement d’instructions.
La définition d’une classe ou d’une méthode se fait
dans un bloc.

Les espaces, tabulations, sauts de ligne sont autorisés.
Cela permet de présenter un code plus lisible.
Cours POO & Langage JAVA
JAVA: Syntaxe
Point d’entrée d’un programme Java
23

Pour pouvoir faire un programme exécutable il faut toujours une
classe qui contienne une méthode particulière, la méthode «
main »

c’est le point d’entrée dans le programme :le
microprocesseur sait qu’il va commencer à exécuter les
instructions à partir de cet endroit
public static void main(String arg[ ])
{
…/…
}
Cours POO & Langage JAVA
JAVA: Syntaxe
24
Exemple (1)
Fichier Bonjour.java
public class Bonjour
La classe est l’unité de
base de nos programmes.
Le mot clé en Java pour
définir une classe est
class
Accolades délimitant le
début et la fin de la définition
de la class Bonjour
{
public static void main(String args[])
{
System.out.println(“bonjour”);
Accolades délimitant le début
et la fin de la méthode main
}
}
Les instructions se terminent
par des ;
JAVA: Syntaxe
25
Exemple (1)
Compilation et exécution (1)
Le nom du fichier est nécessairement
celui de la classe avec l’extension
.java en plus. Java est sensible à la
casse des lettres.
Fichier Bonjour.java
Compilation en bytecode
java dans une console DOS:
javac Bonjour.java
Génère un fichier
Bonjour.class
public class Bonjour
{
public static void main(String[] args)
Exécution du programme
(toujours depuis la console
DOS) sur la JVM :
java Bonjour
 Affichage « bonjour »
dans la console
{
System.out.println(“bonjour”);
}
}
25
JAVA: Syntaxe
Exemple (1)
Compilation et exécution (1)
26

Pour résumer, dans une console DOS, si j’ai un fichier
Bonjour.java pour la classe Bonjour :
–
javac Bonjour.java



–
Compilation en bytecode java
Indication des erreurs de syntaxe éventuelles
Génération d’un fichier Bonjour.class si pas d’erreurs
java Bonjour

Java est la machine virtuelle

Exécution du bytecode
Nécessité de la méthode main, qui est le point d’entrée dans
le programme

JAVA: Syntaxe
27
Identificateurs

On a besoin de nommer les classes, les variables, les
constantes, etc. ; on parle d’identificateur.

Les identificateurs commencent par
une lettre, _ ou $
Attention : Java distingue les majusculesdes minuscules Java est
sensible à la casse.
Conventions sur les identificateurs :


Si plusieurs mots sont accolés, mettre une majuscule à chacun
des mots sauf le premier.
• Exemple : uneVariableEntiere
La première lettre est majuscule pour les classes et les interfaces
• Exemples : MaClasse, UneJolieFenetre
Cours POO & Langage JAVA
JAVA: Syntaxe
28

Identificateurs
Conventions sur les identificateurs :
–
La première lettre est minuscule pour les méthodes, les
attributs et les variables

–
exemples : setLongueur, i, uneFenetre
Les constantes sont entièrement en majuscules

exemple : LONGUEUR_MAX
Un identifiant ne peut pas être:
un mot clé du langage
true ou false qui sont des booléens littéraux
null qui est une valeur littérale
Cours POO & Langage JAVA
JAVA: Syntaxe
29
Les mots réservés de Java
abstract
default
goto
null
synchronized
boolean
do
if
package
this
break
double
implements
private
throw
byte
else
import
protected
throws
case
extends
instanceof
public
transient
catch
false
int
return
true
char
final
interface
short
try
class
finally
long
static
void
continue
float
native
super
volatile
const
for
new
switch
while
Cours POO & Langage JAVA
JAVA: Syntaxe
30
Déclarationdesdonnées
Rôle des déclarations
Un programme manipule des données caractérisées par un nom et un type.
Ces données sont stockées en mémoire.
Au moment de la traduction du programme, le compilateur affecte à chaque
donnée un emplacement en mémoire caractérisé par une adresse et une
taile. Il le fait en s'aidant des déclarations faites par le programmeur.
Par aileurs celles-ci permettent au compilateur de détecter des
erreurs de programmation.
Ainsi l'opération
x=x*2;
sera déclarée erronée si x est une chaîne de caractères par exemple.
JAVA: Syntaxe
31
Déclaration desdonnées
Déclaration des constantes
La syntaxe de déclaration d'une constante est la suivante :
final type nom=valeur;
ex : final float PI =3.141592F;
Remarque:
Pourquoi déclarer des constantes ?
1. La lecture du programme sera plus aisée si l'on a donné à la
constante un nom
ex : final float taux_tva = 0.186F ;
2.La modification du programme sera plus aisée si la "constante" vient à
changer. Ainsi dans le cas précédent, si le taux de tva passe à 33%, la seule
modification à faire sera de modifier l'instruction définissant savaleur :
final float taux_tva=0.33F;
Si l'on avaitutilisé 0.186 explicitement dans le programme, ce
serait alors de nombreuses instructions qu'il faudrait modifier.
JAVA: Syntaxe
32
Déclaration desdonnées
Déclarationdesvariables
Une variable est identifiée par un nom et se rapporte à un type de
données. Le nom d'une variable Java a n caractères, le premier
alphabétique, les autres alphabétiques ou numériques.
Javafaitla différenceentre majuscules et minuscules.Ainsi les variables
FINet finsontdifférentes.
Les variables peuvent être initialisées lors de leur déclaration.
La syntaxe de déclaration d'une ou plusieurs variables est :
identificateur_de_type variable1,variable2,...,variable n;
 où identificateur_de_type est un typeprédéfiniou bienun typeobjet
défini par le programmeur.
JAVA: Syntaxe
33
Déclaration desdonnées
Déclaration desvariables
int i = 0;
Type
Nom de lavariable
La déclaration et l’initialisation d’une variable peut se faire en
une seule ligne.
Ex:
int i = 0;
La déclaration et l’initialisation d’une variable peut se faire sur
plusieurs lignes.
Ex:
String chaine;
chaine = "bonjour";
La déclaration de plusieurs variables en même temps.
Ex:
Cours POO & Langage JAVA
int i = 0, j = 3;
JAVA: Syntaxe
34
Les types de Données
Le type d'une variable peut être :
soit un type élémentaire dit aussi type primitif déclaré sous la forme
type_élémentaire variable
soit une classe déclarée sous la forme classe variable
JAVA: Syntaxe
35
Les types de Données :
Les types numériques entiers
byte
short
int
long
Taille (en bits)
8
16
Intervalle de
valeurs
-128 … 127
-32768 …
32767
32
-231 … 231-1
64
-263 … 263-1

Notation
– 2 entier normal en base décimal
– 0b101001 entier en valeur binaire en base 2
– 010 entier en valeur octale (base 8)
– 0xF entier en valeur hexadécimale (base 16)

Exemple
int binaryValue = 0b10; // == 2
int octalValue = 010; // == 8
decimalValue = 10;
int hexadecimalValue = 0x10; // == 16
JAVA: Syntaxe
36
Les types de Données :Numériques flottants
Taille (en bits)
Exemple

float
double
32
64
3.25f - 3.1e-4f
3.25 - 3.1e-4
Notation
– 4.55 ou 4.55D réel double précision
– 4.55f réel simple précision
Exemple
// Notation traditionnelle
float floatValue = 3.4f;
double doubleValue = 3.4;
JAVA: Syntaxe
37
Les types de Données :les Booléens
true
 peut prendre deux valeurs
false
Cours POO & Langage JAVA
Ex
:
boolean trouve = true;
JAVA: Syntaxe
Les types de Données : les caractères
38


Les caractères
–
char : contient une seule lettre
–
le type char désigne des caractères en représentation
Unicode

Codage sur 2 octets contrairement à ASCII/ANSI codé sur 1
octet. Le codage ASCII/ANSI est un sous-ensemble
d’Unicode

Notation hexadécimale des caractères Unicode de
‘ \u0000 ’ à ‘ \uFFFF ’.
Notation
char a,b,c; // a,b et c sont des variables du type char
a='a'; // a contient la lettre 'a'
b= '\u0022‘; // b contient le caractère guillemet : "
c=97; // x contient le caractère de rang 97 : 'a'
JAVA: Syntaxe
Les types de Données :les tableaux
39


Les tableaux permettent de stocker plusieurs valeurs de même
type dans une variable.
–
Les valeurs contenues dans la variable sont repérées par un
indice
–
En langage java, les tableaux sont des objets
Déclaration
–

int tab [ ];
String chaines[ ];
Création d'un tableau

tab = new int [20];
// tableau de 20 int

chaines = new String [100];
// tableau de 100 chaine
JAVA: Syntaxe
40
Les instructions élémentaires de Java
On distingue
1 ) les instructions élémentaires exécutées par l'ordinateur.
2 ) les instructions de contrôle du déroulement du programme.
Les instructions élémentaires apparaissent clairement lorsqu'on considère
la structure d'un micro-ordinateur et de ses périphériques.
Ecran
Clavier
U.C
Mémoire
Disque
1. lecture d'informations provenant du clavier
2. traitement d'informations
3. écriture d'informations àl'écran
4. lecture d'informations provenant d'un fichierdisque
5. écriture d'informations dans unfichier disque
JAVA: Syntaxe
41
Ecrituresurécran
Le System.out.println() est une méthode utilisée pour
imprimer sur la console ou la sortie standard.
En plus d’imprimer sur la console, la méthode println()
déplace le curseur sur une nouvelle ligne
La syntaxe de l'instruction d'écriture sur l'écran est la suivante :
System.out.println(expression);
où expression esttouttypede donnéequipuisse êtreconvertien
chaîne decaractères pourêtreaffichéà l'écran.
class PrintLN {
42
Exemple
public static void main(String[] args)
{
// Declaring different datatypes
int num =10;
char ch ='G';
String str = "GeeksforGeeks";
double d = 10.2;
float f = 13.5f;
boolean bool = true;
// Various overloads of println() method
System.out.println(num);
System.out.println(ch);
System.out.println(str);
System.out.println(d);
System.out.println(f);
System.out.println(bool);
System.out.println("Hello");
System.out.print("The addition of ");
System.out.println(
num1 + " and " + num2 + " is:");
}
}
JAVA: Syntaxe
43
Lecture dedonnées tapées au clavier
Pour lire au clavier les données qui nous intéressent il faut créer et utiliser
un objet spécial en instanciant la classe java.util.Scanner.
Cet objet va nous fournir les méthodes qui manquaient pour lire des
données.
La classe Scanner est principalement utilisée pour scanner l'entrée et lire l'entrée
des types de données primitifs (intégrés) comme int, decimal, double, etc.
import java.util.Scanner;
public class UseScanner
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
int nombre;
System.out.print("Entrez un nombre entier: ");
nombre = scan.nextInt();
System.out.println(nombre);
}
}
JAVA: Syntaxe
44
Affectationde lavaleurd'une expression à une variable
On s'intéresse ici à l'opération
Variable = expression;
L'expression peut être de type:
• Arithmétique
• Relationnelle
• Booléenne
•Caractère
JAVA: Syntaxe
45
Interprétationdel’opérateurd’affectation
L'opération variable=expression;
estelle-mêmeuneexpressiondontl'évaluationse déroulede lafaçon suivante:
• La partie droite de l'affectation est évaluée: le résultat est une valeur V.
• La valeur V est affectée à la variable
C'est ainsi que l'opération V1=V2=expression est légale.
 Acausedelapriorité,c'est l'opérateur = le plus à droite qui vaêtre évalué.
On a donc V1=(V2=expression) . L'expression (V2 = expression )est évaluée et a pour valeur V.
L'évaluation de cette expressiona provoqué l'affectation de V àV2.
L'opérateur = suivant est alors évaluésous laforme V1=V.La valeur decette expressionest
encore V.Son évaluation provoque l'affectation de V àV1.
Ainsi donc, l'opération V1=V2=expressionest une expressiondont l'évaluation
1 ) Provoque l'affectation de lavaleur de expressionauxvariablesV1 etV2
2 ) Rend comme résultat lavaleur de expression.
On peut généraliseràune expresion du type :V1=V2=....=Vn=expression
JAVA: Syntaxe
44
Expression arithmétique
Les opérateurs des expressions arithmétiques sont les
suivants :
+
addition
-
Soustraction
*
multiplication
/
division :le résultat est le quotient exact si l'un au moins des opérandes
est réel.
Si les deux opérandes sont entiers le
résultat est le quotient entier.Ainsi 5/2 -> 2 et 5.0/2->2.5.
%
division :le résultat est le reste quelque soit lanature des opérandes, le
quotient étantlui entier.C'est donc l'opération modulo.
JAVA: Syntaxe
Expressionarithmétique
Il existe diversesfonctions mathématiques :
double sqrt(doublex)
double cos(double x)
double sin(double x)
double tan(doublex)
Double pow(doublex,doubley)
double exp(doublex)
doublelog(double
x)
double abs(double x)
etc...
racinecarrée
Cosinus
Sinus
Tangente
x à lapuissancey(x>0)
Exponentielle
Logarithme népérien
valeurabsolue
Toutes ces fonctions sont définies dans une classe Java appelée Math. Lorsqu'on
les utilise, il faut les préfixer avec le nom de la classe où elles sont définies.
Ainsi on écrira :
double x,y=4;
x=Math.sqrt(y);
JAVA: Syntaxe
48
Prioritésdansl'évaluationdes expressions
arithmétiques
La priorité des opérateurs lors de l'évaluation d'une
expression arithmétique est lasuivante
(du plus prioritaire au moins prioritaire) :
[fonctions],[ ( )],[ *, /,%], [+,-]
Les opérateurs d'un même bloc [ ] ont même priorité.
JAVA: Syntaxe
49
Expressions relationnelles
Les opérateurs sont les suivants :<, <= ,==, != ,>,>=
ordre de priorité
>,>=, <,<=
==, !=
Le résultat d'une expression relationnelle est le booléen falsesiexpressionestfausse truesinon.
Exemple:
booleanfin;
int x;
fin=x>4;
x= (5==5); // l ’expression (5==5) est évaluée et la valeur
est affectée à x qui vaut alors vrai
x= (5!=4); // x vaut vrai, ici on obtient vrai si 5 est différent de 4
x= (5>5); // x vaut faux, 5 n'est pas supérieur strictement à 5
x= (5<=5); // x vaut vrai, 5 est bien inférieur ou égal à 5
JAVA: Syntaxe
50
Expressions relationneles
Comparaison de deux caractères
Soient deux caractères c1 et c2. Il est possible de les comparer avecles
opérateurs
<, <=, ==, !=, >, >=
Ce sont alors leurs codes ASCII,qui sont des nombres, qui sont alors
comparés.
On rappele que selon l'ordre ASCII on a les relations suivantes: espace
< ..< '0' < '1' < ..< '9' < ..< 'A' < 'B' < ..< 'Z' < ..< 'a' < 'b' < ..<'z'
JAVA: Syntaxe
51
Expressions relationneles
Comparaison de deux chaînes de caractères
Elles sont comparées caractère par caractère.La première inégalitérencontrée entre deux caractères
induit une inégalité de même
sens sur leschaînes.
Exemples :
Soit àcomparer les chaînes "Chat" et "Chien" "Chat" "Chien"
----------------------- 'C' = 'C'
'h' = 'h'
'a' < 'i‘
Cette dernière inégalité permet de dire que "Chat" < "Chien".
Soit à comparer les chaînes "Chat" et "Chaton". Il y a égalité tout le temps jusqu'à épuisement de la
chaîne "Chat". Dans ce cas, la chaîne épuisée est déclarée la plus "petite". On adonc la relation
"Chat" < "Chaton".
JAVA: Syntaxe
52
Expressions relationneles
Fonctions de comparaisons de deux chaînes
On ne peut utiliser ici les opérateurs relationnels <,<=, ==, !=,>,>= . Il
faututiliser des méthodes de laclasse String:
String chaine1,chaine2;
chaine1=…;
chaine2=…;
int i=chaine1.compareTo(chaine2);
boolean egal=chaine1.equals(chaine2)
Ci-dessus, lavariable i auralavaleur :
 0 si les deux chaînessont égales
 1 si chaîne n°1 > chaîne n°2
 -1 si chaîne n°1< chaîne n°2
La variable egalaura la valeur true si les deux chaînes sont égales.
JAVA: Syntaxe
53
Expressionsbooléennes
Les opérateurs sont :
– et logique : &&
– ou logique : ||
– non logique : !
 Le résultat d'une expression booléenne est un booléen.
ordre de priorité
! , &&, ||
Exemples : si a et b sont 2 variables booléennes
boolean a,b, c; a= true;
–
b= false;
c= (a &&b); // c vaut false
c= (a || b); // c vaut true
c= !(a &&b); // c vaut true c=!a; // c vaut false
Les opérateurs relationnels ont priorité sur les opérateurs &&et ||.
les opérateurs d’incrémentation ++
et de décrémentation et --
54

Le langage Java offre des opérateurs d'incrémentation et de
décrémentation de variables entières.

L'opérateur ++ permet d'incrémenter (ajouter 1 à la valeur courante) le
contenu d'une variable.

l'opérateur -- permet de décrémenter (retirer 1 à la valeur courante) le
contenu d'une variable.

Dans les deux cas, ces opérateurs peuvent être utilisés en notation
préfixée ou bien en notation postfixée.
Exemple
int value = 10; // On démarre avec une variable initialisée à 10;
++value; // Cette instruction se contente d'incrémenter value de 1
System.out.println( value ); // Affiche 11
--value; // Cette instruction se contente de décrémenter value de 1
System.out.println( value ); // Affiche 10
int value = 10; // On démarre avec une variable initialisée à 10;
value++; // Cette instruction se contente d'incrémenter value de 1
System.out.println( value ); // Affiche 11
value--; // Cette instruction se contente de décrémenter value de 1
System.out.println( value ); // Affiche 10
Utilisation préfixée des opérateurs ++ et -55
public class Demo {
public static void main( String [] args ) { int
first = 10;
int second = 20;
int result = ++first + ++second;
System.out.println( result ); // Affiche 32
}
}
Utilisation postfixée des opérateurs ++ et -public class Demo {
2
3 public static void main( String [] args ) {
4
int first = 10;
5
int second = 20;
6
7
int result = first++ + second++;
8
9
10 System.out.println( result ); // Affiche 30 } }
11
12
13
56
Prioritégénéraledes
opérateurs
() [] fonction
gd
! ~ ++ -dg
new (type) opérateurs cast
dg
*/%
gd
+gd
<< >>
gd
< <= > >= instanceof
gd
== !=
gd
&
gd
^
gd
|
gd
&&
gd
||
gd
?:
dg
= += -= etc. .
dg
gd indique qu'a priorité égale, c'est la priorité gauche-droite qui est
observée. Cela signifie que lorsque dans une expression, l'on a
des opérateurs de même priorité, c'est l'opérateur le plus à gauche dans
l'expression qui est évalué en premier.
dg indique une
priorité droite-gauche.
JAVA: Syntaxe
57
Lesstructures de contrôles
 Les
structures de contrôle
classiques existent en Java :
–
–
–
–
–
if, else
switch, case, default, break
for
while
do, while
JAVA: Syntaxe
58

Les structures de contrôles : if /else
Instructions conditionnelles
–
Effectuer une ou plusieurs instructions seulement si une
certaine condition est vraie
if (condition)
instruction;
et plus généralement :
if (condition)
{ bloc d’instructions}
condition doit être un booléen ou renvoyer une valeur booléenne
–
Effectuer une ou plusieurs instructions si une certaine
condition est vérifiée sinon effectuer d’autres instructions
if (condition)
instruction1;
else instruction2;
et plus généralement
if (condition)
{ 1er bloc d’instructions}
else
{2ème bloc d’instruction}
JAVA: Syntaxe
59
Les structures de contrôles :if /else
Max.java
JAVA: Syntaxe
Les structures de contrôles : switch
60

Sélection multiples
–
l’utilisation de if /else peut s’avérer lourde quand on doit
traiter plusieurs sélections et de multiples alternatives
–
pour cela existe en Java le switch / case assez identique à
celui de C/C++
–
La valeur sur laquelle on teste doit être un char ou un entier
(à l’exclusion d’un long).
–
L’exécution des instructions correspondant à une alternative
commence au niveau du case correspondant et se termine à la
rencontre d’une instruction break ou arrivée à la fin du switch
JAVA: Syntaxe
61
Les structures de contrôles : switch
Alternative.java
import java.io.*;
Variable contenant la valeur
que l’on veut tester.
public class Alternative
Première alternative :
{
on affiche Un et on sort
public static void main(String args[])
du bloc du switch au break;
{
int nb = Integer.parseInt(System.console().readLine("Entrer une valeur pour n:"));
switch(nb)
{
case 1:
Deuxième alternative :
System.out.println("Un");
on affiche Deux et on sort
case 2:
du bloc du switch au break;
System.out.println("Deux"); break;
default:
System.out.println("Autre nombre"); break;
Alternative par défaut:
}
on réalise une action
}
par défaut.
}
61
JAVA: Syntaxe
62

Les structures de contrôles : while
Boucles indéterminées
– On veut répéter une ou plusieurs instructions un nombre
indéterminés de fois :on répète l’instruction ou le bloc
d’instruction tant que une certaine condition reste vraie
– nous avons en Java une première boucle while (tant que)
 while (condition)
{bloc d’instructions}
 les instructions dans le bloc sont répétées tant que la
condition reste vraie.
 On ne rentre jamais dans la boucle si la condition est fausse dès
le départ
JAVA: Syntaxe
63

Les structures de contrôles : while
Boucles indéterminées
–
un autre type de boucle avec le while:
do
{bloc d’instructions}
while (condition)

les instructions dans le bloc sont répétées tant que la condition
reste vraie.

On rentre toujours au moins une fois dans la boucle : la
condition est testée en fin de boucle.
JAVA: Syntaxe
Les structures de contrôles :while
64
Factorielle.java
import java.io.*;
public class Facto1
{
public static void main(String args[])
{
int n, result,i;
n = Integer.parseInt(System.console().readLine("Entrer une valeur pour n:"));
result = 1; i = n;
while (i > 1)
{
result = result * i;
i--;
}
System.out.println("la factorielle de "+n+" vaut "+result);
}
}
JAVA: Syntaxe
65

Les structures de contrôles : for
Boucles déterminées
–
On veut répéter une ou plusieurs instructions un nombre déterminés de fois : on
répète l’instruction ou le bloc d’instructions pour un certain nombre de
pas.
–
La boucle for
for (int i = 1; i <= 10; i++)
System.out.println(i); //affichage des nombres de 1 à 10
–
une boucle for est en fait équivalente à une boucle while
for (instruction1; expression1; expression2) {bloc}
… est équivalent à …
instruction 1;
while (expression1)
{bloc; expression2}}
JAVA: Syntaxe
Les structures de contrôles : for
66
Factorielle.java
import java.io.*;
public class Facto2
{
public static void main(String args[])
{
int n, result,i;
n = Integer.parseInt(System.console().readLine("Entrer une valeur pour n:"));
result = 1;
for(i =n; i > 1; i--)
{
result = result * i;
}
System.out.println("la factorielle de "+n+" vaut "+result);
}
}
Téléchargement