Définir une fonction (min2 a b)
qui prend deux nombres a, b
et renvoie le plus petit, sans utiliser la fonction min
.
; min2: Number Number -> Number
(check-expect (min2 1 3) 1)
(check-expect (min2 5 -1) -1)
(define (min2 a b) (if (< a b) a b))
Définir une fonction (min3 a b c)
qui prend trois nombres a, b, c
et renvoie le plus petit, sans utiliser la fonction min
-- mais on pourra utiliser min2
définie ci-dessus
; min3: Number Number Number -> Number
(check-expect (min3 1 3 2) 1)
(check-expect (min3 5 7 -1) -1)
(define (min3 a b c) (min2 a (min2 b c)))
Définir une structure date
avec un champ année
, un champ mois
et un champ jour
-- les trois champs sont représentés par des nombres.
(define-struct date [année mois jour])
Écrire le code qui représente la date du 23 novembre 2018.
(define important (make-date 2018 11 23))
Définir la fonction année-suivante
qui prend une date et renvoie la même date, l'année suivante. Pour le 23 novembre 2018, elle renvoie le 23 novembre 2019.
(check-expect (année-suivante important) (make-date 2019 11 23))
(define (année-suivante date)
(make-date
(+ 1 (date-année date))
(date-mois date)
(date-jour date)))
Définir la fonction date->string
qui renvoie la date en format "jour/mois/année"
; par exemple, pour le 23 novembre 2018, on attend le résultat "23/11/2018"
. (Utiliser string-append
et number->string
.)
(check-expect (date->string important) "23/11/2018")
(define (date->string date)
(string-append
(number->string (date-jour date))
"/"
(number->string (date-mois date))
"/"
(number->string (date-année date))))
Suivre la recette de conception pour la fonction min3
du premier exercice -- je m'attends à voir chaque étape en commentaire, avec le code de la fonction à la fin.
; min3 : Number Number Number -> Number
; returns the smallest of the three numbers given
(check-expect (min3 1 -3 -5) -5)
(check-expect (min3 0 1 2) 0)
(check-expect (min3 2 1 2) 1)
(define (min3 a b c) (min2 a (min2 b c)))
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"]))