Il faut faire attention à la priorité des opérateurs. Par exemple, si l'objectif du programme est de calculer la valeur absolue de la différence des nombres 2.3
et 3.4
, alors le code suivant :
print_float (abs_float 2.3 -. 3.4);
compile parfaitement, mais pourtant il ne fait pas ce que l'on veut. En effet, il affiche : -1.1
et non pas 1.1
. L'explication est très simple : les fonctions s'appliquent avant les opérations. Le code précédent est donc équivalent à :
print_float ( (abs_float 2.3) -. 3.4 );
soit encore, puisque 2.3
est positif :
print_float ( 2.3 -. 3.4 );
Cette exemple montre qu'il ne suffit pas de tester une seule fois un programme pour se convaincre qu'il est correct. Supposons que le sujet d'un exercice soit de calculer la valeur absolue de la différence de deux nombres donnés, et qu'un programmeur écrive :
let x = read_float() in let y = read_float() in print_float (abs_float x -. y);
Ce programmeur peut alors tester son code en donnant les réels 5.6
et -4.3
, il obtient la différence 9.9
et peut croire que son programme est correct. Pourtant, en testant avec -4.3
puis 5.6
, il verrait que son programme est faux : il affiche -1.3
et non 9.9
.
Conclusion : testez autant de situations différentes que possible pour vérifier un programme.
Certaines fonctions mathématiques sont présentées ici. Si vous ne les connaissez pas, vous n'avez pas besoin de vous en soucier. Si vous pensez que vous en aurez besoin un jour, il n'est pas nécessaire de les apprendre par cœur tout de suite : vous pourrez toujours en retrouver la liste dans le manuel de référence du langage.
Les fonctions exponentielles :
exp
pour l'exponentielle,log
pour le logarithme népérien (la fonction inverse de l'exponentielle),log10
pour le logarithme en base 10.
Par exemple, exp (b *. (log a))
calcule a
élevé à la puissance b
, c'est-à-dire la même chose que a ** b
.
Les fonctions trigonométriques et trigonométriques hyperboliques, avec leurs réciproques. On les donne pour le cosinus, il y a les mêmes pour le sinus (sin) et la tangente (tan).
cos
pour le cosinus,acos
pour la réciproque du cosinus : ("arccos"
en français),cosh
pour le cosinus hyperbolique ("ch"
en français),acosh
pour la réciproque du cosinus hyperbolique ("argch"
en français),
Par exemple, (acos (-1.))
et (2. *. (asin 1.))
donnent tous deux la valeur de pi.