CSI2520 (map abs ‘(1 -2 3 -4 5 -6)) (1 2 3 4 5 6 ) (map (lambda (x y) (* x y)) ‘(1 2 3 4) ‘(8 7 6 5)) (8 14 18 20)  Permet d’appliquer une fonction aux.

Slides:



Advertisements
Présentations similaires
PL/SQL : Le Langage PL/SQL est une extension du SQL, qui offre
Advertisements

Calculs de complexité d'algorithmes
III- Les fonctions 1- Activité 02
Cours MIAGE Henry Boccon-Gibod 1 XML, langage de structuration documentaire Langage de transformation et langage d'interrogation.
CSI3525: Concepts des Langages de Programmation Notes # 5: Langages de Programmation Fonctionelle I: Introduction au Scheme.
Semaine #1 INF155 par Frédérick Henri.
ALGORITHMES RECURSIFS
Objets Opérateurs Listes
Un langage de programmation fonctionnelle
OCaml - Les listes L3 MI.
Récursivité.
Expressions et assignations
Xml/xslt : Extensible Stylesheet Language Transformation réalisé par: saÏd NAÏM.
Programmation fonctionnelle Le langage LISP
Complément Le diagramme des classes
Les structure d’un programme :
Les fichiers indexés (Les B-arbres)
Rappel... Caractérisation des matrices inversibles: Matrices bloc.
XSLT Langage de transformation darbre par Yves Bekkers.
Le langage ASP Les formulaires avec Request. Les formulaires sont employés pour transmettre des informations saisies par un client à une application Web.
Semaine #1 INF130 par Frédérick Henri.
Points importants de la semaine Les sous-programmes. Les paramètres.
P. Van Roy, LINF LINF1251: Algorithmes sur les Listes Peter Van Roy Département dIngénierie Informatique, UCL
Programmation fonctionnelle
Eric Laporte Institut Gaspard-Monge Université de Marne-la-Vallée France Introduction à Perl.
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
IFT 6800 Atelier en Technologies d’information
Chapitre 9 Les sous-programmes.
CSI2520 Le langage Scheme (2) Un langage de programmation fonctionnelle.
Instructions de contrôle
CSI2520 Ecriture sur l'écran ou dans un fichier Lecture à partir du clavier ou dun fichier Affichage de termes : *write(1+2) affiche 1+2 *write(X). affiche.
Structures de données IFT-2000 Abder Alikacem La récursivité Semaine 5 Département dinformatique et de génie logiciel Édition Septembre 2009.
III. Récursivité Principe et exemples
Structures de données IFT-2000 Abder Alikacem La récursivité Département d’informatique et de génie logiciel Édition Septembre 2009.
Animateur : Med HAIJOUBI
CSI2520  cdr vers le bas, cons vers le haut (define (traite-liste L) (if (null? L) () (cons (traite (car L)) (traite-liste (cdr L)))))
CSI2520  Cette fonction permet d’attribuer une valeur à une variable (set! nombre (+ 3 4)) (set! nombre (+ 1 nombre)) En SCHEME, les fonctions dont le.
Algorithmes de tri et de recherche
Créer des packages.
Méthodes de tri.
Arbres binaires et tables de hachage
 Syntaxe du langage PHP
05/02/98WEB ESNIG Modèle logique de données Oracle Designer/2000 & Oracle Web Server.
13 juin Le mécanisme de templates de Sympa.
Le langage Racket (Lisp)
Objets Opérateurs Listes
Variables et environnement utilisateur W. Barhoumi.
Évaluation et application des fonctions Let f = function x -> ( function y -> x+y );; Type :int -> (int ->int) int -> int ->int f int.
CSI2520 Un langage de programmation par scripting orienté-objet (et fonctionnel)
1 Programmation en C++ Marianne Morris. 2 Intro générale à la programmation On a déjà étudié le langage assembleur Langage de bas niveau Meilleur que.
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
Tutorat en bio-informatique Le 28 novembre Au programme… Algorithmes de tri dans un tableau (suite) Récursivité MAT1400.
Let rec f n = if n = 0 then true else g (n-1) g n = if n = 0 then false else f (n-1) val f : int -> bool = val g : int -> bool =
2005/2006 Structures de Données Introduction à la complexité des algorithmes.
La récursivité Mireille Goud HEG Vd AlgSD - Résurisivité.
CPI/BTS 2 Algorithmique & Programmation La récursivité Algo – Prog CPI/BTS2 – M. Dravet – 14/09/2003 Dernière modification: 14/09/2003.
Écrire des fonctions, max et min, qui calculent le maximum, et le minimum de deux éléments x et y. Exercice 1. max (min) : fonction qui prend deux valeurs,
MATHÉMATIQUES DISCRÈTES Chapitre 2 (section 1)
Interpolation et Approximation
PRO-1027 Programmation Scientifique en C
Initiation aux bases de données et à la programmation événementielle
CSI25101 Tri Plus efficace. CSI25102 Tri récursif Le tri récursif divise les données de grande taille en deux presque moitiés et est appelé récursivement.
** Flash séance 2 Action script. ** Action Script Ajoute de l’interactivité Permet de contrôler les clips  Langage de programmation orienté objet.
Évaluation – Panorama 13 À l’étude…. Panorama 13 Dans un problème, vous devez être capable :  d’identifier les inconnues, c’est-à-dire les éléments dont.
IFT359 – Programmation fonctionnelle Thème #6 Appel terminaux 1.
IFT359 – Programmation fonctionnelle Thème 07 Fermeture, affectation ou monades 1.
IFT359 – Programmation fonctionnelle Thème #8 Création de nouvelles formes syntaxiques 1.
IFT359 – Programmation fonctionnelle Thème #10 Évaluation par environnement et évaluateur méta-circulaire 1.
IFT359 – Programmation fonctionnelle exercice backquote, unquote, unquote-splicing 1.
IFT359 – Programmation fonctionnelle Thème 02 B partie A introduction au langage fonctionnel choisi 1.
Transcription de la présentation:

CSI2520 (map abs ‘( )) ( ) (map (lambda (x y) (* x y)) ‘( ) ‘( )) ( )  Permet d’appliquer une fonction aux éléments d’une liste ◦ peut accepter plusieurs arguments

(define (extraire-prefixes l) (define (extraire-prefixes2 l l1) (if (null? l) l1 (extraire-prefixes2 (cdr l) (map (lambda (u) (cons (car l) u)) (cons '() l1))))) (extraire-prefixes2 (reverse l) '())) > (extraire-prefixes '( )) '((1) (1 2) (1 2 3) ( ))

(filter (lambda (x) (> x 0)) ‘( )) ‘(1 3 5)  Permet d’éliminer des éléments ne répondant pas à la condition définie par le filtre

(define (notre-filter pred lst) (cond ((null? lst) '()) ((pred (car lst)) (cons (car lst) (notre-filter pred (cdr lst)))) (else (notre-filter pred (cdr lst))))) (define (notre-filter pred lst) (reverse (filter-help pred lst '()))) (define (filter-help pred lst res) (cond ((null? lst) res) ((pred (car lst)) (filter-help pred (cdr lst) (cons (car lst) res))) (else (filter-help pred (cdr lst) res)))) ou…

 Elle permet de construire une liste d’entiers à partir de la séquence des nombres naturels > (build-list 10 (lambda (n) (* n 2))) '( ) > (build-list 10 (lambda (n) n)) '( )

CSI2520  let – permet de définir une liste de variables locales a un bloc – à chaque nom de variable est associé une valeur – let retourne la dernière expression dans le bloc > (let ((a 2) (b 3)) ; variables locales (+ a b)); bloc ou les variables sont définies 5 > a=> Error: variable a is not bound. > b=> Error: variable b is not bound.

CSI2520 f(x,y) = x*(1+x*y) 2 + y*(1-y) + (1+x*y)*(1-y) a = 1+x*y b = 1-y f(x,y) = x*a2 + y*b + a*b >(define (f x y) (let ((a (+ 1 (* x y))) (b (- 1 y))) (+ (* x a a) (* y b) (* a b)))) > (f 1 2) 4

CSI2520  let permet aussi de définir des fonctions locales: >(let ((a 3) (b 4) (square (lambda (x) (* x x))) (plus +)) (sqrt (plus (square a) (square b))) ) => 5

CSI2520 let permet une assignation en parallèle: > (define x 'a) > (define y 'b) > (list x y)=> (a b) > (let ((x y) (y x)) (list x y)) => 1.d’abord évaluer toutes les expressions dans la liste 2.Ensuite associer les noms aux valeurs. b a (b a)

CSI2520 > (let ((x 1) (y (+ x 1))) (list x y)) => Error: variable x is not bound.  Pour permettre de définir y en termes de x: ◦ besoin d’utiliser let*  let* - similaire a let, mais permet une association séquentielle

CSI2520 > (let* ((x 1) (y (+ x 1))) (list x y)) => (1 2)  Comment on peut utiliser let seulement? > (let ((x 1)) (let ((y (+ x 1))) (list x y)))

CSI2520 (let ((x 2) (y 3)) (let ((x 7) (z (+ x y))) (* z x))) 35 (let ((x 2) (y 3)) (let* ((x 7) (z (+ x y))) (* z x))) 70

CSI2520  letrec - similaire a let*, mais permet de définir des fonctions récursives  Définir la factorielle localement: > (letrec ((fact (lambda (n) (if (= n 1) 1 (* n (fact (- n 1))))))) (fact 5)) => 120

CSI2520 (define (application fct) (letrec ((app (lambda (L) (if (null? L)() (cons (fct (car L)) (app (cdr L))))))) app)) ((application traite) L) ; la fonction traite est ; appliquée à tous les éléments de la liste

CSI2520 (let name ((var val)...) exp 1 exp 2...) est équivalent à: (letrec ((name (lambda (var...) exp 1 exp 2...))) (name val...))

CSI2520 (define divisors (lambda (n) (let f ((i 2)) (cond ((>= i n) '()) ((integer? (/ n i)) (cons i (f (+ i 1)))) (else (f (+ i 1))))))) (divisors 32) ( )

CSI2520 (let loop ((numbers '( )) (nonneg '()) (neg '())) (cond ((null? numbers) (list nonneg neg)) ((>= (car numbers) 0) (loop (cdr numbers) (cons (car numbers) nonneg) neg)) ((< (car numbers) 0) (loop (cdr numbers) nonneg (cons (car numbers) neg))))) ((6 1 3) (-5 -2))

 Avec le tri fusion ◦ Extraire des sous-listes ◦ Subdiviser une liste ◦ Fusion de listes  Avec le tri rapide ◦ Choisir un pivot ◦ Partionner une liste ◦ Trier une sous-liste

CSI2520 (define (sub L start stop ctr) ; extract elements start to stop into a list (cond ( (null? L) L) ( (< ctr start) (sub (cdr L) start stop (+ ctr 1))) ( (> ctr stop) '() ) (else (cons (car L) (sub (cdr L) start stop (+ ctr 1))) ) ) )

CSI2520 (define (split L) ; division de la liste en 2: ; retourne ((1ere moitié)(2nde moitié)) (let ((len (length L))) (cond ((= len 0) (list L L) ) ((= len 1) (list L '() )) (else (list (firstHalf L (/ len 2)) (lastHalf L (/ len 2))))))) (define (firstHalf L N) (if (= N 0) null (if (or (= N 1) (< N 2)) (list (car L)) ;else (cons (car L) (firstHalf (cdr L) (- N 1))))) (define (lastHalf L N) (if (= N 0) L (if (or (= N 1) (< N 2)) (cdr L) ;else (lastHalf (cdr L) (- N 1))) ))

CSI2520 (define (mergelists L M) ; supposer L et M déjà triés (cond ( (null? L) M) ( (null? M) L) ( (< (car L)(car M)) (cons (car L) (mergelists (cdr L)M))) (else (cons (car M) (mergelists L (cdr M)))) ) )

CSI2520 (define (mergesort L) (cond ((null? L) '()) ((= 1 (length L)) L) ((= 2 (length L)) (mergelists (list (car L)) (cdr L))) (else (mergelists (mergesort (car (split L)) ) (mergesort (car (cdr (split L)))))) ))

CSI2520 (define (qsort e) (if (or (null? e) (<= (length e) 1)) e (let loop ((left null) (right null) ; named let (pivot (car e)) (rest (cdr e))) (if (null? rest) (append (append (qsort left) (list pivot)) (qsort right)) (if (<= (car rest) pivot) ; partition (loop (append left (list (car rest))) right pivot (cdr rest)) (loop left (append right (list (car rest))) pivot (cdr rest)))))))