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); 
} 
}
êtes­vous surpris par la forme que revêt cet algorithme ? Probablement car il n’y a aucun test d’effectué ! La question 
se pose : sont­ils dans ce cas vraiment nécessaires ? La réponse ne coule pas de source. Rappelez­vous qu’il  ne 
suffit  pas  qu’un  algorithme  fonctionne,  mais  qu’il  fonctionne  vite,  bien,  et  qu’il  soit  économe.  Est­ce  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 celui­ci) 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 
ceux­ci 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
Précédent

- 59/220

Suivant