Introduction aux Langages de Programmation 20 septembre 2007 Nom Prénom Login Passwd Espace disque utilisé A __________ __________ __________ __________ __________ B (de blag (nb) (if (< nb 4) (if (= nb 1) t ()) (blag (- nb 4)))) Listes en LISP 1) Remplissez les blancs. . . ? = ? = ? = ? = ? = ? = ? = ? = 2) Donnez toutes les étapes suivies par LISP lors de l’évaluation des commandes (blag 3), (blag 4), (blag 5) et (blag 6). C 1. Écrire une fonction qui répond t si ses deux arguments entiers positifs ont un autre diviseur entier que 1 (et () sinon). Exemple : divcom(7,25) renvoie (), tandis que divcom(24,72) renvoie t. (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 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. Écrire Lisp 2. Écrire une fonction LISP qui renvoie t si son paramètre est le carré d’un nombre entier (et () sinon). ? (estcarre 16) = t 3. Donner une propriété mathématique permettant 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 t si le paramè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 l et 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 l et qui renvoie la somme des carrés de tous les éléments de la liste l. ? (somcar ’(1 5 32)) = 1050 3. Racine : Soit un nombre entier positif n, donnez une fonction qui renvoie le nombre entier r qui est le plus petit nombre entier dont le carré soit supérieur ou égal à n. le nombre entier r qui est le plus petit nombre entier dont le carré soit supérieur ou égal à n. r 2 ≥ n et ∀x ∈ N, x < r =⇒ x2 < n r 2 ≥ n et ∀x ∈ N, x < r =⇒ x2 < n ? (racine 8) = 3 4. Corneille : Faire une fonction qui prend en paramètre une liste et renvoie la somme des racine 1 des éléments de la liste. ? (corneille ’(1 5 32)) = 10 5. Pie : Faire une fonction qui prend en paramètre une liste et renvoie la liste des racine 2 des éléments de la liste. ? (pie ’(1 5 32)) = (1 3 6) E Utiliser Python Faire tourner le programme suivant et, donc afficher, exactement, ce que donne python. print racine (8) => 3 2. Corneille : Faire une fonction qui prend en paramètre une liste et renvoie la liste des racine 3 des éléments de la liste. print corneille(1 5 32) => [1, 3, 6] 3. Chic : Faire une fonction python qui fait la somme des n premiers entiers impairs, où n est sont paramètre. Exemple : print chic(3) => 9 4. Foo : Faire une fonction python qui fait la somme des carrés des n premiers entiers pairs, où n est sont paramètre. Exemple : print chic(3) => 20 def fol (n): return fo (n, 3, 1, 1) def fo (a, b, c, d): if a == 0: return b return fo (a-1,(b + c)-d,b,c) print 5,fol(5) print 7,fol(7) print 8,fol(8) def look (L): LT = [] for z in L: LT.insert(0, z * z) return LT print look ([7,5,3]) F Quatre fonctions Python 1. Racine : Soit un nombre entier positif n, donnez une fonction qui renvoie 1 2 au sens évoqué ci-dessus au sens évoqué ci-dessus 3 au sens évoqué ci-dessus