6.0.1.11
1. Les Expressions Préfixées
1 Exercice 1.9.1
a) L’Art Subtil des Parenthèses...
(* 2 pi (sqrt (/ L g)) |
(+ (- b a) 1) ou (+ b (- a) 1) |
(exp (* +i pi 1/3)) |
(* 4/3 pi R R R) |
b) et sa réciproque :

2 Exercice 1.9.2
Pour calculer une racine cubique, on élève à la puissance 1/3.
Donc la racine cublique de 10 se note en Scheme :
Le logarithme en base a est défini mathématiquement par la formule
loga(x)=log(x)/log(a) où log est le logarithme népérien.
Donc le log de 10 en base 2 s’écrira :
L’arc cosinus s’obtient par la fonction acos, qui travaille en radians. Une règle de trois
permet d’obtenir une conversion en degrés. Donc si un angle a pour cosinus 0.746, l’angle en question a pour mesure :
> (define a (acos 0.746)) |
> a |
#i0.7287611225998648 ; environ 0.7 radians |
> (define radian (/ 180 pi)) |
> (* a radian) |
#i41.75493659818821 ; environ 42 degrés |
Le module d’un nombre complexe s’obtient avec magnitude et son angle polaire avec angle. Donc :
> (magnitude 3-2i) ; le module |
#i3.6055512754639896 |
> (angle 3-2i) ; l'angle en radians |
#i-0.5880026035475675 |
> (* (angle 3-2i) radian) ; l'angle en degrés |
#i-33.690067525979785 |
Ecriture en base 2 (le binaire) ou 16 (l’hexadécimal, brrr) :
> (string->number "11010110" 2) |
214 |
> (number->string 15722 16) |
"3d6a" |
La divisibilité de a par b se teste par la fonction modulo, on évitera de demander si le
quotient est entier. On peut aussi observer la simplification automatique de a/b.
> 998811/177 ; yes |
5643 |
> (= (modulo 998811 177) 0) ; yes |
#t |
3 Exercice 1.9.3
Pour définir la constante $pi, demandez-vous ce que vaut (cos pi).
Pour la constante $e, utilisez la fonction exponentielle. Je note $pi ma
variable, pour ne pas tuer le pi prédéfini de Scheme...
> (define $pi (acos -1)) |
> $pi |
#i3.141592653589793 |
> (define $e (exp 1)) |
> $e |
#i2.718281828459045 |
4 Exercice 1.9.4
> (string-length (number->string (expt 2021 150))) ; ouf |
496 |
b) Pour exprimer que n contient k chiffres, on l’encadre sous la forme 10k-1 <= n < 10k.
On prend ensuite le logarithme de cette inéquation, qui montre que
la partie entière de log(n)/log(10) n’est autre que k-1. Donc :
(define (nb-chiffres n) ; n entier > 0 |
(+ (inexact->exact (floor (/ (log n) (log 10)))) 1)) |
|
> (nb-chiffres (expt 2021 150)) |
496 |
5 Exercice 1.9.5
Bien voir que and et or ne sont définitivement PAS des fonctions !!!
6 Exercice 1.9.6
Utilisez des équivalences de la forme (and p q) <==> (if p q #f).