Pour bien commencer, il est souhaitable d'organiser votre répertoire de travail personnel (votre "home dir"). Les exercices que vous allez faire tout au long de ce cours seront placés dans le répertoire info que vous devez créer à la racine de votre compte:
[home]$ mkdir info [home]$Dans ce répertoire info, créez un répertoire src pour y placer les fichiers sources de vos programmes.
[home]$ cd info [info]$ mkdir src [info]$Pour ranger les programmes séance par séance, on peut également créer un répertoire td1.
[info]$ cd src [src]$ mkdir td1 [td1]$La prochaine feuille d'exercices donnera lieu à un répertoire info/src/td2, etc. Ceci est une première manière d'organiser les fichiers des programmes Java dans des répertoires. Nous verrons plus tard que d'autres moyens sont disponibles, en particulier via la notion de package, spécifique à Java.
Avec l'éditeur de texte emacs, ouvrir un nouveau fichier Bonjour.java dans le répertoire td1.
public class Bonjour { public static void main(String [] args) { System.out.println("Bonjour !"); } }
Le langage Java repose sur des librairies de classes offertes en standard aux utilisateurs. Ainsi, par exemple, l'instruction System.out.println("Bonjour !") dans notre programme est un appel à la méthode println() avec comme argument la chaîne de caractères (String) "Bonjour !", sur le champ out de la classe System. Ces librairies de classes sont organisées en packages, que l'on appelle API (Application Programming Interface). Les classes System ou String font partie du package java.lang dont toutes les classes sont utilisables naturellement par défaut dans un programme. Toutes les API sont documentées dans un format standardisé et ces documentations sont accessibles à l'URL http://cermics.enpc.fr/doc/java/jdk1.3.1/docs/api/index.html
Ouvrez une fenêtre de navigateur (Netscape, par exemple) et parcourez ces documentations. Sauvegardez cet URL dans vos signets (bookmarks). En partant de la classe System du package java.lang, retrouvez la méthode println() précédemment utilisée.
Par habitude et convention, les identificateurs en Java respectent les règles implicites suivantes:
Le langage Java impose deux contraintes sur l'écriture des programmes:
Arguments sur la ligne de commande
Dans le profil de la méthode principale public static void main(String[] args), qui doit se trouver dans tout programme destiné à être exécuté, args est le nom du paramètre de cette méthode qui représente les arguments de la ligne de commande. Le type de ce paramètre est String[], qui représente le type des tableaux de String. En effet, lors de l'exécution du programme, la variable args est la référence à un tableau dont les éléments représentent les chaînes de caractères passées après le nom de la classe sur la ligne de commande. Par exemple, si l'appel est :
[td1]$ java Bonjour toto tata titialors args[0] vaut "toto", args[1] vaut "tata" et args[2] vaut "titi". Par ailleurs, la taille de ce tableau (et donc le nombre d'arguments) peut être connu grâce à l'instruction args.length, qui vaudra dans ce cas l'entier 3.
Modifier le programme Bonjour.java pour qu'il affiche Bonjour ! si aucun argument n'est passé sur la ligne de commande lors d'un appel, mais Bonjour Robert ! si la chaîne "Robert" a été passée sur la ligne de commande.
Lecture d'un entier dans une String
Comme nous venons de voir, il est facile de passer un argument à un programme de cette manière. Néanmoins, cet argument ne peut être qu'une chaîne de caractères (String). En effet, même si la ligne de commande est:
[td1]$ java Bonjour 12la seule information dont le programme dispose est que args[0] vaut la chaîne "12" (son type est String).
Si l'on veut récupérer l'entier 12, de type int, à partir de la String "12", on peut utiliser la méthode parseInt() de la classe Integer de la manière suivante.
int i = Integer.parseInt(args[0]);
Déduire un programme qui affiche autant de fois "Bonjour !" que spécifié par un nombre entier passé sur la ligne de commande. Exemple:
[td1]$ java Bonjour 3 Bonjour ! Bonjour ! Bonjour ! [td1]$
Quelques manipulations
[td1]$ java Premier 101 101 est premier. [td1]$ java Premier 91 91 n'est pas premier (7 * 13). [td1]$
[td1]$ java SommeCarres 3 Carré de 1 = 1 Carré de 2 = 4 Carré de 3 = 9 Somme des carrés des 3 premiers entiers = 14 [td1]$
[td1]$ java Exo 2 Somme des carrés des nombres premiers entiers inférieurs ou égaux à 2 = 5 [td1]$ java Exo 3 Somme des carrés des nombres premiers entiers inférieurs ou égaux à 3 = 14 [td1]$ java Exo 4 Somme des carrés des nombres premiers entiers inférieurs ou égaux à 4 = 14Indication: pour la clarté de ce programme, il sera pratique de regrouper les portions de code éxécutées fréquement dans des méthodes (ou fonctions). Par exemple, la méthode de signature:
public static boolean estPremier(int i) { ... }peut tester si un entier i est premier et retourner true s'il l'est et false sinon. Cette méthode peut ensuite être appelée dans la méthode main avec l'argument souhaité.