Définir la fonction duplique
qui prend une liste et renvoie chaque élément en double. Par exemple, (duplique (cons 1 (cons "x" '())))
est (cons 1 (cons 1 (cons "x" (cons "x" '()))))
.
Définir la fonction dernier
qui renvoie le dernier élément d'une liste.
Définir la fonction (renverse-dans la lb)
qui renverse les éléments de la
et les ajoute à lb
. Par exemple, (renverse-dans (cons 1 (cons 2 '())) (cons 3 '()))
est (cons 2 (cons 1 (cons 3 '())))
.
Définir la fonction (renverse li)
qui prend une liste et renvoie la liste à l'envers. (renverse (cons 1 (cons 2 '())))
est (cons 2 (cons 1 '()))
.
On définit une expression arithmétique comme étant soit :
un nombre
la chaîne "x"
, représentant une variable x
(make-plus a b)
(définir la structure plus
aux champs [a b]
), où a
et b
sont deux expressions arithmétiques
(make-mult a b)
(définir la structure mult
aux champs [a b]
) où a
et b
sont deux expressions arithmétiques.
Par exemple, l'expression (2 * (x + 1)) est représentée par la valeur (make-mult 2 (make-plus "x" 1))
.
Définir la fonction varie?
qui prend une expression arithmétique et indique si elle varie, c'est-à-dire si elle contient la variable "x"
(ou bien seulement des constantes).
Définir la fonction (eval n expr)
qui évalue l'expression arithmétique expr
en donnant à la variable x la valeur n
. Par exemple, (eval 3 (make-mult 2 (make-plus "x" 1)))
est 8
, c'est-à-dire (2 * (3 + 1)).
Définir la fonction derive
qui prend une expression arithmétique et renvoie sa dérivée par rapport à la variable x. Rappel:
la dérivée d'une constante est 0
la dérivée de x est 1
la dérivée de (u + v) est (u' + v'), où u', v' sont les dérivées de u et v.
la dérivée de u * v
est ((u' * v) + (u * v')), avec les mêmes notations.
Expressions:
(opération argument1 argument2 argument3)
Définition et utilisation de variable:
(define nom-de-variable ...)
(define gregory (string-append "bon" " " "jour"))
gregory
Définition et utilisation de fonction:
(define (nom-de-fonction nom-argument1 nom-argument2 nom-argument-3) ...)
(define (square i) (* i i))
(square 5)
(if truc machin chouette)
(cond
[truc bidule]
[truc machine]
[else chose])
nombres
+ - * /
images
(require 2htdp/image)
(rectangle 10 20 "solid" "blue")
(circle 100 "solid" "red") square star
above beside
image-width image-height
chaînes de caractères (strings)
string-length string-append string-ith
string->number number->string
string=?
booléens
and or not
prédicats de test
image? number? string? boolean?
structures
(define-struct anim [size decr?])
(make-anim s dir)
(anim-size anim)
(anim-decr? anim)
(anim? x)
listes
'() cons first rest empty? cons?
Exemple:
; A TrafficLight is one of the following Strings:
; – "red"
; – "green"
; – "yellow"
; interpretation the three strings represent the three
; possible states that a traffic light may assume
; the state of a traffic light is represented by TrafficLight
; TrafficLight -> TrafficLight
; yields the next state given current state s
(check-expect (traffic-light-next "red") "green")
(define (traffic-light-next s)
(cond
[(string=? "red" s) "green"]
[(string=? "green" s) "yellow"]
[(string=? "yellow" s) "red"]))