cours  |  td  |  examens  |  doc  |  liens  |  horaires
 Scheme

Université de Caen - UFR de Sciences
Deug MIAS-MASS
Marc Chemillier

Scheme - TD n° 8
25 avril 2001

Récursions sur les listes (suite)
Base de données




  • Exercices : (1h1/2)

    1. On considère la fonction suivante:
      (define (mixage l1 l2)
        (cond ((null? l1) l2)
              (else (cons (car l1) (mixage l2 (cdr l1))))))
      Evaluer:
      > (mixage '(1 2 3 4 5) '(a b c)) 
      (1 a 2 b 3 c 4 5) 
      
      > (mixage '(une voiture la ensoleillee) '(belle sur route)) 
      (une belle voiture sur la route ensoleillee)
      

    2. Faire la fonction (met-a-zero l) qui remplace tous les éléments de l qui sont des nombres par des 0.
      (define (met-a-zero l)
        (cond ((null? l) ())
              ((number? (car l)) (cons 0 (met-a-zero (cdr l))))
              (else (cons (car l) (met-a-zero (cdr l))))))
      
      = (map (lambda (x) (if (number? x) 1 x)) l)
      
      (define (met-a-zero l)
        (cond ((null? l) ())
              (else (cons (if (number? (car l)) 0 (car l))
                          (met-a-zero (cdr l))))))
      
    3. Faire la fonction (coupler l1 l2) qui fabrique la liste des couples d'éléments de l1 et l2 en même position.
      (define (coupler l1 l2)
        (cond ((or (null? l1) (null? l2)) ())
              (else (cons (list (car l1) (car l2))
                          (coupler (cdr l1) (cdr l2))))))
      
    4. Faire une fonction (remplace-max l) qui remplace les deux premiers éléments de l par le plus grand des deux. En remarquant que la liste obtenue est strictement plus courte que l, en déduire une fonction (maximum l) qui calcule l'élément maximum d'une liste de nombres.
      (define (maximum l)
        (cond ((null? l) ())
              ((null? (cdr l)) (car l))
              (else (maximum (remplace-max l)))))
      
      (define (remplace-max l)
        (cons (if (> (car l) (cadr l)) (car l) (cadr l))
              (cddr l)))
      
    5. Faire la fonction (double l) qui double tous les éléments de l:
      > (double '(je be gaye)) 
      (je je be be gaye gaye)
      
      (define (double l)
        (cond ((null? l) ())
              (else (cons (car l)
                          (cons (car l) (double (cdr l)))))))
      

  • Avec machines : (1h1/2) Base de données des notes de TP


  • Avec machines : (1h1/2) Base de données discographique des Beatles


    cours  |  td  |  examens  |  doc  |  liens  |  horaires
     Scheme