:: Enseignements :: Licence :: L3 :: 2021-2022 :: Programmation Objet avec Java ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) |
Premiers pas en Java, chaînes de caractères, tableaux, boucles
|
Exercice 1 - Hello Groland
On rappelle qu'en Java chaque classe publique
doit être définie dans un fichier qui lui est propre.
Le nom du fichier doit être le nom de la classe qu'il contient,
auquel on ajoute le suffixe .java.
Les noms des classes doivent être constitués de mots accolés
dont la première lettre est une majuscule.
Dans un premier temps nous allons écrire des petits programmes
permettant de se familiariser avec le compilateur,
la machine virtuelle et les méthodes.
-
Écrire le programme suivant :
public class HelloGroland {
public static void main(String[] args) {
System.out.println("Hello Groland");
}
}
dans votre éditeur de texte préféré et sauvegarder celui-ci
sous le nom HelloGroland.java
-
Compiler le programme en utilisant le commande javac
puis vérifier que le fichier .class correspondant
existe bien.
javac HelloGroland.java
-
Exécuter le programme avec la commande java
java HelloGroland
On ne met pas ".class" parce que la machine virtuelle le rajoute
toute seule.
Note : la commande
java est aussi capable de compiler en mémoire si on lui indique
un seul fichier simple, comme par exemple
java HelloGrand.java. Dans ce cas, le fichier
.class ne sera pas visible
sur le disque car la compilation à lieu uniquement en mémoire.
Exercice 2 - Afficher les arguments de la ligne de commande
Écrire une classe
PrintArgs qui
affiche les arguments de la ligne de commande.
$ java PrintArgs Voici des arguments
Voici
des
arguments
Les arguments de la ligne de commande sont stockés dans
le tableau de chaînes de caractères passé en
argument à la méthode :
public static void main(String[] args).
-
Dans un premier temps, afficher le premier argument
de la ligne de commande (dans notre exemple Voici).
Que se passe-t-il si l'on ne passe pas d'argument lors
de l'exécution du programme ?
-
Écrire une boucle affichant le contenu du tableau, sachant qu'en Java, les tableaux possèdent un champ (un attribut)
length qui correspond à la taille du tableau.
-
Changer votre programme pour utiliser la syntaxe dite du 'for deux points', c'est à dire
for(Type value: array)
Exercice 3 - Calculette simple
Écrire un programme prenant un nombre sur l'entrée standard
et affichant celui-ci.
Pour cela, on utilisera un objet
Scanner
et particulièrement sa méthode
nextInt().
import java.util.Scanner;
public class Calc {
public static void main(String[] args) {
Scanner scanner;
scanner = new Scanner(System.in);
int value;
value = scanner.nextInt();
// completer ici
}
}
Pour comprendre le programme, il est utile de regarder la documentation
disponible. Il est fortement conseillé de mettre ce lien en
bookmark (signet, favoris, etc.)
-
Recopier le programme précédent et le compléter pour
qu'il affiche le nombre saisi par l'utilisateur.
-
Indiquer dans le programme où sont les variables
et quel est leur type associé.
Modifier le programme pour déclarer et initialiser
les variables en une seule ligne.
-
Pourquoi nextInt() n'est pas une fonction ?
Qu'est nextInt() alors ?
-
Expliquer la ligne :
import java.util.Scanner;
-
Modifier le programme pour qu'il demande deux entiers et
affiche la somme de ceux-ci.
-
Afficher en plus de la somme, la différence, le produit,
le quotient et le reste.
Exercice 4 - Record et conversion de String en entier
On souhaite écrire un programme calculant la distance entre deux points,
ou plus exactement la distance entre un point et l'origine, i.e. le point de coordonnées (0,0).
Voici un exemple d'exécution que l'on souhaite obtenir :
$ java Point 3 4
x=3, y=4
Point[x=3, y=4]
dist = 5.0
-
Dans un premier temps, créer un record Point (dans
un fichier Point.java) avec deux composants x et
y, tous les deux de type int.
Quelle doit être la ligne de commande pour compiler le fichier Point.java ?
-
Écrire une méthode main qui prend les entiers x et y
sur la ligne de commande (3 et 4 dans l'exemple ci-dessus),
les convertit en valeurs entières et affiche celles-ci
(la ligne x=3, y=4 dans l'exemple).
Note : La méthode statique parseInt(String s) de la
classe java.lang.Integer permet de récupérer la valeur
d'un entier stockée dans une chaîne de caractères.
-
Que veut dire ``static'' pour une méthode ?
-
Que se passe-t-il lorsque l'un des arguments n'est pas un nombre ?
-
Dans le main, ajouter des instructions pour
créer un instance du record Point, avec le deux entiers x et y
et afficher celui-ci.
-
On souhaite ajouter au record Point une méthode d'instance (une méthode non statique) nommée distance qui calcule la distance entre deux points sous forme d'un nombre
à virgule flottante.
Quels sont les paramètres et le type de retour de la méthode distance ?
Sachant que calculer la distance entre deux points est équivalent à utiliser Pythagore sur
la distance en x et la distance en y entre les deux points et qu'il existe une méthode
statique Math.sqrt qui renvoie la racine carrée d'un nombre, écrire la méthode
distance et afficher dans le main la distance entre le point (x, y)
et un point à l'origine (0, 0).
Exercice 5 - De C vers Java
Cet exemple a pour but de montrer les différences de performances
entre un programme en C et le même en Java.
-
Compiler (gcc pascal.c) et exécuter le
programme a.out en demandant au système
le temps d'exécution du programme. (time a.out).
-
Écrire le programme (Pascal.java) équivalent en Java.
Pour une fois, servez-vous du copier/coller.
Compiler le programme puis l'exécuter en mesurant le temps
(toujours avec time).
Comment peut-on expliquer la différence de vitesse ?
© Université de Marne-la-Vallée