You are on page 1of 40

II.

- Les Fondamentaux de Java

Gerald
Monard

Chimie et Physique informatiques


L3 Physique et Chimie

Concepts fondamentaux
ements

Un programme Java se compose del


de base comme :
les expressions
les instructions
les blocs dinstructions

les blocs de methodes


les blocs de classes
etc.

Constantes et variables
Une constante est un valeur non modifiable. Une variable peut

contenir des valeurs differentes


1
2

i = 1;
i = 10;

1 et 10 sont des constantes. i est une variable qui prend ici


successivement les valeurs 1 et 10.
= est loperateur daffectation.

Expressions
Une expression est une combinaison de constantes, de variables et

dans des calculs mathematiques.

doperateurs
utilises
1

(2+3)10

autres exemples:
1
2
3

6
i
6+ i

Operateurs
arithmetiques
operateurs

Une expression peut contenir des symboles appeles

arithmetiques
en langage Java.

Liste des operateurs:


+

Addition

Soustraction

Multiplication

Division

Modulo


Les operateurs
de multiplication et de division sont prioritaires par
rapport a` laddition et a` la soustraction.
on peut utiliser les parentheses
`
Pour modifier lordre de priorite,
().
1

2+310

est different
de
1

(2+3)10

Instructions

En langage Java, une instruction est une ligne executable,


terminee
par un point-virgule.
Exemple :
1
2
3

i = 1;
System . o u t . p r i n t f ( " Hello a tous\n" ) ;
System . e x i t ( 0 ) ; / / f i n normal d un programme

sont des instructions.

Blocs dinstructions

en blocs compris entre


Les instructions peuvent etre
regroupees
deux accolades : lune dite douverture ({), lautre dite de fermeture
(}). Un bloc dinstructions est traite comme une instruction simple par
le compilateur Java.
1
2
3
4

{
i = 2;
j = i 10;
}


Declarations

Il faut declarer
toutes les variables avant de sen servir. Une

declaration
precise
un type et comporte une liste de une ou plusieurs
variables de ce type. Par exemple :
1
2
3

i n t mini , maxi , i n t e r v a l l e ;
char c ;
/ on peut m e t t r e un commentaire pour i n d i q u e r
a` q u o i s e r t l a v a r i a b l e /

On peut egalement
initialiser les variables au moment ou` on les

declare.
Si le nom de variable est suivi du signe = et dune
expression, cette expression donne la valeur initiale de la variable.
1
2
3

i n t i = 0;
double eps = 1 . 0 e 5;
char a = a ;

Typage
est essentiel car il permet dindiquer au
Le typage des donnees

compilateur comment stocker en memoire


les variables ainsi que la
facon dont les variables vont pouvoir interagir.
Par exemple:
1
2
3
4
5
6

i n t i = 10;
i n t j = 3;
double x = 1 0 . ;
double y = 3 . ;
System . o u t . p r i n t l n ( i / j ) ;
System . o u t . p r i n t l n ( x / y ) ;

/ / d i v i s i o n dans l e s e n t i e r s
/ / d i v i s i o n dans l e s r e e l s

Noms et types de donnees


` peu de types de base :
Le langage Java comporte tres
char, int (byte, short, long), float , double, boolean.

Type int
Le mot-cle int correspond au type entier applicable aux variables. Un
nombre entier est une valeur sans partie decimale. En consequence,
une division enti`ere a comme effet de tronquer le resultat par rapport
a` la valeur decimale.
Typage

taille (octets)

valeur mini.

valeur maxi.

int

-2 147 483 648

2 147 483 647

short

-32768

32767

byte

-128

127

long

-9 223 372 036 854 775 808

-9 223 372 036 854 775 807

Type float

A la difference
dun nombre entier, un nombre a` virgule flottante

de la partie entiere
` par une
comprend une partie decimale
dissociee
virgule. En Java, le type float definit les nombres decimaux, aussi
appeles nombres reels. En general, la precision du type float est de
sept chiffres apr`es la virgule.

Type double

En Java, un nombre a` virgule flottante peut aussi etre


de type double.
En general, la precision du type double est de quinze chiffres apr`es la
virgule.
+ utilisez double de preference

Notation scientifique

a` laide de la notation
Les valeurs decimales
peuvent etre
exprimees
scientifique.
Ainsi un nombre se composera dune mantisse et dun exposant,

indifferemment

separ
es
par e ou E.

Ainsi, 5000 peut secrire


5e3, -300 est egal
a` -3e2, 0.0025 a` 2.5e-3.

Type char
Un objet de type char correspond a` un e lement du jeu de caract`eres
utilise par lordinateur.
Un caract`ere compris entre deux guillemets simples () sappelle une
constante caract`eres. Par exemple, a, A, b, 7 sont des
constantes caract`eres du jeu de caract`eres ASCII.
Il existe un correspondance entre chaque caract`ere et un code
numerique unique (compris entre 0 et 255). Par exemple, les
caract`eres A, a, B, et b ont respectivement comme valeur
numerique unique 65, 97, 66 et 98. Ainsi les deux instructions
daffectation suivantes sont e quivalentes :
1
2
3

char x ;
x = A ;
x = 65;

` dechappement

En langage Java, le caractere


(\) est toujours suivi
` special.

dun caractere
Par exemple \n correspond au retour chariot
et au passage a` une nouvelle ligne.
Exemple :
Caract`ere

Description

\n

Retour chariot : passage a` une nouvelle ligne

\t

Tabulation : place le curseur au niveau


de la tabulation suivante

\r

Caract`ere de debut de ligne :


replace le curseur en debut de ligne

\\

ins`ere le caract`ere \

\"

ins`ere le caract`ere "


etc.


La methode
System.out.printf

La methode
System.out.printf prend comme arguments une chane
de caract`ere pouvant contenir des indicateurs de formats.
Par exemple, dans :
1

System . out . p r i n t f ( " Voici lentier deux : %d\n" , 2 ) ;

Lindicateur de format %d permet dafficher lentier 2.


De mani`ere generale, System.out.printf soccupent de mettre en forme
les donnees en sortie. On appelle cela le formattage des donnees.

Syntaxe de System.out.printf
1

System . o u t . p r i n t f ( S t r i n g format ,

...);

Largument String format contient deux types dobjets : des caract`eres


ordinaires et des indicateurs de format.

Les indicateurs de format commencent par % et se terminent par un


caract`ere de conversion.
Entre les deux, on peut placer dans lordre :
des drapeaux
- cadre largument a` gauche dans son champ
dimpression
+ imprime systematiquement le signe du nombre
si le premier caract`ere nest pas un signe, place un
espace au debut
0 pour les conversions numeriques, compl`ete le
debut du champ par des zeros
un nombre, qui precisent la largeur minimum du champ
dimpression
un point, qui separe la largeur du champ de la precision desiree
un nombre qui donne la precision (voir exemple) que ce soit
pour une chane, un entier, un flottant (f, e, E, g, ou G)

Indicateurs

Description

%d %i

Format entier

%c

`
Format caractere

%f

Format decimal
(virgule flottante)

%e %E

Format de notation scientifique

%g

utilise %f ou %e selon la longueur de la valeur decimale

%G

utilise %f ou %E selon la longueur de la valeur decimale

%s

`
Format chane de caractere

%%

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

p u b l i c c l a s s Main {
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] args ) {
System . o u t . p r i n t f ( "%d\n" , 1 ) ;
System . o u t . p r i n t f ( "%f\n" , 0 . 1 0 ) ;
System . o u t . p r i n t f ( "%e\n" , 0 . 1 0 ) ;
System . o u t . p r i n t f ( "%E\n" , 0 . 1 0 ) ;
System . o u t . p r i n t f ( "%g\n" , 0 . 1 0 ) ;
System . o u t . p r i n t f ( "%G\n" , 0 . 0 0 0 0 0 1 0 ) ;
System . o u t .
System . o u t .
System . o u t .
System . o u t .
System . o u t .
System . o u t .
System . o u t .

printf
printf
printf
printf
printf
printf
printf

( " 12345 12345 12345\ n" ) ;


( "%5d %-5d %d\n" , 1 , 1 , 1 ) ;
( "%5d %-5d %d\n" , 10 , 10 , 1 0 ) ;
( "%5d %-5d % 5d\n" , 10, 10, 10);
( "%+5d %-5d % 5d\n" , 10 , 10 , 1 0 ) ;
( "%5d %-5d %d\n" , 1000 , 1000 , 1 0 0 0 ) ;
( "%5d %-5d %d\n" , 1000000 , 1000000 ,
1000000);

System . o u t . p r i n t f ( " %10.4 f\n" , 1 2 3 . 4 5 6 7 8 9 ) ;


System . o u t . p r i n t f ( "%s\n" , "toto" ) ;
System . o u t . p r i n t f ( "%10s\n" , "toto" ) ;
System . o u t . p r i n t f ( "% -10s\n" , "toto" ) ;
}
}


Operateurs

En plus de operateurs
standards vus precedemment
(+, -, *, /, %) le
`

:
langage Java possede
dautres operateurs
plus evolu
es

des operateurs
arithmetiques
daffectation

des operateurs
unaires

ementation

des operateurs
dincrementation
et de decr

des operateurs
relationnels

des operateurs
de conversion de type

Operateurs
arithmetiques
daffectation

Cest loperateur
=, a` ne pas confondre avec le = mathematique.
Par exemple, a=5 signifie que lon affecte a` la variable a la valeur 5.

On ne peut pas ecrire


en langage Java 5=a.

Il existe en langage Java des operateurs


doperations-affectations
qui
es.

regroupe les deux propriet

Ce sont les operateurs


+=, -=, *=, /=, et %=.
Ainsi x+=y e quivant a` x=x+y, etc.


Operateurs
unaires

Un operateur
unaire en Java est loperateur
- : moins, qui transforme

une valeur en son oppose.


1
2
3
4

x = 1.234;
y = x ;
z = x y ; / e q u i v a l e n t a` z = x (y ) ;
e q u i v a l e n t a` z = x + y ; /

ementation

Operateurs
dincrementation
et de decr
Le langage Java propose une solution simple au cas ou` lon veut

ementer

` : loperateur

incrementer
ou decr
de 1 une valeur entiere
++

ou loperateur
--.

Il existe deux facons en Java dincrementer


(respectivement de
ementer)

decr
1 a` une variable x : x++ (resp. x--) ou ++x (resp. --x).

Les instructions suivantes sont equivalentes


:
1
2
3
4

x = x + 1;
x += 1 ;
x ++;
++x ;

Dans le cas de lassociation des operateurs


++ ou -- et une affection,

on distingue --x qui correspond a` une pre-incr


ementation

(lincrementation
a lieu avant laffectation), de x++ qui correspond a`

` laffectation)..
une post-incrementation
(lincrementation
a lieu apres

Exemple :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

p u b l i c c l a s s Main
{
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] args )
{
int a,b,c ,d, result ;
a = 1;
b = 1;
c = 1;
d = 1;
r e s u l t = a ++;
System . o u t . p r i n t f ( " Resultat de a++
r e s u l t = ++b ;
System . o u t . p r i n t f ( " Resultat de ++b
r e s u l t = c ;
System . o u t . p r i n t f ( " Resultat de c-r e s u l t = d ;
System . o u t . p r i n t f ( " Resultat de --d
}
}

: %d\n" , r e s u l t ) ;
: %d\n" , r e s u l t ) ;
: %d\n" , r e s u l t ) ;
: %d\n" , r e s u l t ) ;


Operateurs
de conversion de types
Il est possible de convertir en Java un type en un autre de type en
eder

faisant prec
loperande
de loperateur
de conversion.
erale

La syntaxe gen
est
1

( type ) x

cibles et x est une variable


ou` type correspond au type de donnees
(ou une expression) contenant la valeur du type en cours.
Par exemple ( float ) 5 convertit lentier 5 en nombre decimal de type
float .

Exemple :
1
2
3
4
5
6
7
8
9
10
11
12

p u b l i c c l a s s Main
{
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] args )
{
int x, y;
x = 7;
y = 5;
System . o u t . p r i n t f ( "x = %d et y = %d\n" , x , y ) ;
System . o u t . p r i n t f ( "x / y = %d\n" , x / y ) ;
System . o u t . p r i n t f ( "( float ) x/y = %f\n" , ( f l o a t ) x / y ) ;
}
}


Methodes
(de classe)

Les methodes
(ou fonctions) permettent de regrouper des instructions

a` volonte.

Java en une unite simple qui peut etre


reutilis
ee
1
2
3
4
5
6

s t a t i c i n t add entiers ( i n t x , i n t y )
{
int resultat ;
r e s u l t a t = x+y ;
return ( resultat ) ;
}

En java, il existe deux types de methodes:

les methodes
dobjets

les methodes
de classes.

en utilisant le mot-cle static.


Les methodes
de classes sont declar
es


Nom dune methode

Le nom dune methode


doit etre
le plus explicite possible afin

declaircir
lutilisateur sur le traitement realis
e par la methode.

Type dune methode

par
Le type dune methode
correspond au type de la valeur renvoyee

la methode
(dans lexemple, add entiers est de type int ).
Si une methode ne renvoie aucune donnee, alors elle est de type void.
1
2
3
4
5

void a f f i c h e ( i n t a , f l o a t y )
{
p r i n t f ( " Voici un entier : %d\n" , a ) ;
p r i n t f ( " Voici un flottant : %f\n" , y ) ;
}


Arguments dune methode

Il est parfois necessaire


de transmettre des informations pour que la

methode
les traite lors de son execution.
Ces informations sappellent
`
` le
les arguments. Largument figure entre parentheses
juste apres

nom de la methode
qui va lexploiter.

Les
Le nombre darguments varie selon le traitement realis
e.

par des
arguments transmis a` une meme
fonction sont separ
es
virgules.

`
Si une methode
ne requiert pas darguments, les parentheses
sont
alors vides.

Debut
et fin dune methode

Les accolades douverture et de fermeture marquent le debut


et la fin

dune methode.

Elles permettent aussi de delimiter


un bloc dinstructions. En fait, ces

marques indiquent que la sequence


contient plusieurs instructions.

Corps dune methode


Il sagit de lemplacement compris entre les deux accolades et

contenant declarations
de variables et instructions qui sexecutent

sequentiellement
lors de lappel de la methode.

Appel dune methode

Les methodes
ne representent
que des definitions
informatiques
ees
que si on les appelle.
dinstructions a` traiter, elles ne sont execut

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

p u b l i c c l a s s Main {
s t a t i c v o i d a f f i c h e ( i n t a , double y ) {
System . o u t . p r i n t f ( " Voici un entier : %d\n" , a ) ;
System . o u t . p r i n t f ( " Voici un flottant : %f\n" , y ) ;
}
s t a t i c i n t add entiers ( i n t x , i n t y ) {
int resultat ;
r e s u l t a t = x+y ;
return ( resultat ) ;
}
public
int
int
int

s t a t i c v o i d main ( S t r i n g [ ] args ) {
a;
b;
c;

a = 5;
b = 7;
c = add entiers (a , b ) ;
affiche (c ,3.56);
a = add entiers (c , a ) ;
}
}

Booleens
et operations
sur les booleens

En langage Java, il existe le type boolean qui permet de representer

des booleens.
Une variable de type booleen
ne peut posseder
que
deux valeurs: true ou false.

On peut associer au type booleen


des operateurs
:

Operateur

Description

||

ou logique

&&

et logique

non logique

1
2
3
4
5
6
7
8
9
10
11
12

p u b l i c c l a s s Main
{
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] args )
{
boolean v = t r u e ;
boolean f = f a l s e ;
System . o u t . p r i n t f ( "vrai ou faux : v
System . o u t . p r i n t f ( "vrai et faux : v
System . o u t . p r i n t f ( "non vrai
:
System . o u t . p r i n t f ( "non faux
:
}
}

|| f : %b\n" ,
&& f : %b\n" ,
!v
: %b\n" ,
!f
: %b\n" ,

v | | f );
v && f ) ;
!v);
! f );


De plus il existe des operateurs
de comparaison qui permettent de
comparer deux expressions a` la fois :

Operateur

Description

==

egal
a`

!=

non egal
a`

>

superieur
a`

<

inferieur
a`

>=

superieur
ou egal
a`

<=

inferieur
ou egal
a`

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

p u b l i c c l a s s Main
{
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] args )
{
int x, y;
double z ;
x = 7;
y = 25;
z = 24.46;
System . o u t . p r i n t f ( " x = %d, y = %d, z = %f\n" , x , y , z ) ;
System . o u t . p r i n t f ( " x >= y : %b\n" , x >= y ) ;
System . o u t . p r i n t f ( " x == y : %b\n" , x == y ) ;
System . o u t . p r i n t f ( " x < z : %b\n" , x < z ) ;
System . o u t . p r i n t f ( " y > z : %b\n" , y > z ) ;
System . o u t . p r i n t f ( " x != y - 18 : %b\n" , x ! = y 1 8 ) ;
System . o u t . p r i n t f ( " x + y != z : %b\n" , x + y ! = z ) ;
}
}

Instructions conditionnelles

Il est possible en Java (comme dans tous les langages evolu


es)

dexecuter
des instructions sous conditions.
dun nombre x ne peut se calculer que
Par exemple, la racine carree
il est donc
si x est positif. Avant tout calcul dune racine carree,

necessaire
de verifier
la positivite de la variable.
Cela se fait en Java en utilisant
1
2

i f ( expression conditionnelle )
instruction ;

1
2
3
4
5
6
7
8
9
10
11
12
13

p u b l i c c l a s s Main
{
p u b l i c s t a t i c v o i d main ( S t r i n g [ ] args )
{
float x;
x = 5;
i f ( x >= 0 ) {
System . o u t . p r i n t f ( "La racine carr
e e de %f vaut %f\n" ,
x , Math . s q r t ( x ) ) ;
}
}
}

Souvent, une condition peut impliquer une action ou une autre :


si ... alors ... sinon ....
Cela se traduit en Java par :
1
2
3
4

i f ( expression conditionnelle )
instruction1 ;
else
instruction2 ;

` le if , il faut penser a`
Attention : si il y a plusieurs instructions apres
introduire des { }.
Si expression_conditionnelle vaut true alors on execute
instruction1, sinon (dans le cas ou expression_conditionnelle
vaut false) on execute instruction2.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

/ c a l c u l d une v a l e u r absolue /
s t a t i c double v a l e u r a b s o l u e ( double x )
{
double f a b s ;
/ s i x e s t p o s i t i f , l a v a l e u r absolue de x e s t x /
/ s i x e s t n e g a t i f , l a v a l e u r absolue de x e s t x /
i f ( x >= 0 ) {
fabs = x ;
} else {
f a b s = x ;
}
r e t u r n ( fabs ) ;
}

Lensemble if (...) inst1 else inst2 est percue comme une seule
instruction. Il peut donc e tre insere dans un ensemble
if (...) inst1 else inst2 de mani`ere a` former des if imbriques.
Ex. : la suite de Fibonnacci (Un = Un1 + Un2 avec U0 = 0 et U1 = 1) :
1
2
3
4
5
6
7
8
9
10
11
12

s t a t i c int fibo ( int n)


{
int u n ;
i f ( n == 0 ) {
u n = 0;
} e l s e i f ( n == 1 ) {
u n = 1;
} else {
u n = fibo (n 1) + fibo (n 2 ) ;
}
return ( u n ) ;
}

You might also like