Besoin d'aide pour un DM svp... - Java - Programmation
Marsh Posté le 03-01-2008 à 23:32:27
chronosis1 a écrit : voici mon DM je sais que cela ne se fait pas de mettre le dm comme cela mais je sais vraiment pas comment faire |
Je vais t'aider : commence à réfléchir au problème, et à l'implémenter. Puis reviens lorsque tu auras des questions précises à poser, parce qu'ici on ne fait pas le travail à ta place.
edit : je note tout de même que tu es désespéré, mais que tu as pris le temps de t'inscrire ici, ce qui habituellement prend entre 1 et 3 jours.
Marsh Posté le 03-01-2008 à 23:30:47
Voila j'ai un dm à faire pour l'informatique , je suis en ecole d'ingenieure en premiere année, et cela fais que 3 mois que je fais du java avec en moyenne 2h de java par semaine et là ,pour mon dm, je suis paumé je NE comprend pas grand chose. Donc si quelqu'un pourrait m'aider cela serait trés sympa merci d'avance.
voici mon DM je sais que cela ne se fait pas de mettre le dm comme cela mais je sais vraiment pas comment faire (je suis desesperé);
L’objectif de ce DM est d’analyser le coût en temps d’au moins deux méthodes de tri.
Les étapes suivantes doivent être suivies :
définir une première classe comportant la représentation d’un tableau de n entiers ;
y intégrer des méthodes, notamment :
pour le remplissage d’un tableau par des valeurs tirées aléatoirement ;
pour le tri des valeurs d’un tableau (suivant au moins deux méthodes de tri de votre choix) ;
pour l’affichage d’un tableau ;
définir une autre classe pour expérimenter cette première classe :
construire des objets de la première classe avec différents nombres n de valeurs ;
appliquer sur ces objets vos deux méthodes de tri, en mesurant pour chacune d’elles et à chaque fois le temps d’exécution ;
enregistrer ces temps dans un tableau ;
rédiger un dossier comportant notamment :
une introduction (le problème posé) ;
vos algorithmes ;
les codes sources commentés ;
les résultats d’exécution ;
la synthèse graphique (récupérer vos temps d’exécution de tri sous Excel suivant différentes valeurs de n (nombre de valeurs à trier) et suivant vos méthodes de tri) ;
la conclusion : forme des deux courbes (log n, n, n2, …), une méthode de tri paraît-elle plus rapide que la (ou les) autre (s) ?
Evaluation d’un temps de calcul en Java :
Pour évaluer le temps de calcul d’une méthode, on va mémoriser les heures d’entrée et de sortie de la méthode et les soustraire pour obtenir la durée d’exécution.
Il existe en java une classe Date permettant de manipuler des instants et des durées.
Classe Date - Utilisation de la documentation Java :
Une documentation " officielle " de Java est disponible sur le site de Sun à l’adresse
http://java.sun.com/j2se/1.4.2/docs/
Parmi cette documentation, on trouve l’ensemble des classes disponibles à l’adresse
http://java.sun.com/j2se/1.4.2/docs/api/
Parcourez cette liste à la recherche de la classe Date et regardez l’ensemble des fonctionnalités de cette classe.
Notez que la classe Date se trouve dans le packetage java.util que vous devrez importer avec l’instruction
import java.util.Date;
au début de votre programme pour pouvoir l’utiliser.
Dans la classe Essai, déclarez et instanciez des objets de la classe Date de manière à évaluer le temps de calcul de vos deux méthodes de tri.
Exemple de mise en œuvre : ajouter aux deux classes vues ci-dessus la classe Chronometre :
import java.util.*;
public class Chronometre {
Calendar m_start = new GregorianCalendar();
Calendar m_stop = new GregorianCalendar();
Chronometre() {
}
//Lance le chronomètre
public void start() {
m_start.setTime(new Date());
}
//Arrète le chronomètre
public void stop() {
m_stop.setTime(new Date());
}
//Retourne le nombre de millisecondes séparant l'appel des méthode start() et stop()
public long getMilliSec() {
return (m_stop.getTimeInMillis() - m_start.getTimeInMillis());
}
//Affiche le nombre de millisecondes séparant l'appel des méthode start() et stop()
public void printMilliSec() {
if(getMilliSec() <= 0) {
System.out.println("Vous n'avez pas arrété le chronomètre" );
} else {
System.out.println("Temps d'exécution : " + getMilliSec() + " ms" );
}
}
}
Exemple d’utilisation de cette classe Chronometre :
public class Essai{
public static int fact(int n) {
int res=1;
for (int i=1;i<=n;i++){
res*=i;
}
return res;
}
public static void traitement(int nbfois) {
int res2=1;
for (int i=2;i<=nbfois;i++) {
res2+=fact(i)-fact(i-1);
}
}
public static void main(String[] args){
Chronometre c1=new Chronometre();
c1.start(); // déclencher le chronomètre
traitement(1000); // exécuter les traitements définis ci-dessus
c1.stop(); // arrêter le chronomètre
c1.printMilliSec(); // afficher le temps d’exécution des traitements (*)
}
}
(*) : 24 ms pour cet exemple