Introduction aux
Langages de Programmation
20 septembre 2007
Nom __________
Prénom __________
Login __________
Passwd __________
Espace disque utilisé __________
A Listes en LISP
1) Remplissez les blancs. . .
? (caddr ’(((b) (2 3)) + b (c d)))
= ___________
? (cadr ’((1 2 (3)) (b (c d))))
= ___________
? (car ’((+ (2) 3) (- b (c d))))
= ___________
? (caar ’((+ 1 3) (a b (c d))))
= ___________
? (cadar ’((cons () (2)) (- b (c))))
= ___________
? (cadr ’((+ 2 3) (- b (c d))))
= ___________
? (______ ’((1 2 3) (b) (c d))))
= (b)
? (______ ’((1 2 3) (a b (c d))))
= b
B Utiliser Lisp
1) Faire tourner à la main la fonction fol avec
comme paramètres 5, puis 6, puis 7, puis 8.
Que fait la fonction fol ?
(de fol (n)
(folle n 3 1 1))
(de folle (a b c d)
(if (= a 0)
b
(folle (- a 1)
(/ (* b c) d)
b c)))
On fera bien attention à afficher toutes les
étapes suivies par l’interprète au cours de cette
évaluation.
2) Donnez toutes les étapes suivies par LISP
lors de l’évaluation des commandes (blag 3),
(blag 4),
(blag 5) et (blag 6).
(de blag (nb)
(if (< nb 4)
(if (= nb 1)
t
())
(blag (- nb 4))))
C Écrire Lisp
1. Écrire une fonction qui répond tsi ses
deux arguments entiers positifs ont un
autre diviseur entier que 1 (et () sinon).
Exemple : divcom(7,25) renvoie (), tan-
dis que divcom(24,72) renvoie t.
2. Écrire une fonction LISP qui renvoie tsi
son paramètre est le carré d’un nombre
entier (et () sinon).
? (estcarre 16)
= t
3. Donner une propriété mathématique per-
mettant de caractériser les multiples de 9
(exemple absurde : “n est un multiple
de 3 ssi n+3 est négatif.”). Écrire une
fonction LISP qui renvoie tsi le para-
mètre est multiple de 3 (et () sinon).
D Cinq fonctions LISP
1. Carrer : Vous allez maintenant écrire
une fonction qui prend en paramètre une
liste let qui renvoie une liste formée du
carré de tous les éléments de la liste l.
? (carrer ’(1 5 32))
= (1 25 1024)
2. SomCar : Écrivez une fonction qui prend
en paramètre une liste let qui renvoie
la somme des carrés de tous les éléments
de la liste l.
? (somcar ’(1 5 32))
= 1050