String txt="";
BufferedReader saisie;
heures=17;
minutes=55;
secondes=48;
saisie=new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println("Combien de secondes ?");
txt=saisie.readLine();
}
catch(Exception excp) {
System.out.println("Erreur");
}
nbsec=Integer.parseInt(txt);
secondes+=nbsec;
minutes+=(secondes/60);
secondes=secondes%60;
heures+=(minutes/60);
minutes=minutes%60;
jours+=(heures/24);
heures=heures%24;
System.out.println(jours+"d "+heures+":"+minutes+" :"+secondes);
}
}
êtesvous surpris par la forme que revêt cet algorithme ? Probablement car il n’y a aucun test d’effectué ! La question
se pose : sontils dans ce cas vraiment nécessaires ? La réponse ne coule pas de source. Rappelezvous qu’il ne
suffit pas qu’un algorithme fonctionne, mais qu’il fonctionne vite, bien, et qu’il soit économe. Estce le cas ? Cet
algorithme effectue neuf calculs : additions, divisions et modulos. Si on rajoute des tests, on rajoute des instructions
et l’algorithme devient plus long. Or, vous aurez l’occasion de le voir dans les chapitres suivants, la complexité des
algorithmes n’est pas liée à leur longueur. Certains sont très courts (comme celuici) et pourtant très gourmand en
ressources. Inversement, d’autres sont longs et semblent compliqués pour un résultat de grande rapidité.
Un test bien posé peut éviter des calculs inutiles. Un calcul est gourmand en temps machine : le microprocesseur
travaille plus longtemps en faisant des divisions et des modulos qu’en comparant deux valeurs : elles sont égales ou
non, et dans le cas de nombres, il suffit de faire un ET pour voir si ça retourne la même valeur, une opération
élémentaire très rapide, bien plus que le moindre calcul. Autrement dit, vous avez tout intérêt à faire des tests quand
ceuxci peuvent permettre d’éviter des calculs lourds.
PROGRAMME HEURE2
VAR
jours,heures,minutes,secondes,nbsec:entier
DEBUT
heures←17
minutes←55
secondes←48
Afficher "Combien de secondes en plus ?"
Saisir nbsec
secondes←secondes+nbsec
Si secondes>59 Alors
minutes←minutes+(secondes / 60)
secondes←seconde % 60
Si minutes>59 Alors
heures←heures+(minutes / 60)
minutes←minutes % 60
Si heures>23 Alors
jours←heures / 24
Les tests pour optimiser
- 13 -
© ENI Editions - All rigths reserved - Jonifar lina
59
BufferedReader saisie;
heures=17;
minutes=55;
secondes=48;
saisie=new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println("Combien de secondes ?");
txt=saisie.readLine();
}
catch(Exception excp) {
System.out.println("Erreur");
}
nbsec=Integer.parseInt(txt);
secondes+=nbsec;
minutes+=(secondes/60);
secondes=secondes%60;
heures+=(minutes/60);
minutes=minutes%60;
jours+=(heures/24);
heures=heures%24;
System.out.println(jours+"d "+heures+":"+minutes+" :"+secondes);
}
}
êtesvous surpris par la forme que revêt cet algorithme ? Probablement car il n’y a aucun test d’effectué ! La question
se pose : sontils dans ce cas vraiment nécessaires ? La réponse ne coule pas de source. Rappelezvous qu’il ne
suffit pas qu’un algorithme fonctionne, mais qu’il fonctionne vite, bien, et qu’il soit économe. Estce le cas ? Cet
algorithme effectue neuf calculs : additions, divisions et modulos. Si on rajoute des tests, on rajoute des instructions
et l’algorithme devient plus long. Or, vous aurez l’occasion de le voir dans les chapitres suivants, la complexité des
algorithmes n’est pas liée à leur longueur. Certains sont très courts (comme celuici) et pourtant très gourmand en
ressources. Inversement, d’autres sont longs et semblent compliqués pour un résultat de grande rapidité.
Un test bien posé peut éviter des calculs inutiles. Un calcul est gourmand en temps machine : le microprocesseur
travaille plus longtemps en faisant des divisions et des modulos qu’en comparant deux valeurs : elles sont égales ou
non, et dans le cas de nombres, il suffit de faire un ET pour voir si ça retourne la même valeur, une opération
élémentaire très rapide, bien plus que le moindre calcul. Autrement dit, vous avez tout intérêt à faire des tests quand
ceuxci peuvent permettre d’éviter des calculs lourds.
PROGRAMME HEURE2
VAR
jours,heures,minutes,secondes,nbsec:entier
DEBUT
heures←17
minutes←55
secondes←48
Afficher "Combien de secondes en plus ?"
Saisir nbsec
secondes←secondes+nbsec
Si secondes>59 Alors
minutes←minutes+(secondes / 60)
secondes←seconde % 60
Si minutes>59 Alors
heures←heures+(minutes / 60)
minutes←minutes % 60
Si heures>23 Alors
jours←heures / 24
Les tests pour optimiser
- 13 -
© ENI Editions - All rigths reserved - Jonifar lina
59
