Partie 1 : Java Developers Kit, mes premiers pas en Java 1 Le

Universit´e de Nice-Sophia Antipolis vendredi 9 septembre 2016
POLYTECH. PeiP2 Dur´ee: 3h
Algorithmique et Programamtion Java
Travaux Dirig´es – S´eance n. 1
Dans les exercices suivants, les notations sont donn´ees dans le langage Java.
Partie 1 : Java Developers Kit, mes premiers pas en Java
1 Le langage Java
´
El´ements de cours
La mise en œuvre couramment emploee pour le langage Java est l’interpr´etation. Pour
ex´ecuter un programme ´ecrit en Java, vous devrez tout d’abord le traduire, `a l’aide d’un
compilateur, en un programme emantiquement ´equivalent ´ecrit dans une forme interm´ediaire,
appel´ee bytecode java. Ce bytecode repr´esente le langage d’un ordinateur fictif, la machine
virtuelle Java (JVM). Vous pourrez ensuite ex´ecuter le programme en bytecode java sur la
machine virtuelle Java simul´ee `a l’aide d’un programme particulier appel´e interpr`ete.
Le compilateur Java que nous allons utiliser se nomme javac (pour java compiler ).
L’interpr´eteur se nomme java. Ces deux programmes font partie d’un ensemble d’outils nomm´e
JDK (Java Developpers Kit). La version que vous utiliserez cette ann´ee est 1.8.
Une expression suivie d’un point-virgule est appel´ee instruction. Par exemple a++; ou
System.out.println("Bonjour, mon ami !"); sont des instructions.
Lorsque l’on veut regrouper plusieurs instructions, on peut cr´eer ce que l’on appelle un ´enonc´e
compos´e, c’est-`a-dire un ensemble d’instructions comprises entre les accolades {et }.
exercice 1) Premier code en Java
a) Pour commencer, cr´eez un r´epertoire de travail Java/TD1.
b) Copiez le contenu du fichier Rien.java donn´e ci-dessous dans un fichier de nom en utilisant
l’´editeur Emacs.
/** Tout e app l ica t ion Java co m port e au minimum une classe . Si la
* classe se nomme Nom le fichier la con t e nan t doit im p ´era t iv e men t
* s a peler Nom . java . Cette classe R i e n ne fait a bso l ume n t rien !
*/
p u b l i c c l a s s Rien {
/* * T oute a p pl ica tion J ava c omp orte u ne p r oc ´e d ure < < m ai n > >. Il
* s ’ agit du p oin t d ’ entr ´e e d u p r ogra mme . C ette p ro c´e d ur e d oit
* n ´e ce ssa ire men t p o ss´ed er l ’en - t ^e te s u iva nt :
*/
p u b l i c s t a t i c v oi d mai n ( S tri ng [] a rgs ) {
//ici rien n’est fait
}
}
1
c) Compilez par la commande : javac Rien.java
d) erifiez qu’un fichier Rien.class correspondant au code qui sera interpr´et´e a ´et´e g´en´er´e : ls
e) Ex´ecutez votre programme : java Rien
f) Ajoutez l’instruction suivante entre les deux accolades du main :
System.out.println("Bonjour, mon ami !");
`
A pr´esent, vous devez avoir :
p u b l i c s t a t i c v oi d mai n ( Stri ng [] a rgs ) {
Sy ste m . out . pr int ln ( "Bon jour , mon ami ! " );
}
g) Recompilez et ex´ecutez votre programme.
h) Modifiez votre programme pour qu’il vous appelle par votre pr´enom.
Vous voici prˆet `a explorer le monde de l’algorithmique et de la programmation !
`
A pr´esent, nous allons vous donner quelques armes pour pouvoir cr´eer bientˆot tout(e) seul(e)
vos propres programmes.
2
Partie 2 : Types de donn´ees en Java
´
El´ements de cours
Un type est un ensemble de valeurs poss´edant des caract´eristiques communes, g´en´eralement
efinies par la nature des op´erations que l’on peut leur appliquer [Livre aide-m´emoire de java
p. 6].
Dans vos programmes, vous aurez besoin de m´emoriser des donn´ees qui pourront ˆetre de
diff´erents types : des chaˆınes de caract`eres, des entiers, des r´eels, des structures de donn´ees. Vous
aurez ´egalement besoin d’organiser vos traitements en fonction du type de ces donn´ees. Par
exemple, on sait additionner deux entiers,affecter une note `a un ´el`eve. Par contre, additionner
deux ´el`eves n’a pas de sens.
Les langages dits fortement typ´es forcent `a expliciter le type des donn´ees manipul´ees. `
A
partir de cette information, des outils adapt´es en particulier les compilateurs v´erifient que
vous n’avez pas commis d’erreur de type (additionner des choux et des ch`evres) et que les
op´erations que vous utilisez pour manipuler ces donn´ees existent bien (un choux ne mange pas
des ch`evres). De plus cette information peut ´egalement ˆetre utilis´ee pour minimiser la place des
donn´ees occup´ee en m´emoire.
Les types en Java
Le langage Java reconnaˆıt plusieurs types de donn´ees permettant de diff´erencier les infor-
mations utilis´ees par un programme.
On distingue deux grandes familles de types de donn´ees en Java :
les types ´el´ementaires ou primitifs,
les types structur´es ou objet.
Les types de donn´ees ´el´ementaires regroupent les valeurs num´eriques enti`eres ou d´ecimales,
les caract`eres Unicode ainsi que les valeurs bool´eennes true et false.
Type Signification Taille (en octets) Plage de valeurs accept´ees
char Caract`ere 2 jeu de caract`eres Unicode
(1114112 caract`eres dans Unicode 4.1.0)
byte Entier tr`es court 1 -128 `a 127
short Entier court 2 -32768 `a 32767
int Entier 4 -2 147 483 648 `a 2 147 483 647
long Entier long 8 -9223372036854775808 `a 9223372036854775807
float flottant (r´eel) 4 -1.4*10-45 `a 3.4*1038
double flottant double 8 4.9*10-324 `a 1.7*10308
boolean bool´een 1 true ou false
2 Nombres
exercice 2) Indiquez les notations de constantes valides et le type des nombres suivants :
3
0.31 +273.3 0.005e+3 0x10
010 .389 15 0x5e-4
33.75 1.5+2 3,250 .E1
1234 3E5 08 10e-4
0X1a2 0037 1e2768 0x1A2
3 Types
exercice 3) Indiquez le type de chacune des constantes donn´ees ici
100 true ’a’ 2
0x10 .23 "nom" ’2’
"a" ’\u0041’ \n’ "2"
4 D´eclaration de variables
exercice 4) Indiquez les d´eclarations valides
int i = 0; short j; long l1, l2 = 0, l3;
short j = 60000; int i = 0x10; char c = ’a’;
char c = a; char c = 0x41; char c = ’\u0041’;
boolean b = true; boolean b = 0; real r = 0.1;
float f = 0.1; double d = 0.1; double d = 0;
float f = 0x10; double d = .1; int i = ’a’;
5 D´eclaration de constantes
exercice 5) Qu’est-ce qui ne va pas ?
final double pi;
pi = 3.1415926535897931;
final float e = 2.7182818284590451;
pi = e;
6 Expressions
int i, j, k;
double x, y, z;
char c;
boolean b;
exercice 6) ´
Etant donn´ees les d´eclarations de variables ci-dessus, indiquez le type de chacune
des expressions suivantes :
4
x 2 i = j i == j
x + 2.0 x + 2 i + 2 x + i
x / 2 x / 2.0 i / 2 i / 2.0
x<y i%j+y i/j+y i>j>k
i&&b i==j&&b i>j&&k>j x+y*i
i = c x = (int) y c = (char) ((int) c + 1) i++
exercice 7) ´
Ecrivez en Java les trois expressions suivantes
a2c+a
bc +c
d+e
f
b+b24ac
2a
1
a+1
b
c+d
7 Un programme travaille pour vous
Voici quelques exemples d’´enonc´es utiles `a cet exercice.
signification ´enonc´e exemple explication
Affectation variable = valeur ; ˆage = 19 ; La variable ˆage prend la valeur 19
Lecture d’un entier StdInput.readlnInt() ; angle = StdInput.readlnInt() ; La variable angle re¸coit la valeur
lue au clavier.
Calcul du Sinus, Math.sin(Entier) ; monSinus = Math.sin(angle) ; La variable monSinus re¸coit le sinus
de la valeur de la variable angle
Calcul du cosinus, Math.cos(Entier) ; monCos = Math.cos(angle) ; La variable monCos re¸coit le cosinus
de la valeur de la variable angle
Soit le code suivant extrait de [Algo-Prog] :
/** La classe Sinus c alcu l e et a f f iche sur la sortie s tan d a rd
* le s inus d ’ une d onn´ee l ue s ur l ’ entr ´e e s tan dard
*/
import ja va . io . *;
class Sinu s {
p u b l i c s t a t i c v o i d main ( S trin g [] a rgs ) throws IOException
{
//On lui annonce que on va attendre un entier
Sy stem . out . pri nt (" D onn e moi un enti er ");
//il existe une donn´ee `a lire sur l’entr´ee standard
Sy ste m . out . pr int ln ( Mat h . sin ( St dIn put . rea dl nIn t ( )));
//la valeur du sinus de l’entier lu est ´ecrite sur la sortie standard
}//fin main
}//fin classe Sinus
exercice 8) Calculer le sinus d’un entier lu au clavier
a) Pour commencer, r´ecup´erez le code StdInput.java `a l’adresse suivante : :
http ://elec.polytech.unice.fr/vg/fr/livres/algojava.
5
Pour cela, cliquez sur le lien, puis enregistrez la cible sous votre r´epertoire de TP de pro-
grammation.
Ce code vous permettra de saisir des donn´ees de type ´el´ementaire au clavier.
b) Copiez le code de la classe Sinus dans un fichier de nom Sinus.java
c) Compilez et ex´ecutez ce code : Que fait-il ?
Nous allons `a pr´esent le modifier.
d) eclarer une variable de type entier, puis affecter `a cette variable la valeur d’un entier lu
au clavier.
e) Affichez le sinus puis le cosinus de cet entier.
f) Variantes pour les plus avanc´es :
saisir deux entiers et affichez la somme de leur sinus.
8 Le programme Somme d’argent
exercice 9) ´
Ecrivez le programme SommedArgent.
Il s’agit de saisir le montant (multiple de 10) du somme d’argent en euros lue sur l’entr´ee
standard et de le d´ecomposer en billets de 500, 200, 100, 50, et 10 euros. On utilisera les
op´erateurs de division enti`ere (/) et modulo (%). Prenez soin d’indiquer les anec´edents et les
cons´equents des ´enonc´es de votre application.
import ja va . io . *;
/* * S o mme dAr gen t s ai sit u ne s omme d ’ a rgent ( m u lti ple d e 10) s ur l ’ e ntr´ee
* stan d ard et la d ´e c omp o se en n ombre de bil l e ts de 500 , 200 , 100 , 50, 20
* et 10 euros . Le r ´e s ulta t est af f i ch´e sur la s o r tie s t a nda r d
*/
p u b l i c c l a s s SommedArgent {
p u b l i c s t a t i c v o i d main ( S trin g [] a rgs ) throws IOException {
int capital , //somme totale initiale
reste ,
b500 , //nombre de billets de 500 euros
b200 , //nombre de billets de 200 euros
b100 , //nombre de billets de 100 euros
b50 , //nombre de billets de 50 euros
b10 ; //nombre de billets de 10 euros
//lire sur l’entr´ee standard la somme d’argent
Sy ste m . out . pri nt ( " E nt rez un e somme d argent : " );
cap it al = ...
...
}
}//fin classe SommedArgent
6
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !