2. Les Fonctions
1 Exercice 2.7.1
a) correct
b) p ne doit être calculé qu’une seule fois !
c) define permet de définir une fonction, qui travaille en ordre applicatif [ou
appel par valeur], ce qui signifie que les arguments sont évalués avant que le corps
de la fonction ne soit lui-même évalué !
2 Exercice 2.7.2
a) et b) Attention : (random n) tombe dans [0,n-1] et non dans [0,n].
c) Il suffit de lancer un dé à 3 faces et de convertir le résultat 0,1,2 en 0,1,1.
d) On jette un dé à 7 faces UNE SEULE FOIS et on convertit 0,1,2,3,4,5,6 en 0,1,1,3,3,3,3.
e) La documentation en ligne de random précise quel est le plus grand entier aléatoire possible.
3 Exercice 2.7.3
(define (une-racine a b c) |
(if (= a 0) |
(error 'une-racine "Le trinome n'est pas du second degré !") |
(local [(define d (delta a b c))] |
(/ (+ (- b) (sqrt d)) (* 2 a))))) |
|
(define (diviseur? d n) ; d et n entiers |
(and (not (= d 0)) (= 0 (modulo n d)))) |
4 Exercice 2.7.4
(define (f x) |
(local [(define u (sqr x)) |
(define s (sin u))] |
(/ s (+ (sqr u) s)))) |
5 Exercice 2.7.5
(define (s t) |
(cond ((< t -3) 0) |
((<= t -1) 1) ; ici je suis sûr que t >= -3 |
... |
(else 0))) |
6 Exercice 2.7.6
(define (tranche s bas haut p) |
(cond ((< s bas) 0) ; en-dehors de la tranche |
((<= s haut) (* (- s bas) (/ p 100))) ; dans la tranche |
(else ...))) ; toute la tranche |
7 Exercice 2.7.7
(define (deriv f) |
(lambda (x) |
...)) |
8 Exercice 2.6.8
z’ - z0 = (z - z0) eia
d’où :
(define (rotation z0 a) ; Complex x Real -> (Complex -> Complex) |
(lambda (z) |
(+ z0 (* (- z z0) (exp (* +i a)))))) |
N’oubliez pas que le nombre complexe i des maths s’écrit +i en Scheme pour ne pas le confondre avec une variable i...
9 Exercice 2.7.9
(define (compose f g) ; f et g sont deux fonctions à une seule variable ! |
(lambda (x) |
(f (g x)))) |
10 Exercice 2.7.10
Le constructeur couple est de type : Expr x Expr -> (Boolean -> Expr) où Expr dénote une expression
de type quelconque. Un "couple" c est donc une fonction ! Il vous suffit de trouver le bon argument à passer à cette fonction pour extraire l’une des deux "composantes" du couple c...