Deug MASS 2 Année 2000/2001
U.N.S.A.



ALGORITHMIQUE ET STRUCTURES DE DONNEES

TP 1

Introduction à Java


1. Configuration de l'environnement

Avant de commencer à programmer en Java, il convient de configurer son environnement pour pouvoir utiliser les outils Java.

Par défaut, le compilateur et la machine virtuelle Java ne se trouvent pas dans la liste des répertoires où votre shell va chercher les exécutables. Il va falloir modifier le fichier de configuration de votre shell (ce fichier, caché, se nomme .zshenv pour le shell zsh et se trouve à la racine de votre répertoire personnel).

Effectuez une copie de sauvegarde de ce fichier de configuration puis éditez-le avec Emacs. Localisez la ligne :
PATH=~/bin:/usr/local1/bin:[...]
et rajoutez le chemin vers les exécutables Java parmi la liste des exécutables connus du shell. Pour cela rajoutez le chemin /usr/local/java/jdk1.2.2/bin: directement après PATH= pour obtenir alors une ligne commençant par :
PATH=/usr/local/java/jdk1.2.2/bin:~/bin:/usr/local1/bin:[...]

Forcez le shell à relire ce fichier de configuration en tapant la commande source ~/.zshenv.

Enfin, vérifiez que la modification est bien effective en demandant au shell s'il trouve, par exemple, le compilateur Java en tapant la commande which javac.

2. Configuration de XEmacs

Par défaut, XEmacs, l'éditeur standard sous Unix, reconnait et possède un mode pour les fichiers Java. Cependant, celui-ci n'est pas très performant et il existe un autre mode, plus utilisé, appelé JDE.

Ce mode est déjà installé sur les machines, mais XEmacs n'est pas configuré pour l'utiliser. Pour y remédier, éditez, avec XEmacs, le fichier de configuration .emacs situé à la racine de votre répertoire personnel et rajoutez-y les lignes suivantes :

;; JDE - Mode Java pour xemacs
;*****************************
(setq load-path
   (cons "/usr/local/java/jde-2.1.5" load-path))
(require 'jde)

Quittez et relancez XEmacs, puis ouvrez ou créez un fichier Java pour vérifier que le mode JDE est bien chargé (indication du mode majeur JDE dans la ligne d'état, présence d'un nouveau menu JDE, ou encore d'un nouvel élément JDE New dans le menu File).

JDE vous apporte la possibilité de voir les mots-clés du langage en couleur, de pouvoir compiler directement à partir de XEmacs vos programmes, d'indenter automatiquement les expressions... Consultez l'aide sur JDE dans le menu JDE.

Une autre configuration souhaitée de XEmacs concerne l'affichage de la position courante du curseur dans la ligne d'état. Ces réglages se trouvent en cliquant dans la barre d'état avec le bouton droit de la souris sur la partie où est écrit JDE. Choisir les modes mineurs d'édition column-number-mode et line-number-mode

3. Exercices

3.1 Exercice 1 : Hello World

1.
Recopiez le bout de code de HelloWorld du cours dans un fichier que vous appelerez HelloWorld.java, compilez et exécutez.

Pour compiler le fichier, taper javac HelloWorld.java ou bien aller dans le menu JDE et choisir Compile.
Pour exécuter le programme, taper java HelloWorld ou bien aller dans le menu JDE et choisir Run App.
Voir fichier HelloWorld.java
 
2.
Modifiez le programme pour qu'il affiche Bonjour <votre nom>

Voir fichier monNOM.java
 
3.
Modifiez le programme pour qu'il affiche Hello <le premier argument que vous passerez au programme>

Pour exécuter le programme sous JDE en lui passant des paramètres par le mini-buffer, aller dans le menu JDE et choisir Options puis Project. Régler l'option Run Read App Args à on. Enregistrer les changements en cliquant sur les boutons en haut du buffer.
Voir fichier premierArg.java
 
4.
Executez le programme précédent sans lui donner de paramètre. Que se passe-t-il? Pourquoi?

Le programme affiche : Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at premierArg.main(premierArg.java:6)
Parce que on a essayé d'écrire une variable (argv[0]) qui n'existe pas, car aucun paramètre n'a été pas passé à la fonction.
Pour corriger le programme :
public class premierArg {
// methodes
public static void main(String argv[]) {
   if(argv.length > 0)
     System.out.println("Hello " + argv[0]);
   else System.out.println("Hello ");
   }
}

 

3.2 Exercice 2

En vous aidant du TD 1, écrivez un programme qui affiche le nombre passé en paramètre du programme si ce nombre est positif et affiche un message d'erreur sinon.

Voir fichier Simple.java
 

Testez ce programme, ou bien à l'aide d'un terminal avec la commande java, ou mieux, directement dans XEmacs, en utilisant JDE. Que se passe-t-il si vous omettez de donner un argument au programme ou si cet argument n'est pas un entier?

Si aucun paramètre n'est transmis au programme, l'execution du programme se termine anormalement. Le programme essaie d'accéder au premier argument du programme argv[0] et celui-ci existe pas.
Si l'argument passé au programme n'est pas un entier, l'execution du programme se termine à nouveau anormalement. la fonction Integer.parseInt echoue à convertir une chaine de caractères qui ne représente pas un entier.
 

3.3 Exercice 3

Ecrivez un programme prenant en paramètre un entier et affichant la table de multiplication de cet entier de 1 à 10.

Voir fichier MultTable.java
 

3.4 Exercice 4

Ecrivez le programme décrit dans l'exercice 2 du TD numéro 1. Ce programme prend en paramètre une borne inférieure strictement supérieure à 1, une borne supérieure strictement inférieure à 50. Elle donne la liste de nombres pairs entre ces deux bornes. Si la borne inférieure n'est pas strictement supérieure à 1, ou si la borne supérieure n'est pas strictement inférieure à 50, ou encore si la borne inférieure est plus grande que la borne supérieure, le programme affiche un message d'erreur.

Voir fichier Pair.java
 



Guillaume Dufay
2001-02-27