Accueil du site
 
Biologie Chimie Informatique
Math NTIC Physique
 
 
Informatique
Communauté
  Cours
  Emploi
  Logement
  Universités
  Réforme "LMD"
   
Services
  Jeux
  Info
  Météo
   
Plus
  Accueil
  Liens


Le site n'est plus mis a jour actuellement...
Bilan TP
© snoclub.fr.st

 

·  Posez des questions pendant le cours

  • le cours est court exprès
  • j'enseigne pour transmettre la connaissance, pas pour planter à l'exam
  • je fais un poly pour que vous n'ayez pas besoin de gratter

·  Relisez le cours avant de venir en TP/TD

·  Apportez le cours en TP (syntaxe), ou consultez-le on-line

·  Lisez attentivement la feuille qui vous est remise
Tout ce qui est dessus est important et utile.

·  Notion de symbole (il faudra que je modifie le cours)

  • (define alpha 10). define est une forme spéciale, déjà vue pour définir les fonctions. Ici, elle sert à :
    • créer un symbole
    • c'est-à-dire réserver une case mémoire, à la première adresse libre, disons 42 (mais vous ne le savez pas et n'avez pas besoin de le savoir)
    • mettre 10 dans cette case

Dorénavant, si je parle de alpha, l'interpréteur

    • va voir dans sa table d'adressage
    • y trouve que alpha est synonyme de 42
    • demande à la mémoire ce qu'il y a à l'adresse 42
    • reçoit la réponse 10

(Donner un nombre à chaque étudiant, qu'il/elle fasse la différence avec son numéro de place et son nom)

  • Si je parle de 'alpha, ou de (quote alpha), l'interpréteur
    • va voir dans sa table d'adressage
    • y trouve que alpha existe
    • et c'est tout
  • Si je parle de 5, l'évaluateur
    • reconnait que c'est un nombre
    • et c'est tout
  • Si je parle de "alpha", l'évaluateur
    • reconnait que c'est une chaine de caractères (string)
    • et c'est tout


Exemple d'exécution :

 [47] la fonction cons
 Error : LA has no value
 Error : FONCTION has no value
 Error : CONS has no value
 [48] "la fonction cons"
 "la fonction cons"
 [49] (define la 10)
 10
 [50] (define fonction "bonjour")
 "bonjour"
 [51] la fonction 'cons
 10
 "bonjour"
 cons
 [52]
 

·  Indentez vos programmes
Cela fait gagner énormément de temps pour y trouver les erreurs

·  Erreur la plus fréquente :
fonc (arg) au lieu de (fonc arg)

·  carré

 (define carre
   (lambda (x)
     (* x x)
 ) )
 

·  racine

 (define racine
   (lambda (x)
     (if (> x 0)
       (sqrt x)
       0
 ) ) )
 

·  echange

Les morceaux de la liste qui nous intéressent sont :
car , car du cdr , et cdr du cdr .
Il faut fabriquer une liste, donc utiliser la fonction cons :
 (define echange
   (lambda (l)
     (cons
       (car (cdr l))
       (cons
         (car l)
         (cdr (cdr l))
 ) ) ) )
 

·  ou exclusif

a XOR b est vrai si seul l'un des deux est vrai
 (define ou-ex
   (lambda (a b)
     (or
       (and b1 (not b2))
       (and b2 (not b1))
 ) ) )
 

·  Fibonacci

 (define fibo
   (lambda (n)
     (if (= n 0)
       1
       (if (= n 1)
         2
         (+ (fibo (- n 1)) (fibo (- n 2)))
 ) ) ) )
 

 

 Corrigé du TP4

·  Encore beaucoup de fonc (arg

·  Indentez

·  Lisez attentivement les messages d'erreur, bien que ceux du Scheme que vous avez soient peu informants ·  Exercices sur les listes
Toujours se demander : quel est le car, quel est le cdr
Ne jamais oublier que le cdr est une liste
Si vous voyez un point, c'est que vous avez oublié la règle ci-dessus
On évalue de l'intérieur vers l'extérieur.

  • (() () poule)
    • Le car est la liste vide, le cdr est (() poule)
    • Le car est la liste vide, le cdr est (poule)
    • Donc :
·          (cons
·            '()
·            (cons
·              '()
·              (cons 'poule '())
·          ) )
  • (oie poule (poule) paon)
    • oie et (poule (poule) paon))
    • poule et ((poule) paon))
    • (poule) et (paon)
·           (cons
·             'oie
·             (cons
·               'poule
·               (cons
·                 (cons 'poule '())
·                 (cons 'paon '())
·           ) ) )
  • (poule oie poule ((poulet)))
    • poule et (poule oie ((poulet)))
    • oie et (poule ((poulet)))
    • poule et (((poulet)))
    • ((poulet)) et ()
    • Continuons sur le car :
    • (poulet) et ()
    • Encore :
    • poulet et ()
    • Donc :
·           (cons
·             'poule
·             (cons
·               'oie
·               (cons
·                 'poule
·                 (cons
·                   (cons
·                     (cons 'poulet '())
·                     '()
·                   )
·                   '()
·           ) ) ) )
  • (((poule) oie) paon)
    • ((poule oie) et (paon)
    • Sur le car :
    • (poule) et (oie)
    • Donc :
·           (cons
·             (cons
·               (cons 'poule '())
·               (cons 'oie '())
·             )
·             (cons 'paon '())
·           )

·  Extractions

  • '(aigle (paon (pie oie)))
    • aigle et ((paon (pie oie))) : c'est le cdr qui m'intéresse
    • (paon (pie oie)) et () : car
    • Sur le car :
    • paon et ((pie oie)) : cdr
    • (pie oie) et () : car
    • Sur le car :
    • pie et (oie) : cdr
    • : car
    • On évalue de l'intérieur vers l'extérieur, donc on écrit les fonctions de droite à gauche, donc on remonte ce qui est ci-dessus :
·         (car (cdr (car (cdr (car (cdr 
·         ou
·         (cadr (cadr (cadr
·         ou
·         (cadar (cdadr
·         ou ... , pas beaucoup d'importance                            
  • '(((oie) poule))
    • ((oie) poule) et () : c'est le car qui m'intéresse
    • (oie) et (poule) : car
    • oie et () : car
·         (car (car (car
·         ou 
·         (caaar
  • '(poule paon (oie) aigle)
    • poule et (paon (oie) aigle) : cdr
    • paon et ((oie) aigle) : cdr
    • (oie) et (aigle) : car
    • oie et () : car
·         (car (car (cdr (cdr
  • '(paon (poule (poulet (oie))))
    • paon et ((poule (poulet (oie)))) : cdr
    • (poule (poulet (oie))) et () : car
    • poule et ((poulet (oie))) : cdr
    • (poulet (oie)) et () : car
    • poulet et ((oie)) : cdr
    • (oie) et () : car
    • oie et () : car
·         (car (car (cdr (car (cdr (car (cdr 

·  fonctions sur les listes

  • dernier élément d'une liste
·           (define der
·             (lambda (liste)
·             (if (null? liste)
·               '()
·               (if (null? (cdr liste))
·                 (car liste)
·                 (der (cdr liste))
·           ) ) )
  • ajouter 10
·           (define ajout
·             (lambda (liste)
·               (if (null? liste)
·                 '()
·                 (cons
·                   (+ (car liste) 10)
·                   (ajout (cdr liste))
·           ) ) ) )

·  sous-liste des symboles

  (define symlist
    (lambda (liste)
      (if (null? liste)
        '()
        (if (symbol? (car liste))
          (cons (car liste) (symlist (cdr liste)))
          (symlist (cdr liste))
  ) ) ) )

·  n premiers caractères

  (define ncars
    (lambda (liste n)
      (if (or (= n 0) (null? liste))
        '()
        (if (string? (car liste))
          (cons
            (car liste)
            (ncars (cdr liste) (- n 1))
          )
          (ncars (cdr liste) n)
  ) ) ) )

·  nombre d'occurrences

  (define nbocc
    (x liste)
    (if (null? liste)
      0
      (if (equal? (car liste) x)
        (+ (nbocc x (cdr liste)) 1)

        (nbocc x (cdr liste))  ) ) )  

Source : www.SNOCLUB.fr.st – Auteur : JM Fouet
ÓSNOCLUB

     
Tous droits réservés © snoclub 2001-2002