;; Ces programmes sont sous licence CeCILL-B V1. ;; Exécution en ligne de commande avec Bigloo : ;; $ bigloo -i CalculFormel.scm (define (laValeur t x y) ; vecteur t des coefficients (let ((degreMax (- (vector-length t) 1))) (let boucle ((degre 0) (c 1)) (set! y (+ y (* (vector-ref t degre) c))) (if (< degre degreMax) (boucle (+ degre 1) (* c x)) y)))) (define (laDerivee t) (let* ((longueur (vector-length t)) (u (make-vector longueur 0)) (degreMax (- longueur 1))) (let boucle ((degre 0)) (if (= degre degreMax) (vector-set! u degre 0) (begin (vector-set! u degre (* (vector-ref t (+ degre 1)) (+ degre 1))) (boucle (+ degre 1))))) u)) (define (AffichePolynome p) (let ((degreMax (- (vector-length p) 1))) (let boucle ((degre 0)) (display (vector-ref p degre)) (if (> degre 0) (begin (display " x") (if (> degre 1) (begin (display "^") (display degre))))) (if (< degre degreMax) (begin (display " + ") (boucle (+ degre 1))))))) (define (CalculFormel) (let* ((degreMax 3) (t (make-vector (+ degreMax 1) 0)) (degre 0)) (vector-set! t 3 2) ;; coefficients du (vector-set! t 2 8) ;; polynôme dans (vector-set! t 1 7) ;; un vecteur t (vector-set! t 0 3) ;; Affichage de la fonction (AffichePolynome t) (newline) ;; Calcul et affichage de sa valeur (let ((x 5) (y 0)) (display (laValeur t x y)) (newline)) ;; Calcul de sa dérivée (let ((u (laDerivee t))) (AffichePolynome u) (newline)))) (CalculFormel)