:: Enseignements :: ESIPE :: E3INFO :: 2011-2012 :: 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.
-
Dans un nouveau répertoire (par exemple le sous-répertoire TD1
du répertoire Java), écrire le programme suivant :
public class HelloGroland {
public static void main(String[] args) {
System.out.println("Hello Groland");
}
}
Vous pouvez le recopier dans votre éditeur de texte préféré,
ou plus simplement le coller, et le sauvegarder sous le nom
HelloGroland.java
-
Compiler ce programme en utilisant le commande javac
puis vérifier que le fichier .class correspondant
existe bien.
TD1$ javac HelloGroland.java
-
Exécuter le programme avec la commande java
TD1$ java HelloGroland
On ne spécifie pas l'extension ".class": la machine virtuelle, démarrée par
la commande java, cherche d'elle même un fichier dont le nom est celui
qui est fourni en lui ajoutant le suffixe .class.
Exercice 2 - Afficher les arguments de la ligne de commande
On aimerait écrire une classe
PrintArgs qui affiche les arguments de la ligne de commande, comme ceci:
TD1$ 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 qui est passé en argument à la méthode principale
public static main(String[] args).
-
Dans un premier temps, afficher le premier argument
de la ligne de commande (dans notre exemple Voici).
Que ce 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
en sachant qu'en Java les tableaux possèdent un champ (un attribut)
length qui renvoie la taille du tableau.
-
Changer votre programme pour utiliser la syntaxe dite foreach
for(Type value:array)
Exercice 3 - Calculette simple
On souhaite maintenant écrire un programme qui prend un nombre entier sur l'entrée standard
et qui l'affiche.
Pour cela, on utilisera un objet
Scanner
et particulièrement sa méthode
nextInt().
Pour comprendre le programme, il est utile de regarder
la documentation disponible
ici, et même de
mettre les liens 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 entier et
affiche la somme de ceux-ci.
-
Afficher en plus de la somme, la différence, le produit,
le quotien et le reste.
Exercice 4 - Conversion de String en entier
On souhaite écrire un programme affichant la somme de plusieurs entiers
pris en paramètre sur la ligne de commande, comme dans l'exemple d'exécution suivant :
$ java Sum 15 5 231
entiers: 15 5 231
somme: 251
Ce programme va être décomposé en plusieurs fonctions :
-
Écrire une méthode qui prend un tableau stringArray de
chaînes de caractères en argument et renvoie un tableau
d'entiers de même taille contenant les entiers
issus des chaînes de caractères du tableau tabString.
La méthode statique parseInt(String s) de la
classe java.lang.Integer permet de récuperer la valeur
d'un entier représenté une chaîne de caractères: par exemple, int i = Integer.parseInt("123");
-
Que veut dire statique pour une méthode ?
-
Que se passe-t'il lorsqu'un mot pris
en argument n'est pas un nombre ?
-
Écrire une méthode qui prend un tableau
d'entiers en argument et renvoie la somme
de ceux-ci.
-
Écrire la méthode main qui utilise les
deux méthodes précédentes pour afficher
le tableau d'entiers ainsi que sa somme.
Il y a un petit piège pour afficher les tableaux
vous pouvez vous aider de la classe java.util.Arrays.
Exercice 5 - De C vers Java
Cet exemple a pour but de montrer les différences de performance
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).
-
Ecrire le programme (Pascal.java) équivalent en Java.
Pour une fois, servez-vous du copier/coller.
Compiler le programme. Exécuter le en mesurant le temps
(toujours avec time).
Comment peut-on expliquer la différence de vitesse ?
© Université de Marne-la-Vallée