td5 Fichier

publicité
IMT Lille Douai – FI 1A
TD d’Algorithmique et Programmation
TD d’Algorithmique et Programmation 5 & 6
Des exercices papiers à leur application sur ordinateur !
IMT Lille Douai – FI 1A
Environnement de développement
Vous allez utiliser l’environnement de développement intégré (IDE en anglais) Netbeans. Cet environnement permet
le développement d’applications en Java, en vous apportant des facilités : coloration syntaxique, aide à la correction
d’erreurs à la volée, tests et debug...
Pour commencer, créez un nouveau projet. Comme catégorie de projet sélectionnez « Java » puis « Java Application » comme projet. La fenêtre suivante vous permet d’indiquer un nom à ce projet, par exemple TD5. C’est également
dans cette fenêtre que vous pourrez choisir l’endroit où seront stockés vos fichiers de projet. Vous pouvez dès-à-présent
vous créer un dossier dans lequel seront stockés tous vos codes.
Le projet vous propose également de créer la « main class » dans laquelle sera cherchée la méthode main()
À partir des paramètres précédents, l’assistant de Netbeans a créé pour vous un projet contenant un fichier source
nommé « TD5.java » et qui contient le code suivant :
Listing 1 – Code java par défaut pour votre projet
1
package td5 ;
2
3
4
5
6
/∗ ∗
∗ @author Anthony F l e u r y
∗/
public c l a s s TD5 {
7
/∗ ∗
∗ @param a r g s t h e command l i n e arguments
∗/
public s t a t i c void main ( S t r i n g [ ] a r g s ) {
// TODO code a p p l i c a t i o n l o g i c h e r e
}
8
9
10
11
12
13
14
}
La première ligne est une instruction permettant de définir un « package ». Ce package est un ensemble de « Classes »
regroupées dans un fichier et que l’on pourra ensuite réutiliser dans d’autres fichiers ou d’autres programmes.
Ensuite vient la définition de la classe TD5. Cette classe est la classe « principale » de votre projet car c’est elle qui
contient la méthode main. Cette méthode main reçoit un tableau de chaîne de caractères en arguments et ne renvoie
rien. Elle doit toujours être définie ainsi.
Cette méthode main() est le « fil conducteur » de votre programme. Votre programme commence par l’exécution de
la première instruction de main et se termine dès la fin de la dernière instruction de celle-ci.
Dans la suite, vous écrirez un ensemble de méthodes répondant aux questions données, puis vous testerez ces méthodes
en les appelant dans la méthode main(). Le lancement de votre programme se fera par le bouton « Run » montré sur
la Figure 1.
Exercice 1 : Votre premier programme
Modifiez ce projet afin de réaliser un premier programme affichant à l’écran le message de votre choix.
Lancez ensuite ce programme, vous en verrez l’exécution dans la fenêtre Console (Output) qui va apparaitre.
Exercice 2 : Un peu de calcul
Écrivez la méthode factoriel suivante dans votre classe TD5 :
A.D., A.F., M.L., G.D., A.G.
Page : 1/2
IMT Lille Douai – FI 1A
TD d’Algorithmique et Programmation
Figure 1 – Fenêtre NetBeans
Listing 2 – Code java pour le calcul du factoriel
1
2
3
public s t a t i c i n t f a c t o r i e l ( i n t N) {
return N ∗ f a c t o r i e l (N−1);
}
Que se passe-t-il lors de l’exécution ? Résoudre le problème apparut et testez l’exécution pour N=10. Utilisez la
méthode System.out.println() pour indiquer le résultat de votre exécution dans le main().
Testez ensuite l’exécution pour N=20. Que se passe-t-il et comment résoudre ce problème (qui réapparaitra pour des
valeurs plus grandes) ?
Ajoutez ensuite les différentes implémentations de la méthode puissance vues au TD 3. Testez ces implémentations en
les appelant de votre main().
Exercice 3 : Le tri
Reprenez les algorithmes vus en cours que sont le tri sélection et le tri à bulles et implémentez-les.
1. Testez-les d’abord que vos tris fonctionnent sur un tableau de taille fixe que vous remplirez à la main. Vous pouvez
déclarer et remplir un tableau en une instruction avec la notation suivante : int [] test = {1, 3, 0, 9, 6, 4, 2};
2. Générez ensuite un grand tableau (100 000 éléments). Pour ceci, avant le début de votre classe, ajoutez la ligne
import java.util.Random;, puis dans votre méthode, déclarez ensuite dans votre méthode un nouveau générateur
aléatoire : Random R = new Random();, et vous générerez un élément avec grandTableau[i] = R.nextInt();. Testez
donc le temps d’exécution sur un grand tableau et comparez les deux algorithmes.
3. Générez ensuite un grand tableau (100 000 éléments) trié (contenant les nombres de 1 à N pour un tableau de
taille N). Ce tableau est déjà trié. Comparez le temps d’exécution sur ce tableau. Échangez ensuite les deux cases
extrêmes (première et dernière) et comparez de nouveau aux exécutions précédentes. Pouvez-vous expliquer ces
différences ?
4. Une première optimisation de ce tri est appelée « tri Cocktail » (aussi appelé « tri Happy Hours »). Dans ce
tri, nous gardons le principe du tri à bulles, mais en faisant un parcours dans un sens puis au tour d’après un
parcours dans l’autre sens (du début à la fin puis de la fin au début). Modifiez votre algorithme de tri à bulles
pour faire ce nouveau tri, puis testez sur les mêmes exemples que ceux donnés précédemment. Quelle est le
résultat de ces tests ?
Exercice 4 : Palindromes
Reprenez votre correction de l’exercice du palindrome du TD3. Testez votre code pour afficher le résultat pour quelques
valeurs choisies. Testez ensuite cette correction sur le nombre 101101. Vous verrez alors que probablement votre
algorithme ne fonctionnera pas. Modifiez votre code pour que cela puisse fonctionner, en insérant en plus un élément
permettant de compter le nombre de chiffres sur lequel vous êtes censé travailler, afin de pouvoir faire fonctionner
votre code tant sur l’exemple donné précédemment que sur 1001101 par exemple.
A.D., A.F., M.L., G.D., A.G.
Page : 2/2
Téléchargement