Introduction aux
Langages de Programmation
24 septembre 2009
A Utiliser Lisp
On fera bien attention à afficher toutes les étapes
suivies par l’interprète au cours de ces évalua-
tions.
1) Donnez toutes les étapes suivies par LISP
lors de l’évaluation des commandes (blag 3),
(blag 4),(blag 5) et (blag 6).
(defun blag (nb)
(if (< nb 3)
nb
(blag (- nb 2))))
2) Faire tourner à la main la fonction fol, voir
Fig 1, avec comme paramètres 5, puis 6, puis 7,
puis 8. Que fait la fonction fol ?
3) Faire tourner la fonction qui, voir Fig 2, avec
comme paramètres 2 et 5, puis 4 et 6, puis 15 et
21. Que fait la fonction qui ?
B Écrire Lisp
1. Écrire une fonction LISP qui renvoie Tsi
son paramètre est le cube d’un nombre en-
tier (et () sinon).
? (estcube 8)
= T
2. Donnez une fonction récursive terminale
qui fait la multiplication de deux nombres
par additions successives.
C Listes en LISP
1. Nbinversions : Nous dénommons une in-
version, dans une liste de nombres, quand
un nombre positif succède à un nombre
négatif, ou le contraire. Vous allez mainte-
nant écrire une fonction qui prend en para-
mètre une liste d’entiers, l, et qui compte
le nombre de ses inversions.
? (nbinv ’(1 -5 36 32 1 -3 -5))
= 4
2. Nbgrands : Écrivez une fonction qui prend
en paramètre une liste let qui renvoie
le nombre de ses éléments qui sont plus
grands que la moyenne de tous les élé-
ments.
? (nbgrands ’(7 -5 28 -4 9))
= 2
3. Lesgrands : Écrivez une fonction de deux
paramètres, l, une liste de nombres, et x,
un nombre, et qui fabrique la liste de tous
les nombres de l plus grands que x.
? (lesgrands ’(1 5 36) 2)
= (5 36)
4. Racine : Soit un nombre entier positif n,
donnez une fonction qui renvoie le nombre
entier rqui est le plus petit nombre entier
dont le carré soit supérieur ou égal à n.
r2≥net ∀x∈N, x < r =⇒x2< n
? (racine 8)
= 3
En effet, 32= 9 qui est supérieur à 8.
D Python
1. Utiliser
Faire tourner le fichier fol.py, voir Fig 3.
Que font les fonctions folle et fol ?
2. Écrire une fonction qui remplit une liste
avec les valeurs de 2ipour toutes les va-
leurs de ide 0 à n(qui sera le paramètre
de cette fonction).
3. Écrire une fonction qui renvoie 1 si son
paramètre, entier, est le carré d’un nombre
entier et 0 sinon.
E C
1. Que fait la fonction aie (cf. figure 4) ? On
la fera tourner avec, comme paramètres,
les couples de valeurs, 3 et 4, 3 et 5, 6 et
2, 6 et 3.
2. Fibonacci.
Écrivez une fonction itérative (pas récur-
sive) qui donne la n-ième valeur de la suite
de Fibonacci.
3. Écrire une fonction nbp qui renvoie le nombre
d’éléments positifs parmi les nb premiers
éléments d’un tableau de nombres. La fonc-
tion commencera par :
int nbp (int tab[100], int nb) {
Par exemple
nbp ([2, -5, -6, 4, 7, -9], 4)
renverra 2.