Pour donner une idée de la manière dont le programmeur interagit
avec le système, voici le développement interactif d'un petit
programme. Il s'agit de convertir une valeur exprimée en degrés Celcius,
en degrés Fahrenheit.
* (+ (* 9/5 0) 32)
32
* (+ (* 9/5 25) 32)
77
* (+ (* 9/5 225) 32)
437
*
On remarque :
- l'invite (en Anglais : prompt) '*' spécifique à CMU Common Lisp (CMUCL),
- la notation préfixe (l'opérateur avant les opérandes),
- l'utilisation de nombres rationnels (ratios),
- le parenthésage complet de chaque expression ; les parenthèses
sont obligatoires.
De manière à généraliser cette conversion à n'importe quelle valeur,
on crée une fonction avec un paramètre lequel correspond à la valeur
Celcius à convertir. Cette démarche s'appelle une
abstraction sous la forme d'une fonction.
* (defun celcius-to-fahrenheit (celcius)
(+ (* 9/5 celcius) 32))
CELCIUS-TO-FAHRENHEIT
* (celcius-to-fahrenheit 0)
32
* (celcius-to-fahrenheit 25)
77
* (celcius-to-fahrenheit 225)
437
*
On remarque :
- la syntaxe d'une définition de fonction,
- l'indentation non obligatoire mais vivement conseillée.
- que la valeur de l'expression est le nom de la fonction,
- la non distinction entre majuscules et minuscules (la fonction print imprime les noms de symboles tout en majuscules).
Le résultat est parfois difficilement interprétable car le calcul exact
présenté sous forme de ratio ne donne pas forcément directement une idée
de la valeur approchée du résultat. On peut obtenir une valeur approchée sous forme de
flottant en utilisant la fonction coerce.
* (celcius-to-fahrenheit 224)
2176/5
* (defun celcius-to-fahrenheit (celcius)
(coerce (+ (* 9/5 celcius) 32) 'float))
CELCIUS-TO-FAHRENHEIT
* (celcius-to-fahrenheit 224)
435.2
*
Irene DURAND
2011-10-14