0% ont trouvé ce document utile (0 vote)
7 vues152 pages

Typage statique et dynamique en Java

Le document présente les fondamentaux du langage de programmation Java, en abordant des concepts tels que les variables, les opérations sur celles-ci, les structures conditionnelles et itératives, ainsi que les tableaux et les méthodes. Il explique également le typage statique et dynamique, les types primitifs, et les opérations sur les chaînes de caractères. Enfin, il met en avant des exemples pratiques pour illustrer l'utilisation de ces concepts dans le développement Java.

Transféré par

Abdel Moghit
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)
7 vues152 pages

Typage statique et dynamique en Java

Le document présente les fondamentaux du langage de programmation Java, en abordant des concepts tels que les variables, les opérations sur celles-ci, les structures conditionnelles et itératives, ainsi que les tableaux et les méthodes. Il explique également le typage statique et dynamique, les types primitifs, et les opérations sur les chaînes de caractères. Enfin, il met en avant des exemples pratiques pour illustrer l'utilisation de ces concepts dans le développement Java.

Transféré par

Abdel Moghit
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

Mohammed OUANAN
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

Mohammed OUANAN
Plan

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

7 Tableaux
Tableaux a` une dimension
Tableaux a` deux dimensions

8 Constantes

9 Méthodes

Mohammed OUANAN
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

Mohammed OUANAN 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.

Mohammed OUANAN 4 / 104


Variables

Java

Deux modes de typage en Java

Statique : type précisé àla déclaration de la variable


Dynamique : variable déclarée avec le mot-clé var ⇒ type
déterminé dynamiquement à partir de la valeur initiale. [disponible
depuis Java 11]

Mohammed OUANAN
Variables

Java
Nom de variables en Java

Utiliser le Camel Case


Premier caractère : lettre (ni ni $)

Caractère espace non autorisé

Underscore non autorisé comme nom de variable depuis Java 9


Privilégier les noms en relation avec le contexte

Ne pas choisir un 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

Mohammed OUANAN
Variables Typage statique

Java

Déclarer une variable


type nomVariable;

Mohammed OUANAN 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

Mohammed OUANAN 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)

int : entier codé sur 4 octets (entre -2 147 483 648 et 2 147 483 647)

long : entier codé sur 8 octets (entre -9 223 372 036 854 775 808 et +9 223 372 036 854
775 807)
float : nombre à virgule codé sur 4 octets

double : nombre à virgule codé sur 8 octets

boolean : soit true soit false (1 octet)

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

Mohammed OUANAN 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)

int : entier codé sur 4 octets (entre -2 147 483 648 et 2 147 483 647)

long : entier codé sur 8 octets (entre -9 223 372 036 854 775 808 et +9 223 372 036 854
775 807)
float : nombre à virgule codé sur 4 octets

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 chaines de caractère.

Mohammed OUANAN 8 / 104


Variables Typage statique

Java

Exemple
int x;

Mohammed OUANAN 9 / 104


Variables Typage statique

Java

Exemple
int x;

Déclarer et initialiser une variable


int x = 5;

Mohammed OUANAN 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;

Mohammed OUANAN 9 / 104


Variables Typage dynamique

Java

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


var nomVariable = valeurInitiale;

Mohammed OUANAN 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

Mohammed OUANAN 10 / 104


Variables Typage dynamique

Java

Exemple
var x = 10;

Mohammed OUANAN 11 / 104


Variables Typage dynamique

Java

Exemple
var x = 10;

Ceci génère une erreur


x = "bonjour";

Mohammed OUANAN 11 / 104


Opéations sur les variables Variables numériques

Java

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

= : affectation
+ : addition
- : soustraction

* : multiplication
/ : division
% : reste de la division

Mohammed OUANAN
Opérations sur les variables Variables numériques

Java

Quelques raccourcis

i = i + 1 ⇒ i++;
i = i - 1 ⇒ i--;
i = i + 2 ⇒ i += 2;
i = i - 2 ⇒ i -= 2;

...

Mohammed OUANAN
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

Mohammed OUANAN 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

Mohammed OUANAN 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

Mohammed OUANAN 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

Mohammed OUANAN 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

Integer pour int

Float pour float

Double pour double

Boolean pour boolean

Character pour char

Mohammed OUANAN 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

Integer pour int

Float pour float

Double pour double

Boolean pour boolean

Character pour char

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

Mohammed OUANAN 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


Les types objets offrent plusieurs méthodes à appliquer sur les
valeurs : conversion, nombre de caractère...
Toutes les classes wrappers contiennent une méthode
([Link](string)) qui permet de
convertir une chaine de caractère en type primitif de cette classe

Mohammed OUANAN
Opérations sur les variables Variables numériques

Java

Pas besoin de convertir d’un type simple vers son wrapper (ou
inversement)
Integer j = 2;
int k = j;
[Link](k); // affiche 2

int l = 3;
Integer m = l;
[Link](m); // affiche 3

Mohammed OUANAN
Opérations sur les variables Variables numériques

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

Mohammed OUANAN 19 / 104


Opérations sur les variables Variables numériques

Java
Pour connaitre 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

Mohammed OUANAN 19 / 104


Opérations sur les variables Variables numériques

Java
Pour connaitre 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

Mohammed OUANAN 19 / 104


Opérations sur les variables Variables textuelles

Java
Exemple d’utilisation d’une chaˆıne de caracte`re

String string = new String();


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

Mohammed OUANAN 20 / 104


Opérations sur les variables Variables textuelles

Java
Exemple d’utilisation d’une chaˆıne de caracte`re

String string = new String();


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

On a aussi

String string = new String("bonjour");


[Link](string); // affiche bonjour

Mohammed OUANAN 20 / 104


Opérations sur les variables Variables textuelles

Java
Exemple d’utilisation d’une chaine de caractère

String string = new String();


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

On a aussi

String string = new String("bonjour");


[Link](string); // affiche bonjour

Ou encore

String string = "bonjour";


[Link](string); // affiche bonjour

Mohammed OUANAN 20 / 104


Opérations sur les variables Variables textuelles

Java
Exemple d’utilisation d’une chaˆıne de caracte`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 chaine de caractère doit ere située entre deux "contenu"

Mohammed OUANAN 20 / 104


Opérations sur les variables Variables textuelles

Java

L’opérateur + pour concaténer deux chaines de caractère

String string = "bon";


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

Mohammed OUANAN
Opérations sur les variables Variables textuelles

Java
Quelques methodeś de la classe String

length() : retourne le nombre de caractère de la chaine.

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


chaˆıne, -1 sinon.

contains() : retourne true si la chaine contient x, false sinon.

charAt(i) : retourne le caractère d’indice i dans la chaine.

substring(i, j) : permet d’extraire une sous-chaine de la chaine à partir de l’indice i


jusqu’au l’indice j - 1

equals(str) : permet de comparer la chaine à str et retourne true en cas d’égalité,


false sinon.

replace(old, new) : permet de remplacer toute occurrence de la chaine old dans la


chaine courante par new et retourne la nouvelle chaine

...

Mohammed OUANAN
Opérations sur les variables Variables textuelles

Java

Pour convertir une chaine de caractère en majuscule


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

Mohammed OUANAN 23 / 104


Opérations sur les variables Variables textuelles

Java

Pour convertir une chaine de caractère en majuscule


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

Pour convertir un caractère en majuscule


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

Mohammed OUANAN 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

Mohammed OUANAN 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

Mohammed OUANAN 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]

Mohammed OUANAN 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";
String s4 = new String("Wick");

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

[Link](s1 == s3);
// affiche true

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

Mohammed OUANAN
Opérations sur les variables Variables textuelles

Java

Explication

Les chaines littérales (créées sans l’opérateur new) sont optimisées


dans le pool de chaines, ce qui signifie que si une chaine littérale avec la
même valeur existe déjà, Java réutilisera la référence à cette chaine.

Les chaines créées avec l’opérateur new sont créées explicitement


même si une chaine avec le même contenu existe déjà dans le pool de
chaines.

Mohammed OUANAN
Opérations sur les variables Variables textuelles

Java
Exemple de conversion d’une chaine de caractère
String string = "2";
byte z = [Link](string);
[Link](z); // affiche 2

Mohammed OUANAN 27 / 104


Opérations sur les variables Variables textuelles

Java
Exemple de conversion d’une chaine 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"

Mohammed OUANAN 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

Mohammed OUANAN
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

int z = 4;
String str = [Link](z);
[Link](str); // affiche 4

int t = 5;
String s = [Link](t);
[Link](s); // affiche 5

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

Mohammed OUANAN
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);

Mohammed OUANAN
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

StringBuilder : classe permettant de construire des chaines de


caractères muables (mutables) [implémente CharSequence]

String : classe permettant de construire des chaines de caractères


immuables (mutables) [implémente CharSequence]

StringTokenizer : classe permettant de décomposer une chaine de


caractère en tokens selon les séparateurs choisis (plus rapide que
[Link]()) [n’implémente pas CharSequence]

...

Mohammed OUANAN
Opérations sur les variables Variables textuelles

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

[Link]("y");
[Link]([Link](chars));
// affiche 1510467688

String string = "Wick";


[Link]([Link](string));
// affiche 1995265320

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

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

Mohammed OUANAN
Classe Math

Java
On peut aussi utiliser les methodeś statiques de la classe Math

[Link](x) : retourne la valeur absolue de x


[Link](x, y) : retourne la x puissance y
[Link](x, y) : retourne le max de x et y
[Link](x, y) : retourne le min de x et y
[Link](x) : retourne la racine carre´ de x

[Link](x), [Link](x) et [Link](x) :


retournent l’arrondi de x
[Link]() : retourne une valeur aléatoire entre 0 et 1
...
Mohammed OUANAN
Classe Math

Java

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


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

Mohammed OUANAN
Classe Math

Java

Depuis Java 1.5, on peut importer statiquement la classe


import static [Link].*;

Mohammed OUANAN 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

Mohammed OUANAN 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 a` ré cupérer

Mohammed OUANAN
Lecture d’une saisie

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

Mohammed OUANAN 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];

Mohammed OUANAN 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]();

Mohammed OUANAN 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]();

Mohammed OUANAN 37 / 104


Lecture d’une saisie

Java

Remarques

Pour lire une chaine de caractère, il faut utiliser la méthode


next() ou nextLine()
Pour lire un nombre réel, il faut utiliser la méthode nextFloat()
...

Mohammed OUANAN
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

Mohammed OUANAN 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

Mohammed OUANAN 39 / 104


Lecture d’une saisie

Java

A` 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

Mohammed OUANAN 40 / 104


Lecture d’une saisie

Java

A` 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 chaine "tout" à un
entier

Scanner scanner = new Scanner([Link]);


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

Mohammed OUANAN 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);

Mohammed OUANAN
Structures conditionnelles if

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

Mohammed OUANAN 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");
}

Mohammed OUANAN 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

Mohammed OUANAN 42 / 104


Structures conditionnelles if

Java
Opérateurs de comparaison

== : pour tester l’é galité


!= : pour tester l’inégalité
> : supérieur à
< : inférieur à
>= : supérieur ou égal à
<= : inférieur ou égal à

Mohammed OUANAN 43 / 104


Structures conditionnelles if

Java
Opérateurs de comparaison

== : pour tester l’é galité


!= : pour tester l’inégalité
> : supérieur à
< : inférieur à
>= : supérieur ou égal à
<= : inférieur ou égal à

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

Mohammed OUANAN 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).

Mohammed OUANAN
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 {
...
}

Mohammed OUANAN 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´egatif ou nul");
}

Mohammed OUANAN 45 / 104


Structures conditionnelles if ... else

Java

Exercice

É crire un programme Java qui permet de déterminer si une chaine de


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

Mohammed OUANAN
Structures conditionnelles if ... else if ... else

Java
On peut enchainer les conditions avec else if (et avoir un
troisième bloc voire ... un nième)
if (condition1)
{
...
}
else if (condition2)
{
...
}
...
else
{
...
}

Mohammed OUANAN
Structures conditionnelles if ... else if ... else

Java

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

Mohammed OUANAN
Structures conditionnelles if ... else if ... else

Java

Exercice 1

Écrire un code Java qui


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

Mohammed OUANAN
Structures conditionnelles if ... else if ... else

Java

Exercice 2

Écrire un code Java qui


demande à l’utilisateur de saisir trois entiers a, b et c
affiche le résultat de l’équation ax2 + bx + c = 0.

Mohammed OUANAN
Structures conditionnelles if ... else if ... else

Java
Opérateurs logiques

&& : et

|| : ou

! : non

ˆ : ou exclusif

Mohammed OUANAN 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 ...]

Mohammed OUANAN 51 / 104


Structures conditionnelles if ... else if ... else

Java

Exercice 1

Écrire un code Java qui


demande à l’utilisateur de saisir une année (un entier),
affiche si l’année saisie est bissextile (voir
[Link]

Mohammed OUANAN
Structures conditionnelles if ... else if ... else

Java

Exercice 2

E´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.

Mohammed OUANAN
Structures conditionnelles if ... else if ... else

Java

Exercice 3

Écrire un code Java qui


demande à l’utilisateur de saisir deux entiers a et b,
détermine et affiche si le résultat de l’addition (sans calculer la
somme) est pair ou impair.

Mohammed OUANAN
Structures conditionnelles switch

Java
Structure conditionnelle switch : syntaxe
switch (nomVariable) {
case constante-1:
groupe-instructions-1;
break;
case constante-2:
groupe-instructions-2;
break;
...
case constante-N:
groupe-instructions-N;
break;
default:
groupe-instructions-par-défaut;
}

Mohammed OUANAN
Structures conditionnelles switch

Java

Remarques

Le switch permet seulement de tester l’é galité


Le break permet de quitter le switch une fois un bloc case
exé cuté
Il est possible de regrouper plusieurs case
Le bloc default est facultatif, il sera exécuté si la valeur de la
variable ne correspond a` aucune constante de case

Mohammed OUANAN
Structures conditionnelles switch

Java
Structure conditionnelle avec switch
int x = 5;
switch (x) {
case 1:
[Link]("un");
break;
case 2:
[Link]("deux");
break;
case 3:
[Link]("trois");
break;
default:
[Link]("autre");
}

Mohammed OUANAN
Structures conditionnelles switch

Java

La variable dans switch peut être

de types simples : int, short, byte et char

de type wrappers correspondants : Integer, Short, Byte et Character

de type énumération depuis Java 6

de type chaˆıne de caractère depuis Java 7

Mohammed OUANAN
Structures conditionnelles switch

Java
Si on supprime un break
String x = "2";
switch (x) {
case "1":
[Link]("un");
break;
case "2":
[Link]("deux");
case "3":
[Link]("trois");
break;
default:
[Link]("autre");
}
// affiche deux trois

Mohammed OUANAN
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");
break;
case 3:
[Link]("trois");
break;
case 4:
case 5:
[Link]("quatre ou cinq");
break;
default:
[Link]("autre");
}

Mohammed OUANAN 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");
break;
case 3:
[Link]("trois");
break;
case 4, 5:
[Link]("quatre ou cinq");
break;
default:
[Link]("autre");
}

Mohammed OUANAN
Structures conditionnelles switch

Java

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


(->) [depuis Java 14]
var x = 5;
switch (x) {
case 1, 2 -> [Link]("un ou deux");
case 3 -> [Link]("trois");
case 4, 5 -> [Link]("quatre ou cinq");
default -> [Link]("autre");
}

Mohammed OUANAN
Structures conditionnelles switch

Java

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


var x = 5;
switch (x) {
case 1, 2 -> {
[Link]("un ou");
[Link]("deux");
}
case 3 -> [Link]("trois");
case 4, 5 -> {
[Link]("quatre ou");
[Link]("cinq");
}
default -> [Link]("autre");
}

Mohammed OUANAN
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";
yield tmp;
}
case 3 -> "trois";
case 4, 5 -> {
var tmp = "quatre ou cinq";
yield tmp;
}
default -> "autre";
};
[Link](result);

Mohammed OUANAN
Structures conditionnelles switch

Java

Remarques

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

Mohammed OUANAN
Structures conditionnelles switch

Java

Exercice

E´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

si l’entier est égal a` 1, 3, 5, 7, 8, 10 ou 12 le programme affiche 31

sinon si l’entier est égal à 4, 6, 9 ou 11 le programme affiche 30

sinon si l’entier est égal à 2, le programme demande à l’utilisateur de saisir


l’année et lui retourne 29 si l’année est bissextile, 28 sinon (voir
[Link]

pour toute autre valeur, le programme affiche une erreur

Mohammed OUANAN
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

Mohammed OUANAN 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

Mohammed OUANAN 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]) {
...
}

Mohammed OUANAN 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.

Mohammed OUANAN 68 / 104


Structures itératives while

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

Mohammed OUANAN 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

Mohammed OUANAN 69 / 104


Structures itératives while

Java

Exercice 1

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


a` 10.

Mohammed OUANAN
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.

Mohammed OUANAN
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 a` n.

Mohammed OUANAN
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]);

Mohammed OUANAN 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.

Mohammed OUANAN 73 / 104


Structures itératives do ... while

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

Mohammed OUANAN 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

Mohammed OUANAN 74 / 104


Structures itératives do ... while

Java

Exercice

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


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

Mohammed OUANAN
Structures itératives for

Java

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

Mohammed OUANAN 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.

Mohammed OUANAN 76 / 104


Structures itératives for

Java

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

Mohammed OUANAN 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

Mohammed OUANAN 77 / 104


Structures itératives for

Java

Exercice 1

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


entre 0 et 10.

Mohammed OUANAN
Structures itératives for

Java

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

Mohammed OUANAN 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);
}

Mohammed OUANAN 79 / 104


Structures itératives for

Java

Étant donnée la chaine de caractères suivante


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

Mohammed OUANAN 80 / 104


Structures itératives for

Java

Étant donnée la chaine 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.

Mohammed OUANAN 80 / 104


Structures itératives for

Java

Exercice 3

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


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

Mohammed OUANAN
Tableaux Tableaux a` 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

Mohammed OUANAN 82 / 104


Tableaux Tableaux a` 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];

Mohammed OUANAN 82 / 104


Tableaux Tableaux a` 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];

Mohammed OUANAN 82 / 104


Tableaux Tableaux a` une dimension

Java

Affectation de valeurs aux cases de tableau


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

Mohammed OUANAN 83 / 104


Tableaux Tableaux a` 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])

Mohammed OUANAN 83 / 104


Tableaux Tableaux a` une dimension

On peut faire une de´claration + une initialisation


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

Mohammed OUANAN 84 / 104


Tableaux Tableaux a` une dimension

On peut faire une de´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 e à deux

Mohammed OUANAN 84 / 104


Tableaux Tableaux a` une dimension

On peut faire une de´claration + une initialisation


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

On peut faire une de´claration + une initialisation


int [] tab = { 5, 3 };

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

Donc, ceci déclenche aussi une exception


tab[2] = 10;

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

Mohammed OUANAN 84 / 104


Tableaux Tableaux a` une dimension

Java

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


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

Mohammed OUANAN 85 / 104


Tableaux Tableaux a` 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]

Mohammed OUANAN 85 / 104


Tableaux Tableaux a` une dimension

Java

Pour parcourir le tableau


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

Mohammed OUANAN 86 / 104


Tableaux Tableaux a` 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);
}

Mohammed OUANAN 86 / 104


Tableaux Tableaux a` deux dimensions

Java

Déclaration d’un tableau à deux dimensions


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

Mohammed OUANAN 89 / 104


Tableaux Tableaux a` deux dimensions

Java

Déclaration d’un tableau à deux dimensions


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

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

Mohammed OUANAN 89 / 104


Tableaux Tableaux a` deux dimensions

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

Mohammed OUANAN 90 / 104


Tableaux Tableaux a` deux dimensions

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

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

Mohammed OUANAN 90 / 104


Tableaux Tableaux a` deux dimensions

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

Mohammed OUANAN 91 / 104


Tableaux Tableaux a` 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]);
}
}

Mohammed OUANAN 91 / 104


Tableaux Tableaux a` deux dimensions

E´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 }
};

Mohammed OUANAN 92 / 104


Tableaux Tableaux a` deux dimensions

E´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

E´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.

Mohammed OUANAN 92 / 104


Tableaux Tableaux a` deux dimensions

Java
E´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 }
};

Mohammed OUANAN 93 / 104


Tableaux Tableaux a` deux dimensions

Java
E´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

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

Mohammed OUANAN 93 / 104


Tableaux Tableaux a` 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.

Mohammed OUANAN
Constantes

Java

Une constante

un élément qui ne peut changer de valeur

Mohammed OUANAN 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.

Mohammed OUANAN 95 / 104


Constantes

Java
Pour declareŕ une constante

il faut utiliser le mot-clé final

Mohammed OUANAN 96 / 104


Constantes

Java
Pour declareŕ une constante

il faut utiliser le mot-clé final

Déclaration d’une constante


final double PI = 3.1415;

Mohammed OUANAN 96 / 104


Constantes

Java
Pour declarérune 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;

Mohammed OUANAN 96 / 104


Méthodes

Java
Une methodé

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


implémentation

Mohammed OUANAN 97 / 104


Méthodes

Java
Une methodé

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;
}

Mohammed OUANAN 97 / 104


Méthodes

Java
Une methodé

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

Mohammed OUANAN 97 / 104


Surchargedes
Surcharge des méthodes
méthodes

♦ Les critères de surcharge des méthodes sont:


. Les noms doivent être les mêmes
. Le nombre d’arguments doit être différent, sinon au moins dans
l’ordre un argument doit être d’un type de donnée différent
. Le type de retour ne doit pas être nécessairement différent

Vous aimerez peut-être aussi