(READ)
REMARQUE : IL FAUT METTRE CE QUI EST SAISI DANS UNE VARIABLE AVEC LET, POUR POUVOIR L'UTILISER ENSUITE
(LET ((X (READ))) ...)
(DISPLAY <QUELQUECHOSE>)
--> AFFICHE A L'ÉCRAN LA VALEUR DE SON ARGUMENT
<QUELQUECHOSE> PEUT ÊTRE:
TOUTE FONCTION DOIT RETOURNER UNE VALEUR
QUELLE EST LA VALEUR RETOURNÉE PAR ???
. . . AUCUNE VALEUR !
--> C'EST UN "EFFET DE BORD"
= LA VALEUR RETOURNÉE PAR UNE FONCTION EST DONNÉE COMME ARGUMENT A UNE AUTRE FONCTION
--> LE PROGRAMME EST AINSI DÉCOUPÉ EN FONCTIONS QUI S'EMBOITENT LES UNES DANS LES AUTRES
MZSHARE: EXTENSION DE DRSCHEME
--> DISPONIBLE EN DRSCHEME VERSION 103:
DEUX FONCTIONS:
(JOUER-NOTE <COUPLE>)
--> JOUE UNE NOTE DÉFINIE PAR UN COUPLE
(JOUER-LISTE <LISTE-DE-COUPLES>)
--> JOUE UNE SÉQUENCE
EXEMPLE:
(JOUER-LISTE '((60 500) (60 500)
(60 500) (62 500) (64 1000) (62 1000)))
--> JOUE LE DÉBUT DE "AU CLAIR DE LA LUNE"
APPRENDRE À FAIRE LE
CONSIDÉRONS LA FONCTION:
(DEFINE (F X)
(* (/ (* X (+ (SQRT X) 1))
(COS (+ (LOG (- X 1))
(* 2 X))))
(/ (* X (+ (SQRT X) 1))
(COS (+ (LOG (- X 1))
(* 2 X))))))
LE CODAGE EN SCHEME DE CETTE FONCTION
FAIT APPARAÎTRE UNE CERTAINE "LOURDEUR"...
L'EXPRESSION
(/ (* X (+ (SQRT X) 1))
(COS (+ (LOG (- X 1))
(* 2 X))))
A ÉTÉ ÉCRITE
--> ON ISOLE UN MODULE DE CALCUL
(CARRE <NBRE>)
QUE L'ON "EMBOÎTE" DANS LE MODULE PRINCIPAL:
D'OU LA SOLUTION BEAUCOUP
PLUS ÉLÉGANTE SUIVANTE:
(DEFINE (CARRE Y) (* Y Y))
(DEFINE (F X)
(CARRE (/ (* X (+ (SQRT X) 1))
(COS (+ (LOG (- X 1))
(* 2 X))))))