0% ont trouvé ce document utile (0 vote)
2 vues164 pages

ch2 Java-1

Le document présente les fondamentaux de Java, incluant les variables, les opérations sur celles-ci, ainsi que les structures conditionnelles et itératives. Il aborde également le typage statique et dynamique, les types primitifs et objets, ainsi que les méthodes de la classe String. Enfin, des exemples pratiques illustrent l'utilisation des différentes fonctionnalités du langage.

Transféré par

aminarazquaoui
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues164 pages

ch2 Java-1

Le document présente les fondamentaux de Java, incluant les variables, les opérations sur celles-ci, ainsi que les structures conditionnelles et itératives. Il aborde également le typage statique et dynamique, les types primitifs et objets, ainsi que les méthodes de la classe String. Enfin, des exemples pratiques illustrent l'utilisation des différentes fonctionnalités du langage.

Transféré par

aminarazquaoui
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Java : fondamentaux

1 / 104
Plan
1 Variables
Typage statique
Typage dynamique
2 Opérations sur les variables
Variables numériques
Variables textuelles
3 Classe Math
4 Lecture d’une saisie
5 Structures conditionnelles
if
if ... else
if ... else if ... else
switch
Expression ternaire

2 / 104
Plan

6 Structures itératives
while
do ... while
for

7 Tableaux
Tableaux à une dimension
Tableaux à deux dimensions

8 Constantes

9 Méthodes

3 / 104
Variables

Java

Une variable ?
Pointeur vers une zone mémoire
Permettant de stocker une ou plusieurs données
Pouvant avoir plusieurs valeurs différentes dans un programme

4 / 104
Variables

Java

Une variable ?
Pointeur vers une zone mémoire
Permettant de stocker une ou plusieurs données
Pouvant avoir plusieurs valeurs différentes dans un programme

Java : langage de programmation fortement typé

Il faut préciser le type de chaque variable


Une variable peut avoir de valeurs différentes mais ne peut
changer de type.

4 / 104
Variables

Java

Deux modes de typage en Java


H I ©
la L
Statique : type précisé à la déclaration de E variable
U
L
Dynamique : variable déclarée avec MOle mot-clé var ⇒ type
e
déterminé dynamiquement
r f Eà partir de la valeur initiale. [disponible
depuis Java 11]
A ch
©

5 / 104
Variables

Java

Nom de variables en Java

Utiliser le CamelCase

Premier caractère : lettre (ni ni $)

H I ©
Caractère espace non autorisé
U EL
O
LM
Underscore non autorisé comme nom de variable depuis Java 9

e f E
Privilégier les noms en relation avec le contexte
r
un c
Ne pas choisirA
h
mot-clé du langage
©
Ne pas choisir un ancien mot-clé du langage comme goto ou const
(liste de mots-clés : [Link]
java/nutsandbolts/_keywords.html)

Sensible à la casse

6 / 104
Variables Typage statique

Java

Déclarer une variable


type nomVariable;

7 / 104
Variables Typage statique

Java

Déclarer une variable


type nomVariable;

Deux choix possibles pour typer les variables


Types simples (primitifs) : commencent par une lettre en
minuscule
Types objets : commencent par une lettre en majuscule

7 / 104
Variables Typage statique

Java
Principaux types primitifs en Java

byte : entier codé sur 1 octet (entre -128 et 127)

short : entier codé sur 2 octets (entre -32 768 et 32 767)

H I
int : entier codé sur 4 octets (entre -2 147 483 648 et 2 147 483 647) ©
U EL
long : entier codé sur 8 octets (entre -9 223 372 036 854 775 808 et +9 223 372 036 854
O
LM
775 807)

f E
float : nombre à virgule codé sur 4 octets
r e
ch
©A
double : nombre à virgule codé sur 8 octets

boolean : soit true soit false (1 octet)

char : caractère codé sur 2 octet situé entre deux ’

8 / 104
Variables Typage statique

Java
Principaux types primitifs en Java

byte : entier codé sur 1 octet (entre -128 et 127)

short : entier codé sur 2 octets (entre -32 768 et 32 767)

H I
int : entier codé sur 4 octets (entre -2 147 483 648 et 2 147 483 647) ©
U EL
long : entier codé sur 8 octets (entre -9 223 372 036 854 775 808 et +9 223 372 036 854
O
LM
775 807)

f E
float : nombre à virgule codé sur 4 octets
r e
ch
©A
double : nombre à virgule codé sur 8 octets

boolean : soit true soit false (1 octet)

char : caractère codé sur 2 octet situé entre deux ’

Pas de type primitif pour les chaı̂nes de caractère.

8 / 104
Variables Typage statique

Java

Exemple
int x;

9 / 104
Variables Typage statique

Java

Exemple
int x;

Déclarer et initialiser une variable


int x = 5;

9 / 104
Variables Typage statique

Java

Exemple
int x;

Déclarer et initialiser une variable


int x = 5;

Ceci est une erreur


byte x = 130;

9 / 104
Variables Typage dynamique

Java

Déclarer une variable avec le mot-clé var


var nomVariable = valeurInitiale;

10 / 104
Variables Typage dynamique

Java

Déclarer une variable avec le mot-clé var


var nomVariable = valeurInitiale;

Remarque

Une variable déclarée avec le mot-clé var


doit être initialisée
a un type déterminé en fonction de sa valeur initiale
ne peut changer de type

10 / 104
Variables Typage dynamique

Java

Exemple
var x = 10;

11 / 104
Variables Typage dynamique

Java

Exemple
var x = 10;

Ceci génère une erreur


x = "bonjour";

11 / 104
Opérations sur les variables Variables numériques

Java

Pour les variables numériques (int, float...)


= : affectation
H I ©
+ : addition
U EL
O
- : soustraction
f E LM
ch
* : multiplicationr e
©A
/ : division
% : reste de la division

12 / 104
Opérations sur les variables Variables numériques

Java

Quelques raccourcis
i = i + 1 ⇒ i++;
H I ©
i = i - 1 ⇒ i--; U EL
O
i = i + 2 ⇒ i += 2;
f E LM
r e
chi -= 2;
A
i = i - 2 ⇒
©
...

13 / 104
Opérations sur les variables Variables numériques

Java

Exemple de post-incrémentation
int i = 2;
int j = i++;
[Link](i); // affiche 3
[Link](j); // affiche 2

14 / 104
Opérations sur les variables Variables numériques

Java

Exemple de post-incrémentation
int i = 2;
int j = i++;
[Link](i); // affiche 3
[Link](j); // affiche 2

Exemple de pre-incrémentation
int i = 2;
int j = ++i;
[Link](i); // affiche 3
[Link](j); // affiche 3

14 / 104
Opérations sur les variables Variables numériques

Java

Pour convertir le contenu d’une variable (le cast pour les types
compatibles)
int x = 100;
byte z = (byte) x;
[Link](z); // affiche 100

15 / 104
Opérations sur les variables Variables numériques

Java

Pour convertir le contenu d’une variable (le cast pour les types
compatibles)
int x = 100;
byte z = (byte) x;
[Link](z); // affiche 100

Attention aux valeurs qui dépassent l’intervalle


int x = 200;
byte z = (byte) x;
[Link](z); // affiche -56

15 / 104
Opérations sur les variables Variables numériques

Java
Les emballages (wrapper) de types primitifs (types objets) en Java

Byte pour byte

Short pour short

Long pour long


H I ©
Integer pour int
U EL
O
Float pour float

f E LM
Double pour double
ch r e
©A
Boolean pour boolean

Character pour char

16 / 104
Opérations sur les variables Variables numériques

Java
Les emballages (wrapper) de types primitifs (types objets) en Java

Byte pour byte

Short pour short

Long pour long


H I ©
Integer pour int
U EL
O
Float pour float

f E LM
Double pour double
ch r e
©A
Boolean pour boolean

Character pour char

Il existe aussi plusieurs autres types objets : String, Date...

16 / 104
Opérations sur les variables Variables numériques

Java

Pourquoi les types primitifs et les types objets ?

Les types primitifs sont moins coûteux en mémoire


H I ©
U EL
Les types objets offrent plusieurs méthodes à appliquer sur les
O
f E LM
valeurs : conversion, nombre de caractère...

ch r e
Toutes les classes wrappers contiennent une méthode
©A
([Link](string)) qui permet de
convertir une chaine de caractère en type primitif de cette classe

17 / 104
Opérations sur les variables Variables numériques

Java

Pas besoin de convertir d’un type simple vers son wrapper (ou
inversement)

H I ©
EL
Integer j = 2;
int k = j;
O U
[Link](k); // affiche 2
f E LM
int l = 3;
ch r e
©A
Integer m = l;
[Link](m); // affiche 3

18 / 104
Opérations sur les variables Variables numériques

Java
Pour connaı̂tre la valeur max autorisée par un type numérique
[Link](Integer.MAX_VALUE);
// affiche 2147483647

19 / 104
Opérations sur les variables Variables numériques

Java
Pour connaı̂tre la valeur max autorisée par un type numérique
[Link](Integer.MAX_VALUE);
// affiche 2147483647

La valeur min
[Link](Integer.MIN_VALUE);
// affiche -2147483648

19 / 104
Opérations sur les variables Variables numériques

Java
Pour connaı̂tre la valeur max autorisée par un type numérique
[Link](Integer.MAX_VALUE);
// affiche 2147483647

La valeur min
[Link](Integer.MIN_VALUE);
// affiche -2147483648

Le nombre d’octets
[Link]([Link]);
// affiche 32

19 / 104
Opérations sur les variables Variables textuelles

Java
Exemple d’utilisation d’une chaı̂ne de caractère

String string = new String();


string = "bonjour";
[Link](string); // affiche bonjour

20 / 104
Opérations sur les variables Variables textuelles

Java
Exemple d’utilisation d’une chaı̂ne de caractère

String string = new String();


string = "bonjour";
[Link](string); // affiche bonjour

On aussi

String string = new String("bonjour");


[Link](string); // affiche bonjour

20 / 104
Opérations sur les variables Variables textuelles

Java
Exemple d’utilisation d’une chaı̂ne de caractère

String string = new String();


string = "bonjour";
[Link](string); // affiche bonjour

On aussi

String string = new String("bonjour");


[Link](string); // affiche bonjour

Ou encore

String string = "bonjour";


[Link](string); // affiche bonjour

20 / 104
Opérations sur les variables Variables textuelles

Java
Exemple d’utilisation d’une chaı̂ne de caractère

String string = new String();


string = "bonjour";
[Link](string); // affiche bonjour

On aussi

String string = new String("bonjour");


[Link](string); // affiche bonjour

Ou encore

String string = "bonjour";


[Link](string); // affiche bonjour

Une chaı̂ne de caractère doit être située entre deux "contenu"

20 / 104
Opérations sur les variables Variables textuelles

Java

L’opérateur + pour concaténer deux chaı̂nes de caractère


String string = "bon";
String string2 = "jour";
[Link](string + string2);
// affiche bonjour

21 / 104
Opérations sur les variables Variables textuelles

Java

Quelques méthodes de la classe String

length() : retourne le nombre de caractère de la chaı̂ne.

indexOf(x) : retourne l’indice de la première occurrence de la valeur de x dans la


chaı̂ne, -1 sinon.
H I ©
contains() : retourne true si la chaı̂ne contient x, false sinon.
U EL
O
LM
charAt(i) : retourne le caractère d’indice i dans la chaı̂ne.

e f E
substring(i, j) : permet d’extraire une sous-chaı̂ne de la chaı̂ne à partir de l’indice i
r
ch
jusqu’au l’indice j - 1

©A
equals(str) : permet de comparer la chaı̂ne à str et retourne true en cas d’égalité,
false sinon.

replace(old, new) : permet de remplacer toute occurrence de la chaı̂ne old dans la


chaı̂ne courante par new et retourne la nouvelle chaı̂ne

...

22 / 104
Opérations sur les variables Variables textuelles

Java

Pour convertir une chaı̂ne de caractère en majuscule


[Link]("bonjour".toUpperCase());
// affiche BONJOUR

23 / 104
Opérations sur les variables Variables textuelles

Java

Pour convertir une chaı̂ne de caractère en majuscule


[Link]("bonjour".toUpperCase());
// affiche BONJOUR

Pour convertir un caractère en majuscule


[Link]([Link]('a'));
// affiche A

23 / 104
Opérations sur les variables Variables textuelles

Java
Exemple : replace(old, new)

String string = "bonjour les bons jours";


String string2 = [Link]("jour", "soir");
[Link](string2);
// bonsoir les bons soirs

24 / 104
Opérations sur les variables Variables textuelles

Java
Exemple : replace(old, new)

String string = "bonjour les bons jours";


String string2 = [Link]("jour", "soir");
[Link](string2);
// bonsoir les bons soirs

Exemple : indexOf(str, fromIndex)

String string = "bonjour les bons jours";


int pos = [Link]("bon", 5);
[Link](pos);
// affiche 12

24 / 104
Opérations sur les variables Variables textuelles

Java
Exemple : replace(old, new)

String string = "bonjour les bons jours";


String string2 = [Link]("jour", "soir");
[Link](string2);
// bonsoir les bons soirs

Exemple : indexOf(str, fromIndex)

String string = "bonjour les bons jours";


int pos = [Link]("bon", 5);
[Link](pos);
// affiche 12

Exemple : split(regex)

String string = "bonjour les bons jours";


[Link]([Link]([Link](" ")));
// affiche [bonjour, les, bons, jours]

24 / 104
Opérations sur les variables Variables textuelles

Java
Ne jamais comparer les String avec ==
String s1 = "Wick";
String s2 = new String("Wick");
String s3 = "Wick";
H I ©
EL
String s4 = new String("Wick");

O U
[Link](s1 == s2);
// affiche false f E LM
ch r e
©A
[Link](s1 == s3);
// affiche true

[Link](s2 == s4);
// affiche false

25 / 104
Opérations sur les variables Variables textuelles

Java

Explication

H I ©
EL
Les chaı̂nes littérales ()créées sans l’opérateur new) sont optimisées
U
dans le pool de chaı̂nes, ce qui signifie que si une chaı̂ne littérale avec
O
LM
la même valeur existe déjà, Java réutilisera la référence à cette chaı̂ne.

r e f E
ch
Les chaı̂nes créées avec l’opérateur new sont créées explicitement

©A
même si une chaı̂ne avec le même contenu existe déjà dans le pool de
chaı̂nes.

26 / 104
Opérations sur les variables Variables textuelles

Java
Exemple de conversion d’une chaı̂ne de caractère

String string = "2";


byte z = [Link](string);
[Link](z); // affiche 2

27 / 104
Opérations sur les variables Variables textuelles

Java
Exemple de conversion d’une chaı̂ne de caractère

String string = "2";


byte z = [Link](string);
[Link](z); // affiche 2

Ceci déclenche une exception (arrêt d’exécution)

String string = "a";


byte z = [Link](string);
[Link](z);

Le résultat

Exception in thread "main" [Link]: For


input string: "a"

27 / 104
Opérations sur les variables Variables textuelles

Java

Exemple de conversion de Integer en String


Integer x = 2;
String string = [Link]();
[Link](string); // affiche 2

28 / 104
Opérations sur les variables Variables textuelles

Java
Quatre méthodes pour convertir int en String
int y = 3;
String chaine =((Integer) y).toString();
[Link](chaine); // affiche 3

H I ©
int z = 4;
U EL
String str = [Link](z);
O
[Link](str); // affiche 4
f E LM
int t = 5;
ch r e
©A
String s = [Link](t);
[Link](s); // affiche 5

int u = 6;
String s = "" + u;
[Link](s); // affiche 6

29 / 104
Opérations sur les variables Variables textuelles

Java

Attention, le cast entre deux types incompatibles n’est pas


autorisé
int z = 4;
String str =(String) z;
[Link](str);

30 / 104
Opérations sur les variables Variables textuelles

Java

Autres types textuels

CharSequence : interface [en lecture seule] utilisée souvent pour typer


les paramètres d’une méthode

H I ©
StringBuilder : classe permettant de construire des chaı̂nes de
EL
OU
caractères muables (mutables) [implémente CharSequence]
M
String : classe permettantE deL
h r
immuables (mutables) e f
[impl
construire des chapines de caractères
émente CharSequence]
c
© A : classe permettant de décomposer une chaı̂ne de
StringTokenizer
caractère en tokens selon le·s séparateur·s choisi·s (plus rapide que
[Link]()) [n’implémente pas CharSequence]

...

31 / 104
Opérations sur les variables Variables textuelles

Java
StringBuilder vs String
StringBuilder chars = new StringBuilder("Wick");
[Link]([Link](chars));
// affiche 1510467688

[Link]("y");
H I ©
EL
[Link]([Link](chars));
// affiche 1510467688
O U
String string = "Wick";
f E LM
r e
[Link]([Link](string));
ch
©A
// affiche 1995265320

string += "y";
[Link]([Link](string));
// affiche 746292446

[Link]([Link](chars));
// affiche false

32 / 104
Classe Math

Java

On peut aussi utiliser les méthodes statiques de la classe Math


[Link](x) : retourne la valeur absolue de x
[Link](x, y) : retourne la x puissance y
H I ©
[Link](x, y) : retourne le max de x et y
U EL
O
f E LM
[Link](x, y) : retourne le min de x et y

ch r e
[Link](x) : retourne la racine carré de x

©A
[Link](x), [Link](x) et [Link](x) :
retournent l’arrondi de x
[Link]() : retourne une valeur aléatoire entre 0 et 1
...

33 / 104
Classe Math

Java

Exemple avec [Link](x), [Link](x) et [Link](x)


[Link]([Link](1.9)); // affiche 2
H I ©
[Link]([Link](1.5)); // affiche 2
EL
[Link]([Link](1.4)); // affiche 1
U
O
[Link]([Link](1.9)); // affiche 2

f E LM
[Link]([Link](1.5)); // affiche 2

r e
[Link]([Link](1.4)); // affiche 2
ch
©A
[Link]([Link](1.9)); // affiche 1
[Link]([Link](1.5)); // affiche 1
[Link]([Link](1.4)); // affiche 1

34 / 104
Classe Math

Java

Depuis Java 1.5, on peut importer statiquement la classe

import static [Link].*;

35 / 104
Classe Math

Java

Depuis Java 1.5, on peut importer statiquement la classe

import static [Link].*;

Et ensuite

[Link](round(1.9)); // affiche 2
[Link](round(1.5)); // affiche 2
[Link](round(1.4)); // affiche 1
[Link](ceil(1.9)); // affiche 2
[Link](ceil(1.5)); // affiche 2
[Link](ceil(1.4)); // affiche 2
[Link](floor(1.9)); // affiche 1
[Link](floor(1.5)); // affiche 1
[Link](floor(1.4)); // affiche 1

35 / 104
Lecture d’une saisie

Java

Pour lire une valeur saisie par l’utilisateur dans la console


il faut utiliser la classe Scanner
il faut préciser le type de la valeur à récupérer

36 / 104
Lecture d’une saisie

Java
Instancier la classe Scanner
Scanner scanner = new Scanner([Link]);

37 / 104
Lecture d’une saisie

Java
Instancier la classe Scanner
Scanner scanner = new Scanner([Link]);

La classe Scanner est signalée en rouge, il faut l’importer


import [Link];

37 / 104
Lecture d’une saisie

Java
Instancier la classe Scanner
Scanner scanner = new Scanner([Link]);

La classe Scanner est signalée en rouge, il faut l’importer


import [Link];

Exemple de lecture d’un entier


int i = [Link]();

37 / 104
Lecture d’une saisie

Java
Instancier la classe Scanner
Scanner scanner = new Scanner([Link]);

La classe Scanner est signalée en rouge, il faut l’importer


import [Link];

Exemple de lecture d’un entier


int i = [Link]();

Fermer le scanner
[Link]();

37 / 104
Lecture d’une saisie

Java

Remarques
H I ©
EL
Pour lire une chaı̂ne de caractère, il faut utiliser la méthode
U
next() ou nextLine() O
f E LM
Pour lire un nombre réel, il faut utiliser la méthode nextFloat()
ch r e
...
©A

38 / 104
Lecture d’une saisie

Java
Exemple avec next()
Scanner scanner = new Scanner([Link]);
// si on saisit "bonjour tout le monde"
String string = [Link]();
[Link](string);
// affiche bonjour

39 / 104
Lecture d’une saisie

Java
Exemple avec next()
Scanner scanner = new Scanner([Link]);
// si on saisit "bonjour tout le monde"
String string = [Link]();
[Link](string);
// affiche bonjour

Exemple avec nextLine()


Scanner scanner = new Scanner([Link]);
// si on saisit "bonjour tout le monde"
String string = [Link]();
[Link](string);
// affiche bonjour tout le monde

39 / 104
Lecture d’une saisie

Java

À chaque appel à next(), on récupère le token suivant

Scanner scanner = new Scanner([Link]);


// si on saisit "bonjour tout le monde"
String string = [Link]();
String s = [Link]();
[Link](s);
// affiche tout

40 / 104
Lecture d’une saisie

Java

À chaque appel à next(), on récupère le token suivant

Scanner scanner = new Scanner([Link]);


// si on saisit "bonjour tout le monde"
String string = [Link]();
String s = [Link]();
[Link](s);
// affiche tout

Le code suivant déclenche une exception car on ne peut affecter la chaı̂ne "tout" à un
entier

Scanner scanner = new Scanner([Link]);


// si on saisit "bonjour tout le monde"
String string = [Link]();
int v = [Link]();
[Link](v);

40 / 104
Lecture d’une saisie

Java

Il n’existe pas une méthode spécifiques aux caractères, mais on


peut faire
Scanner scanner = new Scanner([Link]);
String string = [Link]();
char c = [Link]().charAt(0);
[Link](c);

41 / 104
Structures conditionnelles if

Java
Exécuter si une condition est vraie
if (condition) {
...
}

42 / 104
Structures conditionnelles if

Java
Exécuter si une condition est vraie
if (condition) {
...
}

Exemple
var x = 3;
if (x >= 0) {
[Link](x + " est positif");
}

42 / 104
Structures conditionnelles if

Java
Exécuter si une condition est vraie
if (condition) {
...
}

Exemple
var x = 3;
if (x >= 0) {
[Link](x + " est positif");
}

Pour les conditions, on utilise les opérateurs de comparaison

42 / 104
Structures conditionnelles if

Java

Opérateurs de comparaison

== : pour tester l’égalité


!= : pour tester l’inégalité
H I ©
> : supérieur à
UEL
O
< : inférieur à
f E LM
ch r e
>= : supérieur ou égal à

©A
<= : inférieur ou égal à

43 / 104
Structures conditionnelles if

Java

Opérateurs de comparaison

== : pour tester l’égalité


!= : pour tester l’inégalité
H I ©
> : supérieur à
UEL
O
< : inférieur à
f E LM
ch r e
>= : supérieur ou égal à

©A
<= : inférieur ou égal à

En Java, on ne peut comparer deux valeurs de type incompatible.

43 / 104
Structures conditionnelles if

Java

Exercice

Écrire un code Java qui demande à l’utilisateur de saisir un entier


positif et qui affiche ensuite sa parité (sans else).

44 / 104
Structures conditionnelles if ... else

Java
Exécuter un premier bloc si une condition est vraie, un deuxième sinon (le bloc else)

if (condition1) {
...
}
else {
...
}

45 / 104
Structures conditionnelles if ... else

Java
Exécuter un premier bloc si une condition est vraie, un deuxième sinon (le bloc else)

if (condition1) {
...
}
else {
...
}

Exemple

var x = 3;
if (x > 0)
{
[Link](x + " est strictement positif");
}
else
{
[Link](x + " est négatif ou nul");
}

45 / 104
Structures conditionnelles if ... else

Java

Exercice

Écrire un programme Java qui permet de déterminer si une chaı̂ne de


caractères saisie par l’utilisateur contient un nombre pair ou impair de
caractères.

46 / 104
Structures conditionnelles if ... else if ... else

Java
On peut enchaı̂ner les conditions avec else if (et avoir un
troisième bloc voire ... un nième)
if (condition1)
{
...
H I ©
}
U EL
else if (condition2) O
{
f E LM
...
ch r e
}
... ©A
else
{
...
}

47 / 104
Structures conditionnelles if ... else if ... else

Java

Exemple
var x = -3;
if (x > 0)
{
H I ©
EL
[Link](x + " est strictement positif");
}
O U
LM
else if (x < 0)
{
r e f E
[Link](x + " est strictement négatif");
ch
©A
}
else
{
[Link](x + " est nul");
}

48 / 104
Structures conditionnelles if ... else if ... else

Java

Exercice 1

Écrire un code Java qui H I ©


U EL
O
demande à l’utilisateur de saisir deux entiers a et b et un
E LM
caractère op (pouvant avoir comme valeurs +, -, * ou /)
f
r e
chde l’application de op sur a et b. Par exemple, si
affiche le résultat
a = 5,© b =A 2 et op = * alors le résultat est 10.

49 / 104
Structures conditionnelles if ... else if ... else

Java

Exercice 2
H I ©
Écrire un code Java qui
U EL
M O
f E L trois entiers a, b et c
demande à l’utilisateur de saisir
affiche le résultath
c derel’équation ax + bx + c = 0.
2

©A

50 / 104
Structures conditionnelles if ... else if ... else

Java
Opérateurs logiques

&& : et

|| : ou

! : non

ˆ : ou exclusif

51 / 104
Structures conditionnelles if ... else if ... else

Java
Opérateurs logiques

&& : et

|| : ou

! : non

ˆ : ou exclusif

Tester plusieurs conditions (en utilisant des opérateurs logiques)


if (condition1 && !condition2 || condition3){
...
}
[else ...]

51 / 104
Structures conditionnelles if ... else if ... else

Java

Exercice 1

H I ©
Écrire un code Java qui
U EL
O
f E LM
demande à l’utilisateur de saisir une année (un entier),

r e
affiche si l’année saisie est bissextile (voir
ch
A
[Link]
©
).

52 / 104
Structures conditionnelles if ... else if ... else

Java

Exercice 2

Écrire un code Java qui

demande à l’utilisateur de saisir deux entiers a et b différents de zéro,

affiche le signe du résultat de la multiplication sans calculer le produit.

53 / 104
Structures conditionnelles if ... else if ... else

Java

Exercice 3
H I ©
Écrire un code Java qui
U EL
O
f E LM
demande à l’utilisateur de saisir deux entiers a et b,

ch r e
détermine et affiche si le résultat de l’addition (sans calculer la

©A
somme) est pair ou impair.

54 / 104
Structures conditionnelles switch

Java
Structure conditionnelle switch : syntaxe
switch (nomVariable) {
case constante-1:
groupe-instructions-1;
break;
H I ©
case constante-2:
UEL
groupe-instructions-2;
O
break;
f E LM
...
case constante-N:
ch r e
©A
groupe-instructions-N;
break;
default:
groupe-instructions-par-défaut;
}

55 / 104
Structures conditionnelles switch

Java

Remarques

Le switch permet seulement de tester l’égalité


H I ©
Le break permet de quitter le switch une
U L un bloc case
Efois
exécuté
L MO
r e f Eplusieurs case
Il est possible de regrouper
Le bloc © Achest facultatif, il sera exécuté si la valeur de la
default
variable ne correspond à aucune constante de case

56 / 104
Structures conditionnelles switch

Java
Structure conditionnelle avec switch
int x = 5;
switch (x) {
case 1:
[Link]("un");
H I ©
break;
UEL
case 2:
O
[Link]("deux");
f E LM
break;
case 3:
ch r e
©A
[Link]("trois");
break;
default:
[Link]("autre");
}

57 / 104
Structures conditionnelles switch

Java

La variable dans switch peut être

H I ©
de types simples : int, short, byte et char
UEL
O
LM
de type wrappers correspondants : Integer, Short, Byte et Character

e f E
de type énumération depuis Java 6
r
dec
de type chaı̂neA
h
caractère depuis Java 7
©

58 / 104
Structures conditionnelles switch

Java
Si on supprime un break
String x = "2";
switch (x) {
case "1":
[Link]("un");
H I ©
break;
UEL
case "2": O
E
[Link]("deux");
f LM
case "3":
ch r e
©A
[Link]("trois");
break;
default:
[Link]("autre");
}
// affiche deux trois

59 / 104
Structures conditionnelles switch

Java
Un multi-case pour un seul traitement [Java 7]
var x = 5;
switch (x) {
case 1:
case 2:
[Link]("un ou deux");
H I ©
break;
UEL
case 3: O
E
[Link]("trois");
f LM
break;
ch r e
©A
case 4:
case 5:
[Link]("quatre ou cinq");
break;
default:
[Link]("autre");
}

60 / 104
Structures conditionnelles switch

Java
Un multi-case simplifié [depuis Java 14]
var x = 5;
switch (x) {
case 1, 2:
[Link]("un ou deux");
H I ©
break;
UEL
case 3:
O
[Link]("trois");
f E LM
break;
case 4, 5:
ch r e
©A
[Link]("quatre ou cinq");
break;
default:
[Link]("autre");
}

61 / 104
Structures conditionnelles switch

Java

On peut simplifier l’écriture encore plus avec une expression lambda


(->) [depuis Java 14]

H I ©
EL
var x = 5;
switch (x) {
O U
LM
case 1, 2 -> [Link]("un ou deux");

r e E
case 3 -> [Link]("trois");
f
case 4, 5 -> [Link]("quatre ou cinq");
ch
©A
default -> [Link]("autre");
}

62 / 104
Structures conditionnelles switch

Java

Si on a plusieurs instructions, on ajoute { } [Java 14]

var x = 5;
switch (x) {
case 1, 2 -> {
H I ©
EL
[Link]("un ou");
[Link]("deux");
O U
LM
}

case 4, 5 -> {
r e E
case 3 -> [Link]("trois");
f
ch
[Link]("quatre ou");

} ©A
[Link]("cinq");

default -> [Link]("autre");


}

63 / 104
Structures conditionnelles switch

Java
switch peut retourner une valeur [depuis Java 14]
var x = 5;
String result = switch (x) {
case 1, 2 -> {
var tmp = "un ou deux";
H I ©
yield tmp;
UEL
}
O
case 3 -> "trois";
f E LM
case 4, 5 -> {
ch r e
var tmp = "quatre ou cinq";

}
©A
yield tmp;

default -> "autre";


};
[Link](result);

64 / 104
Structures conditionnelles switch

Java

Remarques

Les case d’un même switch peuvent retourner des valeurs ayant un
type différent.

65 / 104
Structures conditionnelles switch

Java

Exercice

Écrire un programme qui demande à l’utilisateur de saisir l’indice d’un mois (entier
compris entre 1 et 12) et qui retourne le nombre de jours de ce mois
H I ©
U
si l’entier est égal à 1, 3, 5, 7, 8, 10 ou 12 le programmeELaffiche 31
11M
O
E
sinon si l’entier est égal à 4, 6, 9 ou
f L le programme affiche 30

r e
ch29 si l’annprogramme
sinon si l’entier est égal à 2, le demande à l’utilisateur de saisir

© A
l’année et lui retourne ée est bissextile, 28 sinon (voir
[Link] )

pour toute autre valeur, le programme affiche une erreur

66 / 104
Structures conditionnelles Expression ternaire

Java

Simplifions l’écriture avec l’expression ternaire


int x = 2;
String type = (x % 2 == 0) ? "pair" : "impair";
[Link](type); // affiche pair

67 / 104
Structures conditionnelles Expression ternaire

Java

Simplifions l’écriture avec l’expression ternaire


int x = 2;
String type = (x % 2 == 0) ? "pair" : "impair";
[Link](type); // affiche pair

En Java, les deux dernières parties d’une expression ternaire


peuvent retourner deux types différents
int x = 2;
var type = (x % 2 == 0) ? true : "impair";
[Link](type); // affiche true

67 / 104
Structures itératives while

Java

Boucle while : à chaque itération on teste si la condition est


vraie avant d’accéder aux traitements
while (condition[s]) {
...
}

68 / 104
Structures itératives while

Java

Boucle while : à chaque itération on teste si la condition est


vraie avant d’accéder aux traitements
while (condition[s]) {
...
}

Attention aux boucles infinies, vérifier que la condition d’arrêt sera bien
atteinte après un certain nombre d’itérations.

68 / 104
Structures itératives while

Java
Exemple
var i = 0;
while (i < 5) {
[Link](i);
i++;
}

69 / 104
Structures itératives while

Java
Exemple
var i = 0;
while (i < 5) {
[Link](i);
i++;
}

Le résultat est
0
1
2
3
4

69 / 104
Structures itératives while

Java

Exercice 1

Écrire un programme qui permet d’afficher les nombres pairs inférieurs


à 10.

70 / 104
Structures itératives while

Java

Exercice 2

Écrire un code programme qui

demande à l’utilisateur de saisir deux entiers a et b (avec a < b),

afficher les nombres pairs compris entre a et b.

71 / 104
Structures itératives while

Java

Exercice 3

Écrire un programme qui demande à l’utilisateur de saisir un entier


positif n et qui calcule puis affiche la somme de tous les entiers positifs
inférieurs à n.

72 / 104
Structures itératives do ... while

Java

La Boucle do ... while exécute le bloc au moins une fois ensuite


elle vérifie la condition
do {
...
}
while (condition[s]);

73 / 104
Structures itératives do ... while

Java

La Boucle do ... while exécute le bloc au moins une fois ensuite


elle vérifie la condition
do {
...
}
while (condition[s]);

Attention aux boucles infinies, vérifier que la condition d’arrêt sera bien
atteinte après un certain nombre d’itérations.

73 / 104
Structures itératives do ... while

Java
Exemple
var i = 0;
do {
[Link](i);
i++;
} while (i < 5);

74 / 104
Structures itératives do ... while

Java
Exemple
var i = 0;
do {
[Link](i);
i++;
} while (i < 5);

Le résultat est
0
1
2
3
4

74 / 104
Structures itératives do ... while

Java

Exercice

Écrire un programme qui demande en boucle à l’utilisateur de saisir un


entier jusqu’à l’obtention de 0 puis affiche la somme de tous ces
entiers saisis.

75 / 104
Structures itératives for

Java

Boucle for
for (initialisation; condition[s]; incrémentation) {
...
}

76 / 104
Structures itératives for

Java

Boucle for
for (initialisation; condition[s]; incrémentation) {
...
}

Attention aux boucles infinies si vous modifiez la valeur du compteur à


l’intérieur de la boucle.

76 / 104
Structures itératives for

Java

Exemple
for (var i = 0; i < 5; i++) {
[Link](i);
}

77 / 104
Structures itératives for

Java

Exemple
for (var i = 0; i < 5; i++) {
[Link](i);
}

Le résultat est
0
1
2
3
4

77 / 104
Structures itératives for

Java

Exercice 1

Écrire un programme qui permet d’afficher les nombres pairs compris


entre 0 et 10.

78 / 104
Structures itératives for

Java

Première solution
for (var i = 0; i < 10; i++) {
if (i % 2 == 0) {
[Link](i);
}
}

79 / 104
Structures itératives for

Java

Première solution
for (var i = 0; i < 10; i++) {
if (i % 2 == 0) {
[Link](i);
}
}

Deuxième solution
for (var i = 0; i < 10; i += 2) {
[Link](i);
}

79 / 104
Structures itératives for

Java

Étant donnée la chaı̂ne de caractères suivante


String maChaine = "Une première phrase. Et voici une
deuxième.";

80 / 104
Structures itératives for

Java

Étant donnée la chaı̂ne de caractères suivante


String maChaine = "Une première phrase. Et voici une
deuxième.";

Exercice 2

Écrire un programme qui permet de compter le nombre de mots et de


phrases dans maChaine.

80 / 104
Structures itératives for

Java

Exercice 3

Écrire un programme qui demande à l’utilisateur de saisir deux entiers


positifs et qui calcule puis affiche leur plus grand diviseur commun.

81 / 104
Tableaux Tableaux à une dimension

Java

En Java, les tableaux sont statiques

Tous les éléments doivent avoir le même type


Il faut préciser une taille qu’on ne peut dépasser

82 / 104
Tableaux Tableaux à une dimension

Java

En Java, les tableaux sont statiques

Tous les éléments doivent avoir le même type


Il faut préciser une taille qu’on ne peut dépasser

Déclaration d’un tableau : syntaxe


type [] nomTableau = new type[taille];

82 / 104
Tableaux Tableaux à une dimension

Java

En Java, les tableaux sont statiques

Tous les éléments doivent avoir le même type


Il faut préciser une taille qu’on ne peut dépasser

Déclaration d’un tableau : syntaxe


type [] nomTableau = new type[taille];

Déclaration d’un tableau d’entier de taille 2 : exemple


int [] tab = new int[2];

82 / 104
Tableaux Tableaux à une dimension

Java

Affectation de valeurs aux cases de tableau


tab[0] = 5;
tab[1] = 3;

83 / 104
Tableaux Tableaux à une dimension

Java

Affectation de valeurs aux cases de tableau


tab[0] = 5;
tab[1] = 3;

Ceci déclenche une exception


tab[2] = 10;

L’exception
Exception in thread "main" [Link]: 2
at [Link]([Link])

83 / 104
Tableaux Tableaux à une dimension

On peut faire une déclaration + une initialisation


int[] tab = new int[] { 5, 3 };

84 / 104
Tableaux Tableaux à une dimension

On peut faire une déclaration + une initialisation


int[] tab = new int[] { 5, 3 };

On peut faire une déclaration + une initialisation


int [] tab = { 5, 3 };

Comme si la taille du tableau a été fixée à deux

84 / 104
Tableaux Tableaux à une dimension

On peut faire une déclaration + une initialisation


int[] tab = new int[] { 5, 3 };

On peut faire une déclaration + une initialisation


int [] tab = { 5, 3 };

Comme si la taille du tableau a été fixée à deux

Donc, ceci déclenche aussi une exception


tab[2] = 10;

L’exception
Exception in thread "main" [Link]: 2
at [Link]([Link])

84 / 104
Tableaux Tableaux à une dimension

Java

En Java, on ne peut afficher le contenu d’un tableau de la manière


suivante
[Link](tab);
// affiche [I@1c4af82c

85 / 104
Tableaux Tableaux à une dimension

Java

En Java, on ne peut afficher le contenu d’un tableau de la manière


suivante
[Link](tab);
// affiche [I@1c4af82c

Mais on peut le convertir en String et ensuite l’afficher


[Link]([Link](tab));
// affiche [5, 3]

85 / 104
Tableaux Tableaux à une dimension

Java

Pour parcourir le tableau


for (int i = 0; i < [Link]; i++){
[Link](tab[i]);
}

86 / 104
Tableaux Tableaux à une dimension

Java

Pour parcourir le tableau


for (int i = 0; i < [Link]; i++){
[Link](tab[i]);
}

Où encore la version simplifiée (foreach)


for (int elt : tab){
[Link](elt);
}

86 / 104
Tableaux Tableaux à une dimension

Java

Étant donné le tableau suivant

String [] voitures = { "peugeot", "ford", "fiat", "mercedes", "seat" };

87 / 104
Tableaux Tableaux à une dimension

Java

Étant donné le tableau suivant

String [] voitures = { "peugeot", "ford", "fiat", "mercedes", "seat" };

Exercice 1

Écrire un programme qui permet de calculer le nombre total de caractères de toutes les chaı̂nes
présentes dans le tableau voitures.

87 / 104
Tableaux Tableaux à une dimension

Java

Étant données les deux variables suivantes

String voiture = "ford";


String [] voitures = { "peugeot", "ford", "fiat", "mercedes", "seat", "
ford", "fiat", "ford" };

88 / 104
Tableaux Tableaux à une dimension

Java

Étant données les deux variables suivantes

String voiture = "ford";


String [] voitures = { "peugeot", "ford", "fiat", "mercedes", "seat", "
ford", "fiat", "ford" };

Exercice 2

Écrire un programme qui permet de calculer et afficher le nombre d’occurrence de voiture


dans voitures.

88 / 104
Tableaux Tableaux à deux dimensions

Java

Déclaration d’un tableau à deux dimensions


type[][] nomTableau = new type[nbLignes][nbColonnes];

89 / 104
Tableaux Tableaux à deux dimensions

Java

Déclaration d’un tableau à deux dimensions


type[][] nomTableau = new type[nbLignes][nbColonnes];

Exemple
int[][] tab2dim = new int[2][2];

89 / 104
Tableaux Tableaux à deux dimensions

Java
Déclaration + initialisation
int[][] tab2dim = new int[][]
{
{1, 2},
{3, 4}
};

90 / 104
Tableaux Tableaux à deux dimensions

Java
Déclaration + initialisation
int[][] tab2dim = new int[][]
{
{1, 2},
{3, 4}
};

Ou
int[][] tab2dim =
{
{1, 2},
{3, 4}
};

90 / 104
Tableaux Tableaux à deux dimensions

Java
Parcourir un tableau à deux dimensions
for (int[] ligne : tab2dim) {
for (int elt : ligne) {
[Link](elt);
}
}

91 / 104
Tableaux Tableaux à deux dimensions

Java
Parcourir un tableau à deux dimensions
for (int[] ligne : tab2dim) {
for (int elt : ligne) {
[Link](elt);
}
}

Ou
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
[Link](tab2dim[i][j]);
}
}

91 / 104
Tableaux Tableaux à deux dimensions

Étant données les variables suivantes

int valeur = 5;
int[][] matrice =
{
{ 2, 3, 5, 7 },
{ 5, 1, 5, 5 },
{ 4, 2, 9, 5 },
{ 8, 5, 6, 5 }
};

92 / 104
Tableaux Tableaux à deux dimensions

Étant données les variables suivantes

int valeur = 5;
int[][] matrice =
{
{ 2, 3, 5, 7 },
{ 5, 1, 5, 5 },
{ 4, 2, 9, 5 },
{ 8, 5, 6, 5 }
};

Exercice

Écrire un programme qui

parcourt la matrice précédente,

calcule le nombre d’occurrence de valeur dans chaque ligne de matrice,

stocke le résultat dans un tableau occurrences.

92 / 104
Tableaux Tableaux à deux dimensions

Java
Étant données les variables suivantes

int valeur = 5;
int[][] matrice =
{
{ 2, 3, 5, 7 },
{ 5, 1, 5, 5 },
{ 4, 2, 9, 5 },
{ 8, 5, 6, 5 }
};

93 / 104
Tableaux Tableaux à deux dimensions

Java
Étant données les variables suivantes

int valeur = 5;
int[][] matrice =
{
{ 2, 3, 5, 7 },
{ 5, 1, 5, 5 },
{ 4, 2, 9, 5 },
{ 8, 5, 6, 5 }
};

Exercice

Écrire un programme qui permet de déterminer si valeur est présente dans chaque
ligne de matrice.

93 / 104
Tableaux Tableaux à deux dimensions

Java

Exercice

Écrire un programme qui calcule


1 la somme de deux matrices carrées,
2 le produit de deux matrices carrées.

94 / 104
Constantes

Java

Une constante
un élément qui ne peut changer de valeur

95 / 104
Constantes

Java

Une constante
un élément qui ne peut changer de valeur

Nom de constantes en Java


Utiliser que des lettres en majuscules.
Pour les noms composés, utiliser underscore comme séparateur.

95 / 104
Constantes

Java

Pour déclarer une constante


il faut utiliser le mot-clé final

96 / 104
Constantes

Java

Pour déclarer une constante


il faut utiliser le mot-clé final

Déclaration d’une constante


final double PI = 3.1415;

96 / 104
Constantes

Java

Pour déclarer une constante


il faut utiliser le mot-clé final

Déclaration d’une constante


final double PI = 3.1415;

L’instruction suivante ne peut être acceptée


PI = 5;

96 / 104
Méthodes

Java
Une méthode

visibilité [+ static] + type de retour + nomMéthode([les paramètres]) + son


implémentation

97 / 104
Méthodes

Java
Une méthode

visibilité [+ static] + type de retour + nomMéthode([les paramètres]) + son


implémentation

Exemple de déclaration d’une méthode

public static int somme (int a, int b) {


return a + b;
}

97 / 104
Méthodes

Java
Une méthode

visibilité [+ static] + type de retour + nomMéthode([les paramètres]) + son


implémentation

Exemple de déclaration d’une méthode

public static int somme (int a, int b) {


return a + b;
}

Exemple d’appel d’une méthode

[Link](somme(2, 3));
// affiche 5

97 / 104
Méthodes

Java

Exercice

Écrire une méthode maximum2(a, b) qui retourne le maximum entre


a et b.

98 / 104
Méthodes

Java

Exercice

Écrire une méthode maximum2(a, b) qui retourne le maximum entre


a et b.

Exercice

Écrire une méthode maximum3(a, b, c) qui retourne le maximum


entre a, b et c (vous pouvez utiliser la méthode maximum2) .

98 / 104
Méthodes

Java

Exercice

Écrire une méthode qui permet de déterminer si un nombre passé en


paramètre est premier. La méthode retourne un booléen.

99 / 104
Méthodes

Java
Déclaration de méthode avec un nombre indéterminé de paramètres (varargs)
public static int somme(int... tab) {
int res = 0;
for (int elt : tab)
res += elt;
return res;
}

100 / 104
Méthodes

Java
Déclaration de méthode avec un nombre indéterminé de paramètres (varargs)
public static int somme(int... tab) {
int res = 0;
for (int elt : tab)
res += elt;
return res;
}

Exemple d’appel
[Link](somme(2));
// affiche 2
[Link](somme(2, 3));
// affiche 5
[Link](somme(2, 3, 5));
// affiche 10
[Link](somme(2, 3, 5, 9));
// affiche 19

100 / 104
Méthodes

Java

Remarques
H I ©
varargs est disponible depuis Java 5
U EL
O
f E LM
On ne peut avoir qu’un seul varargs par méthode

r e
Le paramètre varargs doit être le dernier dans la liste de
ch
©A
paramètres d’une méthode

101 / 104
Méthodes

Java

Exercice 1

Écrire une méthode qui accepte un nombre variable de paramètre de


type String et qui retourne la chaı̂ne la plus longue (ayant le plus
grand nombre de caractères).

102 / 104
Méthodes

Java

Exercice 2

Écrire une méthode qui détermine si le premier paramètre est divisible


par tous les autres paramètres. Le nombre de paramètres est variable
et la méthode retourne un booléen.

Exemple
estDivisiblePar(10, 2, 3, 5);
// false

estDivisiblePar(10, 2, 5);
// true

103 / 104
Méthodes

Java

Remarques

Comme Java supporte la surcharge de méthodes


Pas de paramètres optionnels
Pas de valeur par défaut pour les paramètres

104 / 104

Vous aimerez peut-être aussi