Premiers programmes
en Java
L'environnement de programmation
Pour ces premiers TPs, nous allons utiliser un simple éditeur de texte comme emacs, gedit ou tout autre éditeur capable de faire de la coloration syntaxique. Il s'agit ainsi de se familiariser avec les commandes java et javac, et de bien comprendre la chaîne des outils utilisés en Java.
Compiler et exécuter : javac et java
Pour faire un programme en Java, il faut taper son code via l'éditeur de texte sélectionné et de l'enregistrer dans un fichier, par exemple MonProg.java.
Pour compiler le programme il faut taper la commande :
> javac nom_fich.java
Cette commande génère un fichier compilé de nom : MonProg.class. Et pour lancer l'exécution de ce programme il faut taper :
> java MonProg
Le code minimal
En Java, tout programme contient au moins une classe publique contenant la méthode public static void main(String[] args). C'est cette méthode qui est exécutée après le lancement de la JVM. Comme vous le verrez plus tard, en règle générale, chaque classe est stockée dans un fichier différent. Le nom du fichier doit être identique au nom de la classe qu'il contient avec en plus l'extension '.java', en respectant les minuscules et les majuscules. Voici le code minimal pour un programme Java :
/**
|
Remarques :
- le symbole // permet d'écrire une ligne de commentaire (ignorée du compilateur).
- Comme nous le verrons les symboles /** */ permettent de créer des commentaires qui seront accessibles en ligne. Prenez l'habitude de toujours écrire des commentaires, même pour les classes les plus simples!
- Le code précédent doit être enregistré dans un fichier portant le nom Minimal.java
Hello World!
L'exemple suivant est le code complet d'un programme java qui se contente d'afficher la chaîne de caractère : "Hello world!"
/**
|
Exercice 1:
Écrivez, compilez et exécuter le programme précédent.
Notez au passage une méthode très importante en Java :
System.out.println("votre texte");
Cette méthode vous permet d'afficher une ligne de texte. Vous pouvez l'utiliser aussi pour afficher la valeur d'une variable :
int n=5;
System.out.println(n);
Ou encore une chaîne structurée avec un texte et la valeur d'une variable :
int n=5;
System.out.println("La valeur de n est : "+n);
Testez ces différentes utilisations en modifiant la classe HelloWorldApp.
Exercice 2:
Coder la fonction factorielle dans un programme, appelé Factorielle. Ce programme affichera la factorielle de n, n étant une variable de type int dont la valeur est fixée dans le code au moment de sa déclaration ( int n = 5; ).
exemple, si n est fixée 5 :
> java Factorielle
factorielle pour n = 5 : 120
Les paramètres d'un programme
Un programme peut recevoir des paramètres que l'on spécifie dans la ligne de commande au moment du lancement de l'exécution du programme.
Exemple :
> java Prog p1 p2 p3
Cette ligne de commande lance donc l'exécution du programme Prog avec les paramètres : p1 p2 et p3. Les paramètres sont des chaînes de caractères, séparés les uns des autres par des espaces.
Récupération des paramètres transmis :
Dans le programme les paramètres sont placés dans l'argument args de la méthode public static void main(String[] args), comme vous l'avez remarqué args est un tableau de String, c'est a dire un tableau de chaînes de caractères. Dans l'exemple précédent on aura alors : la chaîne p1 dans args[0] , la chaîne p2 dans args[1] et la chaîne p3 dans args[2].
Rappel : le nombre d'éléments que contient un tableau "tableau" est donné par la valeur tableau.length. Ainsi toujours dans notre exemple : args.length vaut 3.
Exercice 3:
Ecrire un programme appelé AfficheArgs qui affiche tous les paramètres qui lui sont transmis en ligne de commande (un par ligne).
Exercice 4:
Écrivez un programme Factorielle2 qui calcule la factorielle d'une valeur n donnée en paramètre au moment du lancement du programme.
Exemple :
> java Factorielle2 3
factorielle pour n = 3 : 6
> java Factorielle2 6
factorielle pour n = 6 : 720
Exercice 5:
Ecrire un programme, appelé Calcul, qui retourne le résultat d'une opération donnée en paramètre,
il doit gérer les opérateurs : + - * et / et supporter des opérandes à virgule (on se limitera au cas où seulement 2 opérandes
et un opérateur sont donnés en paramètres.
Exemple :
> java Calcul 5 + 6.5
11.5
Attention : l'exécution dans une console Unix de la commande :
> java Calcul 3 * 4
provoque une erreur car le caractère *
est interprété par le shell et est remplacé par l'ensemble des noms de fichier contenu
dans le répertoire courant. Convainquez-vous en exécutant la commande :
> java AfficheArgs *
Il faut donc taper à la place :
> java Calcul 3 "*" 4
Ceci n'a aucune conséquence pour le programme, il recevra toujours les paramètres 3, * et 4.
Exercice 6:
Écrire un programme appelé DernierIndexDans qui, étant donné une string et un caratère, donne la dernière position du caractère dans la string ou -1 si il n'y en a pas. La première position étant numérotée 0.
Exemple :
> java DernierIndexDans testeur e
Le dernier e dans testeur se trouve à la position 4
>> java dernierIndexDans testeur a
Le dernier a dans testeur se trouve à la position -1
Exercice 7:
Écrire un programme appelé TermineAvec, étant donné deux strings, vérifie si la première se termine par la deuxième.
Exemple :
> java TermineAvec testeur eur
testeur se termine bien en eur
>> java DernierIndexDans testeur eurr
testeur ne se termine pas en eurr
>> java DernierIndexDans testeur euR
testeur ne se termine pas en euR
Exercice 8:
Écrire un programme appelé TermineAvecIgnorerLaCasse qui fait la même chose mais sans tenir compte de la casse des caractères
Exemple :
> java termineAvecIgnorerLaCasse testeur eur
testeur se termine bien en eur
>> java TermineAvecIgnorerLaCasse testeur eurr
testeur ne se termine pas en eurr
>> java TermineAvecIgnorerLaCasse testeur euR
testeur se termine bien en euR
Exercice 9:
Ecrire un programme nommé HexadecimalToInteger : un convertisseur hexadécimal -> décimal qui affiche la valeur décimale d'un caractère (un seul) hexadécimal fournit en paramètre. Par ailleurs, le programme doit vérifier que le caractère passé en argument est bien un nombre hexadécimal et le signaler à l'utilisateur dans le cas contraire.
Exemples:
> java HexaToInt A
10
> java HexaToInt G
Erreur: G n'est pas un caractere hexadecimal.
Exercice 10:
Améliorer le programme précédent pour qu'il puisse convertir une valeur hexadécimale de plusieurs caractères.
Exemple:
> java HexaToInt B5
181
Exercice 11:
Écrire un programme nommé SystemProperty qui affiche les propriétés de l'OS suivantes : le nom de l'utilisateur, tel qu'il est enregistré dans l'OS, le répertoire de travail courant et le numéro de version de la machine virtuelle utilisée pour lancer le programme
Exercice 12:
Écrire un programme qui crée un tableau d'entier de taille 100 initialisé avec les vingt premiers indexes à 0, les 60 suivants à 2 et les 20 derniers à 8. Ensuite le programme doit afficher le tableau avec le formatage précis suivant : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8]
Exercice 13:
Écrire un programme qui copie son fichier source dans un sous répertoire "backup"
Exercice 14:
Écrire un programme qui prend en paramètre une url (e.g. http://www.lirmm.fr) et un nom de fichier. L'objectif est d'enregistrer le fichier correspondant à l'url dans un fichier du nom donné comme deuxième paramètre