achref el mouelhi - lis-lab.fr · java 7 (sortie en 2011, nommee´ dolphin) : stringdans switch...

148
Java : introduction Achref El Mouelhi Docteur de l’universit ´ e d’Aix-Marseille Chercheur en programmation par contrainte (IA) Ing ´ enieur en g ´ enie logiciel [email protected] H & H: Research and Training 1 / 90

Upload: others

Post on 17-Jul-2020

10 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

Java : introduction

Achref El Mouelhi

Docteur de l’universite d’Aix-MarseilleChercheur en programmation par contrainte (IA)

Ingenieur en genie logiciel

[email protected]

H & H: Research and Training 1 / 90

Page 2: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

Plan

1 Introduction

2 Avant de commencer

3 Un premier projet Java

4 Les variablesTypage statiqueTypage dynamique

5 Les operations sur les variables

6 La lecture d’une saisie

H & H: Research and Training 2 / 90

Page 3: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

Plan

7 Les conditions et les bouclesifif ... elseif ... else if ... elseswitchExpression ternairewhiledo ... whilefor

8 Les tableaux

9 Les constantes

10 Les methodes

H & H: Research and Training 3 / 90

Page 4: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

Java

Java?

langage de programmation

oriente objet

fortement type

presente officiellement en 1995 par Sun Microsystems (rachatpar Oracle Corporation le 20 avril 2009)

syntaxe tres proche du C (procedural) et C++ (procedural, orienteobjet)

AttentionJava 6= JavaScript

H & H: Research and Training 4 / 90

Page 5: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

Java

Java?

langage de programmation

oriente objet

fortement type

presente officiellement en 1995 par Sun Microsystems (rachatpar Oracle Corporation le 20 avril 2009)

syntaxe tres proche du C (procedural) et C++ (procedural, orienteobjet)

AttentionJava 6= JavaScript

H & H: Research and Training 4 / 90

Page 6: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

Java, pourquoi ?

Langage de haut niveau (pas de gestion de memoire, pas d’allocationdynamique, pas de pointeur... comme en C et C++)

Disposant d’une bonne documentation, des supports videos, plusieurs exemplessur internet

Enorme communaute : un des langages les plus utilises dans le monde(https://www.tiobe.com/tiobe-index/)

Permettant de developper des programmes :

robustes

securises et fiables

bien structures et maintenables

portables : Windows, Mac OS, Linux (Write once, run everywhere ou Ecrireune fois, executer partout)

...

H & H: Research and Training 5 / 90

Page 7: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

Java

Quel type d’application?

applications consoles (JSE)

applications du bureau (Client lourd avec Swing)

applications web (JEE)

applications mobiles

web services (Jersey...)

jeux...

H & H: Research and Training 6 / 90

Page 8: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

JavaQuelques versions de Java (les plus importantes)

Java 1 (sortie en 1996)

Java 2 (sortie en 1998, nommee Playground) : Swing + collection

Java 4 (sortie en 2002, nommee Merlin) : expressions regulieres + parser XML (JAXP)

Java 5 (sortie en 2004, nommee Tiger) : genericite, annotation + enumerations + plusbesoin de convertir les types wrappers en primitifs (et inversement)

Java 6 (sortie en 2006, nommee Mustang) : JAX-WS (Web services REST)

Java 7 (sortie en 2011, nommee Dolphin) : String dans switch

Java 8 (sortie en Mars 2014, nommee Spider) : interface fonctionnelle, methode pardefaut, expression Lambda, MapReduce pour les collections

Java 10 (sortie en Mars 2018) : mot-cle var

Java 11 (sortie en Septembre 2018) : simplifier l’execution d’un programme en ligne decommande

Java 12 (sortie en Mars 2019) : simplification de switch et String multi-lignes

H & H: Research and Training 7 / 90

Page 9: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

Java

Comment ca fonctionne ?

On ecrit un programme dans un fichier .java

Ensuite, le compilateur genere un fichier .class du meme nom(contenant du bytecode)

Puis, la machine virtuelle execute le bytecode en le traduisant enlangage natif (langage de bas niveau, ce qui assure la portabilited’un programme java)

MyClass.java

compiler

MyClass.classJVM

MyClass

H & H: Research and Training 8 / 90

Page 10: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

JavaDe quoi on a besoin (le minimum)?

Un editeur de texte (Bloc-notes, Notepad++, Sublime Text...)

Un kit de developpement (JDK : Java Development Kit)contenant :

Java Runtime Environment (JRE, incluant la machine virtuelle deJava (JVM))

Des librairies (JSE : Java Standard Edition, JEE : Java EnterpriseEdition, JME Java Micro Edition, Swing, JDBC...)

Des commandes permettant la creation, la compilation etl’execution d’un programme Java

javac : pour compiler

java : pour executer

javadoc : pour generer une documentation

jar : pour archiver

H & H: Research and Training 9 / 90

Page 11: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

Introduction

JDK : telechargement

https://www.oracle.com/technetwork/java/javase/downloads/jdk13-downloads-5672538.html

H & H: Research and Training 10 / 90

Page 12: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

Java

Remarque

Pour lancer un programme en ligne de commande, il faut :

aller dans Panneau de configuration, chercher Systeme etcliquer sur Parametres systemes avances

choisir Variables d’environnement puis dans la zoneVariables utilisateur selectionner Path et cliquer surModifier

cliquer sur Nouveau puis saisir le chemin vers la JDK dans lazone de saisie qui a apparu

valider

H & H: Research and Training 11 / 90

Page 13: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

JavaCreons une classe MyClass dans un fichier MyClass.java

public class MyClass {

public static void main(String[] args) {System.out.print("Hello world from console");

}}

MyClass.java

compiler

MyClass.classJVM

MyClass

java MyClass.java [depuis Java 12

H & H: Research and Training 12 / 90

Page 14: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

JavaCreons une classe MyClass dans un fichier MyClass.java

public class MyClass {

public static void main(String[] args) {System.out.print("Hello world from console");

}}

MyClass.java

compiler

MyClass.classJVM

MyClass

javac MyClass.java

java MyClass.java [depuis Java 12

H & H: Research and Training 12 / 90

Page 15: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

JavaCreons une classe MyClass dans un fichier MyClass.java

public class MyClass {

public static void main(String[] args) {System.out.print("Hello world from console");

}}

MyClass.java

compiler

MyClass.classJVM

MyClass

javac MyClass.java java MyClass.class

java MyClass.java [depuis Java 12

H & H: Research and Training 12 / 90

Page 16: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

JavaCreons une classe MyClass dans un fichier MyClass.java

public class MyClass {

public static void main(String[] args) {System.out.print("Hello world from console");

}}

MyClass.java

compiler

MyClass.classJVM

MyClass

javac MyClass.java java MyClass.class

java MyClass.java [depuis Java 11]

H & H: Research and Training 12 / 90

Page 17: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

Java

Pour compiler

javac MyClass.java

S’il existe plusieurs versions de JDK sur la machine

javac -target 8 -version 8 MyClass.java

Pour executer (ca affiche Hello world from console)

java MyClass

H & H: Research and Training 13 / 90

Page 18: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

Java

Pour compiler

javac MyClass.java

S’il existe plusieurs versions de JDK sur la machine

javac -target 8 -version 8 MyClass.java

Pour executer (ca affiche Hello world from console)

java MyClass

H & H: Research and Training 13 / 90

Page 19: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

Java

Pour compiler

javac MyClass.java

S’il existe plusieurs versions de JDK sur la machine

javac -target 8 -version 8 MyClass.java

Pour executer (ca affiche Hello world from console)

java MyClass

H & H: Research and Training 13 / 90

Page 20: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

Java

On peut aussi utiliser un IDE (Environnement de developpementintegre)

pour eviter d’utiliser la console et les commandes

car un IDE integre un compilateur lance meme pendant l’ecrituredu code

pour profiter de la coloration syntaxique, l’auto-completion,l’indentation automatique...

pour avoir une bonne structuration du projet

H & H: Research and Training 14 / 90

Page 21: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

Java

Exemple d’IDE pour Java

Eclipse

Netbeans

JDeveloper

IntelliJ IDEA

JBuilder

JCreator...

...

H & H: Research and Training 15 / 90

Page 22: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

Java

Eclipse, pourquoi?

open-source

ecrit en Java

multi-langage : Java, C++, PHP, Cobol, C#, JavaScript...

H & H: Research and Training 16 / 90

Page 23: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

Introduction

Eclipse : telechargement

https://www.eclipse.org/downloads/download.php?file=/oomph/epp/2020-06/R/eclipse-inst-win64.exe

H & H: Research and Training 17 / 90

Page 24: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

Introduction

Editeur Java en ligne

https://www.jdoodle.com/online-java-compiler/

H & H: Research and Training 18 / 90

Page 25: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

Java

H & H: Research and Training 19 / 90

Page 26: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Introduction

Java

H & H: Research and Training 19 / 90

Page 27: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Avant de commencer

Java

Les regles de nommage en Java

Pour les classes et les fichiers : Le Pascal case

Pour les variables, les objets et les methodes : Le Camel case

Pour les noms de projets : Le Kebab case

Pour plus de detailshttps://wprock.fr/blog/conventions-nommage-programmation/

H & H: Research and Training 20 / 90

Page 28: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Avant de commencer

Java

Les regles de nommage en Java

Pour les classes et les fichiers : Le Pascal case

Pour les variables, les objets et les methodes : Le Camel case

Pour les noms de projets : Le Kebab case

Pour plus de detailshttps://wprock.fr/blog/conventions-nommage-programmation/

H & H: Research and Training 20 / 90

Page 29: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Avant de commencer

Java

Les instructions

Chaque instruction se termine par ;

Il est possible d’ecrire plusieurs instructions sur une meme ligne(mais ce n’est pas une bonne pratique)

Eclipse nous facilite le formatage et l’indentation du code avec leraccourci CTRL + Shift + F

H & H: Research and Training 21 / 90

Page 30: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Avant de commencer

Java

Comment organiser un projet Java?

Une classe par fichier

Organiser les classes par package selon la semantique

Une classe ne peut etre definie dans plusieurs fichiers (pas declasse partielle en Java)

Il est possible de creer deux classes avec le meme nom dansdeux packages differents

H & H: Research and Training 22 / 90

Page 31: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Un premier projet Java

Java

Comment creer un projet sous Eclipse?

Aller dans File > New > Java Project

Remplir le champ Project name: avec cours-introductionpuis cliquer sur Next

Decocher la case Create module-info.java file puiscliquer sur Finish

Que contient ce projet ?

JRE System Library : l’ensemble de .jar indispensable pourle lancement du projet

src : le repertoire qui contiendra les fichiers sources (les classes)

H & H: Research and Training 23 / 90

Page 32: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Un premier projet Java

Java

Comment creer un projet sous Eclipse?

Aller dans File > New > Java Project

Remplir le champ Project name: avec cours-introductionpuis cliquer sur Next

Decocher la case Create module-info.java file puiscliquer sur Finish

Que contient ce projet ?

JRE System Library : l’ensemble de .jar indispensable pourle lancement du projet

src : le repertoire qui contiendra les fichiers sources (les classes)

H & H: Research and Training 23 / 90

Page 33: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Un premier projet Java

Java

Comment creer une classe?

Aller dans File > New > Class

Dans Package, saisir org.eclipse.classes

Dans Class, saisir FirstClass

Cocher la case public static void main (String[]args)

Cliquer sur Finish

Remarque

Si on a un package, on peut le selectionner au moment de la creationde la classe

H & H: Research and Training 24 / 90

Page 34: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Un premier projet Java

Java

Comment creer une classe?

Aller dans File > New > Class

Dans Package, saisir org.eclipse.classes

Dans Class, saisir FirstClass

Cocher la case public static void main (String[]args)

Cliquer sur Finish

Remarque

Si on a un package, on peut le selectionner au moment de la creationde la classe

H & H: Research and Training 24 / 90

Page 35: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Un premier projet Java

Java

Comment creer un package?

Aller dans File > New > Package

Saisir le nom du package et valider

H & H: Research and Training 25 / 90

Page 36: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Un premier projet Java

Java

Contenu de la classe FirstClass

package org.eclipse.classes;

public class FirstClass {

public static void main(String[] args) {// TODO Auto-generated method stub

}

}

H & H: Research and Training 26 / 90

Page 37: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Un premier projet Java

Java

Explication

En java, et contrairement a plusieurs langages OO comme C++,C#, PHP..., on ne peut ecrire une instruction en dehors d’une(methode de) classe.

En java, un fichier contient une seule classe et une classe ne peutetre declaree dans plusieurs fichiers (contrairement a C#)

La premiere ligne package org.eclipse.classes nousinforme que la classe actuelle se situe danssrc/org/eclipse/classes dans un repertoirecours-introduction situe dans le work-space d’Eclipse

Dans un projet Java, il faut qu’au moins une classe contienne lamethode public static void main(String[] args) :point d’entree du projet

H & H: Research and Training 27 / 90

Page 38: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Un premier projet Java

Java

Les commentaires

Trois types de commentaires

Commentaire mono-ligne

// ceci est un commentaire sur une seule ligne

Commentaire sur plusieurs lignes

/* ceci est uncommentairesur trois lignes */

Commentaire pour documentation

/**@author Achref El Mouelhi*/

H & H: Research and Training 28 / 90

Page 39: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Un premier projet Java

Java

Les commentaires

Trois types de commentaires

Commentaire mono-ligne

// ceci est un commentaire sur une seule ligne

Commentaire sur plusieurs lignes

/* ceci est uncommentairesur trois lignes */

Commentaire pour documentation

/**@author Achref El Mouelhi*/

H & H: Research and Training 28 / 90

Page 40: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Un premier projet Java

Java

Les commentaires

Trois types de commentaires

Commentaire mono-ligne

// ceci est un commentaire sur une seule ligne

Commentaire sur plusieurs lignes

/* ceci est uncommentairesur trois lignes */

Commentaire pour documentation

/**@author Achref El Mouelhi*/

H & H: Research and Training 28 / 90

Page 41: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Un premier projet Java

Java

Les commentaires

Trois types de commentaires

Commentaire mono-ligne

// ceci est un commentaire sur une seule ligne

Commentaire sur plusieurs lignes

/* ceci est uncommentairesur trois lignes */

Commentaire pour documentation

/**@author Achref El Mouelhi*/

H & H: Research and Training 28 / 90

Page 42: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Un premier projet Java

JavaPour afficher Hello World, on modifie la classe FirstClass

package org.eclipse.classes;

public class FirstClass {

public static void main(String[] args) {

System.out.println("Hello World!");

}}

Java est un langage 100% (ou presque) oriente objet

Pour afficher un message, il faut utiliser la classe System

La classe System a deux objets pour l’entree/sortie (in/out)

L’objet out a plusieurs methodes d’affichage comme print() et println()

H & H: Research and Training 29 / 90

Page 43: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Un premier projet Java

Java

Comment executer le programme? (voir le resultat)

Soit en faisant clic droit sur cours-introduction dansPackage Explorer et aller dans Run As > JavaApplication

Soit en faisant clic droit sur la classe contenant puclic staticvoid main() (ici FirstClass) dans le panneau central et allerdans Run As > Java Application

Soit en cliquant sur le triangle vert dans la liste de raccourci

H & H: Research and Training 30 / 90

Page 44: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Un premier projet Java

Java

Ou voir le resultat ?

Dans la console Eclipse

Si la console n’est pas visible, aller dans Window > Show View> Other..., saisir console et la selectionner puis valider.

Ou sont les .class generes?

Dans le work-space, aller voir dans le repertoire portant le nomdu projet (ici cours-introduction)

Dans org/eclipse/classes, un fichier FirstClass.classa ete genere.

H & H: Research and Training 31 / 90

Page 45: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Un premier projet Java

Java

Ou voir le resultat ?

Dans la console Eclipse

Si la console n’est pas visible, aller dans Window > Show View> Other..., saisir console et la selectionner puis valider.

Ou sont les .class generes?

Dans le work-space, aller voir dans le repertoire portant le nomdu projet (ici cours-introduction)

Dans org/eclipse/classes, un fichier FirstClass.classa ete genere.

H & H: Research and Training 31 / 90

Page 46: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables

Java

Une variable ?

Un pointeur vers une zone memoire

Permettant de stocker une ou plusieurs donnees

Pouvant avoir plusieurs valeurs differentes dans un programme

Java est un langage de programmation fortement type

Il faut preciser le type de chaque variable

Une variable peut avoir de valeurs differentes mais ne peutchanger de type.

H & H: Research and Training 32 / 90

Page 47: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables

Java

Une variable ?

Un pointeur vers une zone memoire

Permettant de stocker une ou plusieurs donnees

Pouvant avoir plusieurs valeurs differentes dans un programme

Java est un langage de programmation fortement type

Il faut preciser le type de chaque variable

Une variable peut avoir de valeurs differentes mais ne peutchanger de type.

H & H: Research and Training 32 / 90

Page 48: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables

Java

Deux modes de typage en Java

Statique : le type est precise a la declaration de la variable

Dynamique : la variable est declaree avec le mot-cle var et sontype est dynamiquement determine a partir de la valeur initiale.[disponible depuis Java 11]

H & H: Research and Training 33 / 90

Page 49: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Declarer une variable

type nomVariable;

Deux choix possibles pour typer les variables

Types simples (primitifs) : commencent par une lettre enminuscule

Types objets : commencent par une lettre en majuscule

H & H: Research and Training 34 / 90

Page 50: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Declarer une variable

type nomVariable;

Deux choix possibles pour typer les variables

Types simples (primitifs) : commencent par une lettre enminuscule

Types objets : commencent par une lettre en majuscule

H & H: Research and Training 34 / 90

Page 51: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Principaux types primitifs en Java

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

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

int : entier code sur 4 octets (entre 2 147 483 648 et 2 147 483 647)

long : entier code sur 8 octets (entre -9 223 372 036 854 775 808 et +9 223 372036 854 775 807)

float : nombre a virgule code sur 4 octets

double : nombre a virgule code sur 8 octets

boolean : soit true soit false (1 octet)

char : caractere code sur 2 octet situe entre deux ’

Pas de type primitif pour les chaınes de caractere.

H & H: Research and Training 35 / 90

Page 52: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Principaux types primitifs en Java

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

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

int : entier code sur 4 octets (entre 2 147 483 648 et 2 147 483 647)

long : entier code sur 8 octets (entre -9 223 372 036 854 775 808 et +9 223 372036 854 775 807)

float : nombre a virgule code sur 4 octets

double : nombre a virgule code sur 8 octets

boolean : soit true soit false (1 octet)

char : caractere code sur 2 octet situe entre deux ’

Pas de type primitif pour les chaınes de caractere.H & H: Research and Training 35 / 90

Page 53: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Exemple

int x;

Declarer et initialiser une variable

int x = 5;

Ceci est une erreur

byte x = 130;

Pour convertir le contenu d’une variable (le cast pour les typescompatibles)

int x = 100;byte z = (byte) x;System.out.println(z); // affiche 100

H & H: Research and Training 36 / 90

Page 54: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Exemple

int x;

Declarer et initialiser une variable

int x = 5;

Ceci est une erreur

byte x = 130;

Pour convertir le contenu d’une variable (le cast pour les typescompatibles)

int x = 100;byte z = (byte) x;System.out.println(z); // affiche 100

H & H: Research and Training 36 / 90

Page 55: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Exemple

int x;

Declarer et initialiser une variable

int x = 5;

Ceci est une erreur

byte x = 130;

Pour convertir le contenu d’une variable (le cast pour les typescompatibles)

int x = 100;byte z = (byte) x;System.out.println(z); // affiche 100

H & H: Research and Training 36 / 90

Page 56: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Exemple

int x;

Declarer et initialiser une variable

int x = 5;

Ceci est une erreur

byte x = 130;

Pour convertir le contenu d’une variable (le cast pour les typescompatibles)

int x = 100;byte z = (byte) x;System.out.println(z); // affiche 100

H & H: Research and Training 36 / 90

Page 57: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Attention aux valeurs qui depassent l’intervalle

int x = 200;byte z = (byte) x;System.out.println(z); // affiche -56

H & H: Research and Training 37 / 90

Page 58: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

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

H & H: Research and Training 38 / 90

Page 59: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

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

H & H: Research and Training 38 / 90

Page 60: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Exemple d’utilisation d’une chaıne de caractere

String string = new String();string = "bonjour";System.out.println(string); // affiche bonjour

On peu aussi faire

String string = new String("bonjour");System.out.println(string); // affiche bonjour

Ou encore

String string = "bonjour";System.out.println(string); // affiche bonjour

Une chaıne de caractere doit etre situee entre deux "contenu"

H & H: Research and Training 39 / 90

Page 61: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Exemple d’utilisation d’une chaıne de caractere

String string = new String();string = "bonjour";System.out.println(string); // affiche bonjour

On peu aussi faire

String string = new String("bonjour");System.out.println(string); // affiche bonjour

Ou encore

String string = "bonjour";System.out.println(string); // affiche bonjour

Une chaıne de caractere doit etre situee entre deux "contenu"

H & H: Research and Training 39 / 90

Page 62: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Exemple d’utilisation d’une chaıne de caractere

String string = new String();string = "bonjour";System.out.println(string); // affiche bonjour

On peu aussi faire

String string = new String("bonjour");System.out.println(string); // affiche bonjour

Ou encore

String string = "bonjour";System.out.println(string); // affiche bonjour

Une chaıne de caractere doit etre situee entre deux "contenu"

H & H: Research and Training 39 / 90

Page 63: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Exemple d’utilisation d’une chaıne de caractere

String string = new String();string = "bonjour";System.out.println(string); // affiche bonjour

On peu aussi faire

String string = new String("bonjour");System.out.println(string); // affiche bonjour

Ou encore

String string = "bonjour";System.out.println(string); // affiche bonjour

Une chaıne de caractere doit etre situee entre deux "contenu"H & H: Research and Training 39 / 90

Page 64: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Pourquoi les types primitifs et les types objets?

Les types primitifs sont moins couteux en memoire

Les types objets offrent plusieurs methodes a appliquer sur lesvaleurs : conversion, nombre de caractere...

Toutes les classes wrappers contiennent une methode(TypeObjet.parseTypeSimple(string)) qui permet deconvertir une chaine de caractere en type primitif de cette classe

H & H: Research and Training 40 / 90

Page 65: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

JavaQuelques methodes de la classe String

length() : retourne le nombre de caractere de la chaıne.

indexOf(x) : retourne l’indice de la premiere occurrence de la valeur de xdans la chaıne, -1 sinon.

contains() : retourne true si la chaıne contient x, false sinon.

charAt(i) : retourne le caractere d’indice i dans la chaıne.

substring(i,j) : permet d’extraire une sous-chaıne de la chaıne a partir del’indice i jusqu’au l’indice j - 1

equals(str) : permet de comparer la chaıne a str et retourne true en casd’egalite, false sinon.

replace(old,new) : permet de remplacer toute occurrence de la chaıne olddans la chaıne courante par new et retourne la nouvelle chaıne

...

H & H: Research and Training 41 / 90

Page 66: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Exemple : replace(old,new)

String string = "bonjour les bons jours";String string2 = string.replace("jour", "soir");System.out.println(string2);// bonsoir les bons soirs

Exemple : indexOf(str,fromIndex)

String string = "bonjour les bons jours";int pos = string.indexOf("bon", 5);System.out.println(pos);// affiche 12

H & H: Research and Training 42 / 90

Page 67: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Exemple : replace(old,new)

String string = "bonjour les bons jours";String string2 = string.replace("jour", "soir");System.out.println(string2);// bonsoir les bons soirs

Exemple : indexOf(str,fromIndex)

String string = "bonjour les bons jours";int pos = string.indexOf("bon", 5);System.out.println(pos);// affiche 12

H & H: Research and Training 42 / 90

Page 68: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Exemple de conversion d’une chaıne de caractere

String string = "2";byte z = Byte.parseByte(string);System.out.println(z); // affiche 2

Ceci declenche une exception (arret d’execution)

String string = "a";byte z = Byte.parseByte(string);System.out.println(z);

Le resultat

Exception in thread "main" java.lang.NumberFormatException: For input string: "a"

H & H: Research and Training 43 / 90

Page 69: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Exemple de conversion d’une chaıne de caractere

String string = "2";byte z = Byte.parseByte(string);System.out.println(z); // affiche 2

Ceci declenche une exception (arret d’execution)

String string = "a";byte z = Byte.parseByte(string);System.out.println(z);

Le resultat

Exception in thread "main" java.lang.NumberFormatException: For input string: "a"

H & H: Research and Training 43 / 90

Page 70: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

Exemple de conversion de Integer en String

Integer x = 2;String string = x.toString();System.out.println(string); // affiche 2

H & H: Research and Training 44 / 90

Page 71: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

JavaQuatre methodes pour convertir int en String

int y = 3;String chaine =((Integer) y).toString();System.out.println(chaine); // affiche 3

int z = 4;String str = Integer.toString(z);System.out.println(str); // affiche 4

int t = 5;String s = String.valueOf(t);System.out.println(s); // affiche 5

int u = 6;String s = "" + u;System.out.println(s); // affiche 6

H & H: Research and Training 45 / 90

Page 72: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

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

int z = 4;String str =(String) z;System.out.println(str);

H & H: Research and Training 46 / 90

Page 73: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage statique

Java

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

Integer j = 2;int k = j;System.out.println(k); // affiche 2

int l = 3;Integer m = l;System.out.println(m); // affiche 3

H & H: Research and Training 47 / 90

Page 74: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage dynamique

Java

Declarer une variable avec le mot-cle var

var nomVariable = valeurInitiale;

Remarque

Une variable declaree avec le mot-cle var

doit etre initialisee

a un type determine en fonction de sa valeur initiale

ne peut changer de type

H & H: Research and Training 48 / 90

Page 75: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage dynamique

Java

Declarer une variable avec le mot-cle var

var nomVariable = valeurInitiale;

Remarque

Une variable declaree avec le mot-cle var

doit etre initialisee

a un type determine en fonction de sa valeur initiale

ne peut changer de type

H & H: Research and Training 48 / 90

Page 76: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage dynamique

Java

Exemple

var x = 10;

Ceci genere une erreur

x = "bonjour";

H & H: Research and Training 49 / 90

Page 77: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les variables Typage dynamique

Java

Exemple

var x = 10;

Ceci genere une erreur

x = "bonjour";

H & H: Research and Training 49 / 90

Page 78: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les operations sur les variables

Java

Pour les variables numeriques (int, float...)

= : affectation

+ : addition

- : soustraction

* : multiplication

/ : division

% : reste de la division

H & H: Research and Training 50 / 90

Page 79: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les operations sur les variables

Java

Quelques raccourcis

i = i + 1 ⇒ i++;

i = i - 1 ⇒ i--;

i = i + 2 ⇒ i += 2;

i = i - 2 ⇒ i -= 2;

...

H & H: Research and Training 51 / 90

Page 80: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les operations sur les variables

Java

Exemple de post-incrementation

int i = 2;int j = i++;System.out.println(i); // affiche 3System.out.println(j); // affiche 2

Exemple de pre-incrementation

int i = 2;int j = ++i;System.out.println(i); // affiche 3System.out.println(j); // affiche 3

H & H: Research and Training 52 / 90

Page 81: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les operations sur les variables

Java

Exemple de post-incrementation

int i = 2;int j = i++;System.out.println(i); // affiche 3System.out.println(j); // affiche 2

Exemple de pre-incrementation

int i = 2;int j = ++i;System.out.println(i); // affiche 3System.out.println(j); // affiche 3

H & H: Research and Training 52 / 90

Page 82: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les operations sur les variables

Java

L’operateur + pour concatener deux chaınes de caractere

String string = "bon";String string2 = "jour";System.out.println(string + string2);// affiche bonjour

H & H: Research and Training 53 / 90

Page 83: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

La lecture d’une saisie

Java

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

il faut utiliser la classe Scanner

il faut preciser le type de la valeur a recuperer

H & H: Research and Training 54 / 90

Page 84: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

La lecture d’une saisie

Java

Instancier la classe Scanner

Scanner scanner = new Scanner(System.in);

La classe Scanner est signalee en rouge, il faut l’importer

import java.util.Scanner;

Exemple de lecture d’un entier

int i = scanner.nextInt();

Fermer le scanner

scanner.close();

H & H: Research and Training 55 / 90

Page 85: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

La lecture d’une saisie

Java

Instancier la classe Scanner

Scanner scanner = new Scanner(System.in);

La classe Scanner est signalee en rouge, il faut l’importer

import java.util.Scanner;

Exemple de lecture d’un entier

int i = scanner.nextInt();

Fermer le scanner

scanner.close();

H & H: Research and Training 55 / 90

Page 86: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

La lecture d’une saisie

Java

Instancier la classe Scanner

Scanner scanner = new Scanner(System.in);

La classe Scanner est signalee en rouge, il faut l’importer

import java.util.Scanner;

Exemple de lecture d’un entier

int i = scanner.nextInt();

Fermer le scanner

scanner.close();

H & H: Research and Training 55 / 90

Page 87: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

La lecture d’une saisie

Java

Instancier la classe Scanner

Scanner scanner = new Scanner(System.in);

La classe Scanner est signalee en rouge, il faut l’importer

import java.util.Scanner;

Exemple de lecture d’un entier

int i = scanner.nextInt();

Fermer le scanner

scanner.close();

H & H: Research and Training 55 / 90

Page 88: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

La lecture d’une saisie

Java

Remarques

Pour lire une chaıne de caractere, il faut utiliser la methodenext() ou nextLine()

Pour lire un nombre reel, il faut utiliser la methode nextFloat()

...

H & H: Research and Training 56 / 90

Page 89: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

La lecture d’une saisie

Java

Exemple avec next()

Scanner scanner = new Scanner(System.in);// si on saisit "bonjour tout le monde"String string = scanner.next();System.out.println(string);// affiche bonjour

Exemple avec nextLine()

Scanner scanner = new Scanner(System.in);// si on saisit "bonjour tout le monde"String string = scanner.nextLine();System.out.println(string);// affiche bonjour tout le monde

H & H: Research and Training 57 / 90

Page 90: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

La lecture d’une saisie

Java

Exemple avec next()

Scanner scanner = new Scanner(System.in);// si on saisit "bonjour tout le monde"String string = scanner.next();System.out.println(string);// affiche bonjour

Exemple avec nextLine()

Scanner scanner = new Scanner(System.in);// si on saisit "bonjour tout le monde"String string = scanner.nextLine();System.out.println(string);// affiche bonjour tout le monde

H & H: Research and Training 57 / 90

Page 91: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

La lecture d’une saisie

Java

A chaque appel a next(), on recupere le token suivant

Scanner scanner = new Scanner(System.in);// si on saisit "bonjour tout le monde"String string = scanner.next();String s = scanner.next();System.out.println(s);// affiche tout

Le code suivant declenche une exception car on ne peut affecterla chaıne "tout" a un entier

Scanner scanner = new Scanner(System.in);// si on saisit "bonjour tout le monde"String string = scanner.next();int v = scanner.nextInt();System.out.println(v);

H & H: Research and Training 58 / 90

Page 92: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

La lecture d’une saisie

Java

A chaque appel a next(), on recupere le token suivant

Scanner scanner = new Scanner(System.in);// si on saisit "bonjour tout le monde"String string = scanner.next();String s = scanner.next();System.out.println(s);// affiche tout

Le code suivant declenche une exception car on ne peut affecterla chaıne "tout" a un entier

Scanner scanner = new Scanner(System.in);// si on saisit "bonjour tout le monde"String string = scanner.next();int v = scanner.nextInt();System.out.println(v);

H & H: Research and Training 58 / 90

Page 93: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

La lecture d’une saisie

Java

Il n’existe pas une methode specifiques aux caracteres, mais onpeut faire

Scanner scanner = new Scanner(System.in);String string = scanner.next();char c = scanner.next().charAt(0);System.out.println(c);

H & H: Research and Training 59 / 90

Page 94: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

La lecture d’une saisie

Java

On peut aussi utiliser les methodes statiques de la classe Math

Math.abs(x) : retourne la valeur absolue de x

Math.pow(x,y) : retourne la x puissance y

Math.max(x,y) : retourne le max de x et y

Math.min(x,y) : retourne le min de x et y

Math.sqrt(x) : retourne la racine carre de x

Math.floor(x), Math.ceil(x) et Math.round(x) :retournent l’arrondi de x

Math.random() : retourne une valeur aleatoire entre 0 et 1

...

H & H: Research and Training 60 / 90

Page 95: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

La lecture d’une saisie

Java

Exemple avec Math.floor(x), Math.ceil(x) etMath.round(x)

System.out.println(Math.round(1.9)); // affiche 2System.out.println(Math.round(1.5)); // affiche 2System.out.println(Math.round(1.4)); // affiche 1System.out.println(Math.ceil(1.9)); // affiche 2System.out.println(Math.ceil(1.5)); // affiche 2System.out.println(Math.ceil(1.4)); // affiche 2System.out.println(Math.floor(1.9)); // affiche 1System.out.println(Math.floor(1.5)); // affiche 1System.out.println(Math.floor(1.4)); // affiche 1

H & H: Research and Training 61 / 90

Page 96: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles if

Java

Executer si une condition est vraie

if (condition) {...

}

Exemple

var x = 3;if (x >= 0) {

System.out.println(x + " est positif");}

Pour les conditions, on utilise les operateurs de comparaison

H & H: Research and Training 62 / 90

Page 97: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles if

Java

Executer si une condition est vraie

if (condition) {...

}

Exemple

var x = 3;if (x >= 0) {

System.out.println(x + " est positif");}

Pour les conditions, on utilise les operateurs de comparaison

H & H: Research and Training 62 / 90

Page 98: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles if

Java

Executer si une condition est vraie

if (condition) {...

}

Exemple

var x = 3;if (x >= 0) {

System.out.println(x + " est positif");}

Pour les conditions, on utilise les operateurs de comparaison

H & H: Research and Training 62 / 90

Page 99: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles if

Java

Operateurs de comparaison

== : pour tester l’egalite

!= : pour tester l’inegalite

> : superieur a

< : inferieur a

>= : superieur ou egal a

<= : inferieur ou egal a

En java, on ne peut comparer deux valeurs de type incompatible

H & H: Research and Training 63 / 90

Page 100: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles if

Java

Operateurs de comparaison

== : pour tester l’egalite

!= : pour tester l’inegalite

> : superieur a

< : inferieur a

>= : superieur ou egal a

<= : inferieur ou egal a

En java, on ne peut comparer deux valeurs de type incompatible

H & H: Research and Training 63 / 90

Page 101: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles if ... else

JavaExecuter un premier bloc si une condition est vraie, un deuxieme sinon (le bloc else)

if (condition1) {...

}else {...

}

Exemple

var x = 3;if (x > 0){System.out.println(x + " est strictement positif");

}else{System.out.println(x + " est negatif ou nul");

}

H & H: Research and Training 64 / 90

Page 102: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles if ... else

JavaExecuter un premier bloc si une condition est vraie, un deuxieme sinon (le bloc else)

if (condition1) {...

}else {...

}

Exemple

var x = 3;if (x > 0){System.out.println(x + " est strictement positif");

}else{System.out.println(x + " est negatif ou nul");

}

H & H: Research and Training 64 / 90

Page 103: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles if ... else if ... else

Java

On peut enchaıner les conditions avec else if (et avoir untroisieme bloc voire ... un nieme)

if (condition1){

...}else if (condition2){

...}...else{

...}

H & H: Research and Training 65 / 90

Page 104: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles if ... else if ... else

Java

Exemple

var x = -3;if (x > 0){System.out.println(x + " est strictement positif");

}else if (x < 0){System.out.println(x + " est strictement negatif");

}else{System.out.println(x + " est nul");

}

H & H: Research and Training 66 / 90

Page 105: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles if ... else if ... else

Java

Operateurs logiques

&& : et

|| : ou

! : non

Tester plusieurs conditions (en utilisant des operateurs logiques)

if (condition1 && !condition2 || condition3){...

}[else ...]

H & H: Research and Training 67 / 90

Page 106: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles if ... else if ... else

Java

Operateurs logiques

&& : et

|| : ou

! : non

Tester plusieurs conditions (en utilisant des operateurs logiques)

if (condition1 && !condition2 || condition3){...

}[else ...]

H & H: Research and Training 67 / 90

Page 107: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles 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-defaut;

}

H & H: Research and Training 68 / 90

Page 108: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles switch

Java

Remarques

Le switch permet seulement de tester l’egalite

Le break permet de quitter le switch une fois un bloc caseexecute

Il est possible de regrouper plusieurs case

Le bloc default est facultatif, il sera execute si la valeur de lavariable ne correspond a aucune constante de case

H & H: Research and Training 69 / 90

Page 109: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles switch

Java

Structure conditionnelle avec switch

int x = 5;switch (x) {

case 1:System.out.println("un");break;

case 2:System.out.println("deux");break;

case 3:System.out.println("trois");break;

default:System.out.println("autre");

}

H & H: Research and Training 70 / 90

Page 110: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles switch

JavaUn multi-case pour un seul traitement

var x = 5;switch (x) {case 1:case 2:

System.out.println("un ou deux");break;

case 3:System.out.println("trois");break;

case 4:case 5:

System.out.println("quatre ou cinq");break;

default:System.out.println("autre");

}

H & H: Research and Training 71 / 90

Page 111: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles switch

Java

La variable dans switch peut etre

de types simples : int, short, byte et char

de type wrappers correspondants : Integer, Short, Byte etCharacter

de type enumeration depuis Java 6

de type chaıne de caractere depuis Java 7

H & H: Research and Training 72 / 90

Page 112: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles switch

Java

Si on supprime un break

String x = "2";switch (x) {case "1":System.out.println("un");break;

case "2":System.out.println("deux");

case "3":System.out.println("trois");break;

default:System.out.println("autre");

}// affiche deux trois

H & H: Research and Training 73 / 90

Page 113: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles Expression ternaire

Java

Simplifions l’ecriture avec l’expression ternaire

int x = 2;String type = (x % 2 == 0) ? "pair" : "impair";System.out.println(type); // affiche pair

H & H: Research and Training 74 / 90

Page 114: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles while

Java

Boucle while : a chaque iteration on teste si la condition estvraie avant d’acceder aux traitements

while (condition[s]) {...

}

Attention aux boucles infinies, verifier que la condition d’arret sera bienatteinte apres un certain nombre d’iterations.

H & H: Research and Training 75 / 90

Page 115: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles while

Java

Boucle while : a chaque iteration on teste si la condition estvraie avant d’acceder aux traitements

while (condition[s]) {...

}

Attention aux boucles infinies, verifier que la condition d’arret sera bienatteinte apres un certain nombre d’iterations.

H & H: Research and Training 75 / 90

Page 116: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles while

Java

Exemple

var i = 0;while (i < 5) {System.out.println(i);i++;

}

Le resultat est

01234

H & H: Research and Training 76 / 90

Page 117: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles while

Java

Exemple

var i = 0;while (i < 5) {System.out.println(i);i++;

}

Le resultat est

01234

H & H: Research and Training 76 / 90

Page 118: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles do ... while

Java

La Boucle do ... while execute le bloc au moins une fois ensuiteelle verifie la condition

do {...

}while (condition[s]);

Attention aux boucles infinies, verifier que la condition d’arret sera bienatteinte apres un certain nombre d’iterations.

H & H: Research and Training 77 / 90

Page 119: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles do ... while

Java

La Boucle do ... while execute le bloc au moins une fois ensuiteelle verifie la condition

do {...

}while (condition[s]);

Attention aux boucles infinies, verifier que la condition d’arret sera bienatteinte apres un certain nombre d’iterations.

H & H: Research and Training 77 / 90

Page 120: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles do ... while

Java

Exemple

var i = 0;do {System.out.println(i);i++;

} while (i < 5);

Le resultat est

01234

H & H: Research and Training 78 / 90

Page 121: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles do ... while

Java

Exemple

var i = 0;do {System.out.println(i);i++;

} while (i < 5);

Le resultat est

01234

H & H: Research and Training 78 / 90

Page 122: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles for

Java

Boucle for

for (initialisation; condition[s]; incrementation) {...

}

Attention aux boucles infinies si vous modifiez la valeur du compteur al’interieur de la boucle.

H & H: Research and Training 79 / 90

Page 123: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles for

Java

Boucle for

for (initialisation; condition[s]; incrementation) {...

}

Attention aux boucles infinies si vous modifiez la valeur du compteur al’interieur de la boucle.

H & H: Research and Training 79 / 90

Page 124: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles for

Java

Exemple

for (var i = 0; i < 5; i++) {System.out.println(i);

}

Le resultat est

01234

H & H: Research and Training 80 / 90

Page 125: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles for

Java

Exemple

for (var i = 0; i < 5; i++) {System.out.println(i);

}

Le resultat est

01234

H & H: Research and Training 80 / 90

Page 126: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles for

Java

Exercice

Ecrire un code Java qui permet d’afficher les nombres pairs compris entre 0 et 10.

Premiere solution

for (var i = 0; i < 10; i++) {if (i % 2 == 0) {

System.out.println(i);}

}

Deuxieme solution

for (var i = 0; i < 10; i += 2) {System.out.println(i);

}

H & H: Research and Training 81 / 90

Page 127: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles for

Java

Exercice

Ecrire un code Java qui permet d’afficher les nombres pairs compris entre 0 et 10.

Premiere solution

for (var i = 0; i < 10; i++) {if (i % 2 == 0) {System.out.println(i);

}}

Deuxieme solution

for (var i = 0; i < 10; i += 2) {System.out.println(i);

}

H & H: Research and Training 81 / 90

Page 128: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les conditions et les boucles for

Java

Exercice

Ecrire un code Java qui permet d’afficher les nombres pairs compris entre 0 et 10.

Premiere solution

for (var i = 0; i < 10; i++) {if (i % 2 == 0) {System.out.println(i);

}}

Deuxieme solution

for (var i = 0; i < 10; i += 2) {System.out.println(i);

}

H & H: Research and Training 81 / 90

Page 129: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les tableaux

Java

En java, les tableaux sont statiques

Tous les elements doivent avoir le meme type

Il faut preciser une taille qu’on ne peut depasser

Declaration d’un tableau : syntaxe

type [] nomTableau = new type[taille];

Declaration d’un tableau d’entier de taille 2 : exemple

int [] tab = new int[2];

H & H: Research and Training 82 / 90

Page 130: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les tableaux

Java

En java, les tableaux sont statiques

Tous les elements doivent avoir le meme type

Il faut preciser une taille qu’on ne peut depasser

Declaration d’un tableau : syntaxe

type [] nomTableau = new type[taille];

Declaration d’un tableau d’entier de taille 2 : exemple

int [] tab = new int[2];

H & H: Research and Training 82 / 90

Page 131: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les tableaux

Java

En java, les tableaux sont statiques

Tous les elements doivent avoir le meme type

Il faut preciser une taille qu’on ne peut depasser

Declaration d’un tableau : syntaxe

type [] nomTableau = new type[taille];

Declaration d’un tableau d’entier de taille 2 : exemple

int [] tab = new int[2];

H & H: Research and Training 82 / 90

Page 132: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les tableaux

Java

Affectation de valeurs aux cases de tableau

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

Ceci declenche une exception

tab[2] = 10;

L’exception

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2

at org.eclipse.classes.FirstClass.main(FirstClass.java:11)

H & H: Research and Training 83 / 90

Page 133: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les tableaux

Java

Affectation de valeurs aux cases de tableau

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

Ceci declenche une exception

tab[2] = 10;

L’exception

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2

at org.eclipse.classes.FirstClass.main(FirstClass.java:11)

H & H: Research and Training 83 / 90

Page 134: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les tableaux

Java

On peut faire une declaration + une initialisation

int [] tab = { 5, 3 };

Comme si la taille du tableau a ete fixee a deux

Donc, ceci declenche aussi une exception

tab[2] = 10;

L’exceptionException in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2

at org.eclipse.classes.FirstClass.main(FirstClass.java:11)

H & H: Research and Training 84 / 90

Page 135: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les tableaux

Java

On peut faire une declaration + une initialisation

int [] tab = { 5, 3 };

Comme si la taille du tableau a ete fixee a deux

Donc, ceci declenche aussi une exception

tab[2] = 10;

L’exceptionException in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2

at org.eclipse.classes.FirstClass.main(FirstClass.java:11)

H & H: Research and Training 84 / 90

Page 136: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les tableaux

Java

Pour parcourir le tableau

for(int i = 0; i < tab.length; i++){System.out.println(tab[i]);

}

Ou encore la version simplifiee (foreach)

for(int elt : tab){System.out.println(elt);

}

H & H: Research and Training 85 / 90

Page 137: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les tableaux

Java

Pour parcourir le tableau

for(int i = 0; i < tab.length; i++){System.out.println(tab[i]);

}

Ou encore la version simplifiee (foreach)

for(int elt : tab){System.out.println(elt);

}

H & H: Research and Training 85 / 90

Page 138: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les constantes

Java

Une constante

un element qui ne peut changer de valeur

Pour declarer une constante

il faut utiliser le mot-cle final

Declaration d’une constante

final double PI = 3.1415;

L’instruction suivante ne peut etre acceptee

PI = 5;

H & H: Research and Training 86 / 90

Page 139: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les constantes

Java

Une constante

un element qui ne peut changer de valeur

Pour declarer une constante

il faut utiliser le mot-cle final

Declaration d’une constante

final double PI = 3.1415;

L’instruction suivante ne peut etre acceptee

PI = 5;

H & H: Research and Training 86 / 90

Page 140: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les constantes

Java

Une constante

un element qui ne peut changer de valeur

Pour declarer une constante

il faut utiliser le mot-cle final

Declaration d’une constante

final double PI = 3.1415;

L’instruction suivante ne peut etre acceptee

PI = 5;

H & H: Research and Training 86 / 90

Page 141: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les constantes

Java

Une constante

un element qui ne peut changer de valeur

Pour declarer une constante

il faut utiliser le mot-cle final

Declaration d’une constante

final double PI = 3.1415;

L’instruction suivante ne peut etre acceptee

PI = 5;

H & H: Research and Training 86 / 90

Page 142: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les methodes

JavaUne methode

caracterisee par : visibilite [+ static] + type de retour +nomMethode([les parametres]) + son implementation

Exemple de declaration d’une methode

public static int somme (int a, int b) {return a + b;

}

Exemple d’appel d’une methode

System.out.println(somme(2, 3));// affiche 5

H & H: Research and Training 87 / 90

Page 143: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les methodes

JavaUne methode

caracterisee par : visibilite [+ static] + type de retour +nomMethode([les parametres]) + son implementation

Exemple de declaration d’une methode

public static int somme (int a, int b) {return a + b;

}

Exemple d’appel d’une methode

System.out.println(somme(2, 3));// affiche 5

H & H: Research and Training 87 / 90

Page 144: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les methodes

JavaUne methode

caracterisee par : visibilite [+ static] + type de retour +nomMethode([les parametres]) + son implementation

Exemple de declaration d’une methode

public static int somme (int a, int b) {return a + b;

}

Exemple d’appel d’une methode

System.out.println(somme(2, 3));// affiche 5

H & H: Research and Training 87 / 90

Page 145: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les methodes

JavaDeclaration de methode avec un nombre indetermine de parametres (varargs)

public static int somme(int... tab) {int res = 0;for (int elt : tab)res += elt;

return res;}

Exemple d’appel

System.out.println(somme(2));// affiche 2System.out.println(somme(2, 3));// affiche 5System.out.println(somme(2, 3, 5));// affiche 10System.out.println(somme(2, 3, 5, 9));// affiche 19

H & H: Research and Training 88 / 90

Page 146: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les methodes

JavaDeclaration de methode avec un nombre indetermine de parametres (varargs)

public static int somme(int... tab) {int res = 0;for (int elt : tab)res += elt;

return res;}

Exemple d’appel

System.out.println(somme(2));// affiche 2System.out.println(somme(2, 3));// affiche 5System.out.println(somme(2, 3, 5));// affiche 10System.out.println(somme(2, 3, 5, 9));// affiche 19

H & H: Research and Training 88 / 90

Page 147: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les methodes

Java

Remarques

varargs est disponible depuis Java 5.

On ne peut avoir qu’un seul varargs par methode

Le parametre varargs doit etre le dernier dans la liste deparametres d’une methode

H & H: Research and Training 89 / 90

Page 148: Achref El Mouelhi - lis-lab.fr · Java 7 (sortie en 2011, nommee´ Dolphin) : Stringdans switch Java 8 (sortie en Mars 2014, nommee´ Spider) : interface fonctionnelle, m´ethode

c© Achref EL MOUELHI c©

Les methodes

Java

Remarques

Comme Java supporte la surcharge de methodes

Pas de parametres optionnels

Pas de valeur par defaut pour les parametres

H & H: Research and Training 90 / 90