Le but de cette séance est de découvrir la boucle de
développement d'un programme Java.
À savoir, édition (par Emacs), compilation (par
la commande javac) et exécution (par la commande java).
Les programmes étant rarement exempts d'erreurs, cette boucle est
itérée de nombreuses fois dans une séance. Dès lors, savoir utiliser
les outils accélère les choses.
En cas de problème Unix, se référer aux chargés de TP,
aux premières sections du TP précedent, ou
au document Unix de base
Pour pouvoir faire ce TD, il y a juste quelques notions à connaître.
Ceux qui se sentent à l'aise avec Unix et Emacs
peuvent aller rapidement à la section 3 et commencer les
exercices proprement programmatoires.
2 |
Compilation et exécution de programmes Java |
|
Il s'agit de se raffraichir un peu la mémoire.
Les programmes Java sont contenus dans un fichier d'extension
.java, comme par exemple
Hello.java.
On compile Hello.java par la commande
javac Hello.java. La compilation produit un fichier
Hello.class. On exécute ensuite le programme par la commande
java Hello. En termes informatiques Hello.java est le
source du programme, tandis que Hello.class en est le code
objet.
Petit exercice 1 :
Récupérer (Bouton de droite !), compiler et exécuter le programme Hello.java
(inutile de chercher à le comprendre à ce stade).
N'oubliez pas de vous faciliter la vie en utilisant
Control-p (commande précédente), Control-n (commande
suivante), Tab (complétion automatique) etc. (édition de la
ligne de commande) dans la fenêtre de commande, au lieu de tout retaper.
Pas de solution, pour cet exercice facile.
Pour créer, puis modifier un fichier
on utilise l'éditeur de
texte Emacs,
décrit lors du TP-précedent, et
documenté par le mode d'emploi raisonné d'Emacs.
Outre qu'il est indispensable d'éditer les programmes, l'utilisation
d'Emacs offre l'avantage de permettre de bien
présenter ses programmes, à condition que le fichier aie l'extension
.java.
Un bon entraînement est encore de vous fournir un programme qui ne
compile pas : Bug.java.
Une tentative de compiler Bug.java échoue :
maranget@manche ~/TD/TD-01 > javac Bug.java
Bug.java:4: ';' expected.
System.out.println("je suis buggé !")
^
1 error
Le compilateur Java signale une erreur à la quatrième ligne du
programme et refuse de produire Bug.class :
maranget@manche ~/TD/TD-01 > ls
Bug.java Hello.class Hello.java
Pour corriger Bug.java, il est à peine utile de connaître
Java, car le message du compilateur est assez explicite.
Disons tout de même que les programmes simples que vous écrirez auront
la même structure. Ils
se composeront d'une classe unique (ici Bug) qui contiendra
des fonctions (des méthodes statiques de la classe en terminologie
Java, introduites par le mot-clé static).
La fonction main devra toujours être présente et visible de
tous (mot-clé public).
Elle ne renvoie aucun résultat (mot-clé void) et prend un
argument (ici appelé args), de type tableau de chaîne
(type String []), ouf.
Petit exercice 2 : Corriger Bug.java
à partir du message d'erreur du
compilateur et avec
Emacs, jusqu'à réussir à
le compiler.
Ensuite tenter de l'exécuter, il y a une deuxième erreur !
La corriger, compiler, exécuter. Bon, voici une solution.
3.1 |
Utilisation vraiment avancée |
|
Il est facile de trouver la quatrième ligne du fichier
Bug.java qui compte six lignes.
Dans des programmes qui comptent plus de lignes cette opération est
malcommode. Heureusement on peut faire faire ce travail par
Emacs.
Il faut toutefois au préalable (et je le regrette, croyez moi),
configurer un peu emacs. Il suffit de mettre ce fichier
.emacs dans votre répertoire personnel
et pas ailleurs.
Si vous avez déjà un fichier .emacs et que vous savez vous
débrouiller avec, c'est la ligne
(global-set-key "\C-x\C-x" 'compile)
Qui est à mettre à la fin de votre .emacs.
Sinon, remplacer votre .emacs par le nôtre.
Ensuite lancez Emacs sur le source de
Bug.java :
maranget@manche ~/TD/TD-01 > emacs Bug.java &
Une fenêtre apparaît.
Dans cette fenêtre, tapez Control-x Control-x
.
vous obtenez quelque chose de ce genre :
Éditez la commande de compilation pour mettre la vôtre à la
place :
Puis tapez la touche Return. La compilation se lance, et échoue :
Vous pouvez maintenant toucher le bénéfice de toutes ces
opérations en tapant Control-x `
(accent grave).
Le curseur se positionne tout seul à l'endroit de l'erreur :
Vous pouvez ensuite corriger l'erreur directement. Si il y a d'autres
erreurs, Control-x `
vous positionnera ensuite sur l'erreur
suivante.
Petit exercice 3 :
Compiler l'autre programme buggé Tri.java.
Ce programme est le tri sélection d'un tableau d'entiers pris au hasard.
Solution.
Petit exercice 4 :
Le programme Tri.java est vraiment buggé.
En fait, il plante, par un accès hors-limite dans un tableau.
Tenter de comprendre le programme et de le corriger pour qu'il
trie bien. Attention, il y a en fait deux erreurs qui sont toutes deux
dans la méthode trier.
Pour comprendre un peu ce qui se passe, outre votre intuition, vous
disposez de quelques informations sur les boucles et
les tableaux
en Java.
Solution.
La
MacLib
de Philippe Chassignet fournit une interface graphique du
style de celle que l'on trouvait sur les macintosh de l'époque
héroïque.
Bizarrement, ce style d'interface est réputé plus facile d'emploi pour un
débutant que celui
fourni directement par Java.
La MacLib est documentée par le
poly
et par une
documentation complète
dans le plus pur style Java.
Petit exercice 5 :
Le programme Rectangle.java, permet de
dessiner des rectangles.
À l'aide de la petite
description
de la MacLib du poly
ou des morceaux de Java, vous pouvez facilement
changer ce programme pour qu'il
dessine des ovales, sans même comprendre le programme.
La solution est un programme Ovale.java.
(Notez que le programme Rectangle.java est une boucle
infinie, pour en sortir il faut tuer le l'invocation
java Rectange
par Control-c.)
Petit exercice 6 :
Changer le programme Rectangle.java
pour cette fois dessiner des carrés.
Là, il faut sans doute comprendre un peu ce qui se passe à l'aide de
la documentation
complète
et c'est plus dur.
La solution est un programme Carre.java.
5 |
Le courrier éléctronique |
|
Si vous ne le savez pas déjà, voici comment envoyer un courrier.
Il y a (au moins) deux façons de procéder :
-
Utiliser le programme elm exclusivement après
s'être logé sur la machine poly.
- Utiliser Netscape de votre station.
On peut même envoyer du courrier en cliquant : par exemple,
Luc.Maranget@inria.fr. Toutefois, il faut configurer
Netscape au préalable.
Je pense que la première solution est la meilleure, mais vous êtes
libres. Avant de procéder, lisez la
documentation sur le courrier.
6 |
Ce TP est vraiment trop facile |
|
Pas grave, tous les TP des années 99 et 98 sont disponibles,
je recommande particulièrement
l'affichage en base deux
et l'énumération des sous-ensembles de taille p.
Dernière modification :
2002-11-27 |
Ce document a été traduit de LATEX par
HEVEA.