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.
r2net xN, 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.
4. Écrire une fonction itérative qui calcule la
puissance n d’un nombre a.
5. Écrire une fonction qui inverse un tableau
de néléments (le premier devient le der-
nier, etc.). nsera bien sûr fourni en argu-
ment de la fonction.
(defun fol (n)
(folle n 2 1 1))
(defun folle (a b c d)
(if (= a 0)
b
(folle (- a 1)
(- (+ b c) d)
b c)))
Figure 1 – fol de Lisp
(defun qui (a b)
(if (= a b)
a
(if (< a b)
(qui a (- b a))
(qui (- a b) b))))
Figure 2 – qui en Lisp
def folle(a):
if (a/2)*2==a:
return 0
return 1
def fol (n,p):
i=1
while p > 0:
if folle(p):
i=i*n
n=n*n
p=p/2
return i
print fol(5,1)
print fol(5,2)
print fol(5,3)
print fol(4,4)
Figure 3 – fol.py
int aie (int n, int m) {
int p;
p = 0;
while (m > 0) {
p=p+n;
m=m-1;
}
return p;
}
Figure 4 – Aïe en C
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !