CSI3525: Concepts des Langages de Programmation - PowerPoint PPT Presentation

About This Presentation
Title:

CSI3525: Concepts des Langages de Programmation

Description:

CSI3525: Concepts des Langages de Programmation Notes # 5: Langages de Programmation Fonctionelle I: Introduction au Scheme Introduction I Le paradigme de ... – PowerPoint PPT presentation

Number of Views:49
Avg rating:3.0/5.0
Slides: 18
Provided by: siteUott5
Category:

less

Transcript and Presenter's Notes

Title: CSI3525: Concepts des Langages de Programmation


1
CSI3525Concepts des Langages de Programmation
  • Notes 5
  • Langages de Programmation Fonctionelle I
    Introduction au Scheme

2
Introduction I
  • Le paradigme de programmation fonctionelle est
    base sur les fonctions mathematiques.
  • Une fonction mathematique est une application qui
    va de lensemble de depart a lensemble
    darrivee. Elle prend un element de lensemble de
    depart et le transforme en un element de
    lensemble darrivee.
  • Les fonctions sont controllees par des appels
    recursifs et des instructions conditionnelles
    plutot que par des sequences dinstructions et
    des repetitions iteratives.
  • De meme, une fonction calcule toujours le meme
    resultat etant donne les memes arguments dentrée.

3
Introduction II
  • Les fonctions peuvent etre combinees de maniere
    elegante et pratique.
  • En particulier, on peut creer des fonctions
    dordre plus eleve--aussi appellees formes
    fonctionelles--qui, ou bien prennent comme
    argument une autre fonction, ou bien retournent
    comme resultat une fonction.
  • Examples de formes fonctionelles les
    compositions, les constructions et les
    applications generalisees.

4
Fondation des Langages de Programmation I
  • Lobjectif de la programmation fonctionnelle est
    dimiter le plus possible les fonctions
    mathematiques. Ces langages sont donc tres
    differents des langages imperatifs.
  • En particulier, un langage fonctionel pur
    nutilise ni variables ni instruction
    daffectement. Il utilise la recursion pour
    obtenir de la repetition.
  • Les programmes sont des definitions de fonctions
    et des specifications dapplications de
    fonctions.
  • Les executions sont des evaluations
    dapplications de fonctions.

5
Fondation des Langages de Programmation II
  • Un langage fonctionel doit avoir
  • Un ensemble de fonctions primitives,
  • Un ensemble de formes fonctionnelles qui
    permettent de construire des fonctions complexes
    a partir de ces fonctions primitives,
  • Une operation dapplication de fonction,
  • Et, finallement, une ou plusieures structures de
    donnees
  • Bien que les langages fonctionnels soient souvent
    implementes avec des interpreteurs, ils peuvent
    aussi etre compiles.

6
Quelques examples en Scheme.
7
Lisp en General
  • Scheme (1975) represente lun des nombreux
    dialectes du Lisp (originellement Lisp 1.5
    (1975) plus recemment Common Lisp (1985)).
  • Le Lisp 1.5 navait que deux types de donnees
    des atomes et des listes. Les atomes sont les
    symboles du Lisp. On peut avoir des listes de
    listes et une liste peut melanger les atomes et
    sous-listes de different degree sans probleme.
  • Example (A (B C) D (E (F G))) est parfaitement
    valide.
  • On parle dun type different des types en
    langages imperatifs.

8
Syntaxe du Lisp et de ses descendants
  • Les programmes et les donnees sont exprimes dans
    la meme syntaxe
  • Applications de fonctions et structures
    conditionnelles sont ecrites sous la forme de
    listes, en parentheses en utilisant la forme
    prefix.
  • Programmes et donnees peuvent etre distingues
    par leurs contexte.
  • Cette uniformite dexpression donne aux langages
    fonctionnels leur flexibilite et leur puissance
    dexpression les programmes peuvent etre
    manipules comme sils etaient des donnees!!

9
Les 5 fonctions primitives du Lisp Pur 2 autres
operations essentielles
  • Primitives
  • cons --- pour construire une liste
  • car --- pour trouver le premier element dune
    liste.
  • cdr --- pour trouver la queue dune liste.
  • eq -- pour verifier si deux atomes sont egaux.
  • atom -- pour verifier si une entite est un atome.
  • Operations Supplementaires Essentielles
  • Evaluation dune expression
  • Application dune fonction a des arguments (deja
    evalues)
  • Le Lisp 1.5 a aussi un certains nombre
    doperations auxilliaires pour gerer les listes
    darguments et les evaluations conditionnelles.

10
LUsage du Lisp et de ses Descendants I
  • Comme Prolog et SmallTalk, Lisp est utilise
    interactivement
  • Il ny a pas de programme principal
  • La boucle du niveau superieur evalue une
    expression (elle peut aussi faire du I/O). Cette
    expression, en revanche, peut invoqier une
    fonction qui implemente un algorithme long et
    complique
  • Un programme de Lisp consiste en une collection
    de fonctions qui peuvent etre appelees
    (directement ou indirectement) a partir de la
    boucle du niveau superieur.

11
LUsage du Lisp et de ses Descendants II
  • Les expressions sont, normallement, evaluees.
    Afin deviter levaluation, il faut le demander
    specifiquemen au Lisp en utilisant lexpression
    quote ou .
  • Les atomes sont traites literallement ils sont
    ce quils sont et rien de plus il se peut que
    latome ait une signification dans le domaine
    dapplication, mais le Lisp ne le sait pas.

12
Revenons au Scheme Voici ses caracteristiques
  • Le Scheme est un langage de tres petite taille
    avec une syntaxe et semantique simple.
  • Il utilise levaluation a portee locale (ou
    statique). Cela signifie que la portee (ou
    visibilite) dune variable peut-etre determinee
    avant lexecution du programme. gt La portee
    dune variable est plus simple a determiner que
    si elle doit etre determinee dynamiquement (comme
    en Lisp 1.5).
  • Il traite les fonctions comme entites de premiere
    classe, ce qui veut dire que les fonctions
    peuvent- etre manipulees comme des donnees.
  • Les structures de donnees sont simples, uniformes
    et versatiles et sappellent S-expressions (comme
    en Lisp)

13
Les Structures de Donnees
  • Nombres entiers ou reels
  • Variables
  • un nom attache a un objet (define pi 3.14159)
  • Le type dune variable est implicite et depend de
    sa valeur.
  • Une variable peut recevoir une nouvelle valeur
    (set! pi 3.141592)
    (set! pi alpha)
  • Symboles un nom et rien quun nom pas de
    valeur!
  • Listes (E1 E2En) ou Ei est une S-expression

14
Les Fonctions Primitives I
  • , -, , et / gt Notation Prefixe -- Ex ( 3 7)
  • EVAL est une fonction utilitaire appellee
    automatiquement a chaque etape de la boucle
    lecture-evaluation-ecriture de linterpreteur.
    Elle evalue, tout dabord, les parametres de la
    fonction, et ensuite, evalue la fonction
    appliquee a ces parametres.
  • quote ou est la fonction qui evite levaluation
    dexpressions.
  • car, cdr, cons, list (et aussi caaar, cddr,
    cadaddadr, etc.)

15
Les Fonctions Primitives II
  • eq?, null?, list?
  • , ltgt, gt, lt, gt, lt, even?, odd?, zero?, eqv?
  • display, newline
  • define
  • (define (square x) ( x x)) ou
  • (define squre (lambda (x) ( x x)))
  • cond, if
  • (cond ((equal? x 0) f) (if
    (equal? x 0) ((gt x 5) 5) ltgt
    f (else t))
    t)

16
Fonctions de haut niveau I (fonctions qui
peuvent etre des arguments)
  • Example map
  • map(f (E1 E2En))((f E1) (f E2)(f En))
  • ( define ( map f l )
  • ( if ( null? l )
  • l
  • ( cons ( f ( car l ) ) ( map f (
    cdr l) ) )
  • ) )
  • E.g. (map (lambda (x) ( x 1)) (1 2 3) )
    --gt (2 3 4)

17
Fonctions de haut niveau II (fonctions qui
peuvent etre des arguments)
  • Les reducteurs
  • Etant donne une fonction binaire f et une
    constante f0, on veut definire la fonction de
    haut niveau telle que (reduit f (E1 E2 En))
    --gt
  • (f E1 (f E2 (f (f
    En f0) )))
  • Examples (E1 E2 En) --gt E1 E2 En 0
  • (E1 E2 En) --gt E1 E2
    En 1
  • ( define (reduce f f0 1)
  • ( if (null? l )
  • f0
  • (f (car l) (reduce f f0
    (cdr l))) ) )
  • E.g. (reduce 0 ( 1 2 3 4) ) --gt 10
  • (reduce 1 ( 1 2 3 4) ) --gt 24
Write a Comment
User Comments (0)
About PowerShow.com