Qualités
d'un
algorithme
- Un algorithme se termine en un
temps fini: 1 seconde, 1 heure, 1 jour, 1 an, 10 ans, 1
siècle, ... mais en un temps fini. Il existe de nombreux
problèmes pour lesquels il n'y a pas d'algorithme.
- Efficacité: Pour
le même problème il peut exister plusieurs algorithmes.
Certains
prennent moins de place en mémoire (on parle d'efficacité
en espace) d'autres sont plus rapides (on parle d'efficacité en
temps).
exemples:
- vous pouvez appuyer 30 fois sur la touche café
court vous obtiendrez toujours un café court mais vous mettrez
plus de temps inutilement.
- vous pouvez calculer en plus le prix TTC d'un DVD mais
vous aurez besoin d'une variable auxiliaire (inutile)
supplémentaire et l'algorithme sera moins efficace en espace.
MAIS ATTENTION à choisir le plus efficace on risque
de perdre en lisibilité. Par exemple on peut se passer de la
variable auxiliaire PHTot mais le corps
de l'algorithme sera moins lisible.
-
pTTCTot = (pHT * nbDVD) + ((pHT * nbDVD) * mTVA/100);
- Lisibilité:
Noms de variables judicieux, nombreux commentaires. Un informaticien
doit être capable de lire facilement et de comprendre rapidement
un algorithme qui a été écrit par un autre. Il
faut rechercher un équilibre entre efficacité et
lisibilité.
- Paramétré:
Pas de constantes dans le corps de l'algorithme mais
des données en entrée initialisées.
exemple: supposons qu'au lieu de déclarer float mTVA = 20.6; on utilise directement la
valeur 20.6.
pTTCTot = pHTTot + (pHTTot * 20.6/100);
- Si demain la TVA passe a 22 pour cent, on doit
rechercher toutes les lignes contenant 20.6 pour les remplacer par 22,
alors qu'avec une variable initialisée il suffit de modifier sa
déclaration dans le champ "variable en entrée" dans
l'algorihme. Pour de petits algorithmes ca peut aller mais imaginez un
algorihme de plusieurs milliers de lignes...
- Robuste: Un
algorithme doit tenir compte de tous les cas en définissant un
jeu d'essais qui teste les cas standards et les cas limites.
suivant plan