Programación con lisp

Páginas: 7 (1553 palabras) Publicado: 26 de octubre de 2010
Programación Funcional g Lisp-Scheme
Dr. Oldemar Rodríguez Rojas D Old R dí R j Escuela de Informática Universidad de Nacional

¿Dónde bajar? Lisp (EdScheme): www.schemers.com www schemers com

Ejemplo: je p o
=> (+ (* 3 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6)) ( ( ( ( )( ))) ( ( ) )) 57 ( ) => (define tamaño 2) tamaño > => tamaño 2 => (+ 3 tamaño) 5 => (* 2 tamaño) 4

Ejemplo: je p o
=>(define Pi 3.14159) pi i => (define radio 10) ( ) radio => (define circunferencia (* 2 Pi radio)) ( circunferencia => circunferencia 62.8318 62 8318

Funciones en Lisp Ejemplo:
=> (d f (define ( (cuadrado x) (* x x)) d d ) )) => (cuadrado 2) 4

Ejemplo: j p
=>(define (circunferencia radio) >(define (* Pi radio)) =>(circunferencia 4) >(circunferencia 12.56636

S Sintaxis de lasfunciones:
(define ( ) (cuerpo)) ( ))

Ejemplo:
=>(define (suma cuadrados x y) >(define (suma_cuadrados (+ (cuadrado x) (cuadrado y))) =>(suma cuadrados 2 3) >(suma_cuadrados 13

Ejemplo: j p
=>(define (f a) >(define (suma_cuadrados (+ a 1) (- a 1))) =>(f 5) >(f 52

El modelo de sustitución para evaluar funciones l f i
(f 5) (suma_cuadrados (+ 5 1) (- 5 1)) (+ (cuadrado (+ 5 1)) (cuadrado (-5 1))) (+ ( (+ 5 1) (+ 5 1)) ( (- 5 1) ( 5 1))) (* (* ( ((+ (* 6 6) (* 4 4)) (+ ( 36 16) ) 52

S Sintaxis del if f
(if ) lt ti )

Ejemplo: j p
=>(define (f x) (if (>= x 2) (* x x) (if (and (< x 2) (> x -2)) (+ x 1) (/ x 2)))) )))) =>(f 4) 16 =>(f 0) 1

Expresiones condicionales y predicados
Sintaxis del Si t i d l cond d (cond ( ) ( ) ..... ( ) (else )) 1

Ejemplo: j p
=>(define(f x) (d fi ) ( (cond ((>= x 2) (+ (* x x) 1)) (( )( ( ) )) ((= x 0) 2) (else (* x x x)))) =>(f 3) 10

Sentencias read y write - Evaluando un documento
(define (calcula-nota x y z) (/ (+ x y z) 3)) (d (define (paso? n) (pa o ) (>= n 70)) (define (nota) (newline) (write "Deme las notas") (newline) (calcula-nota (read) (read) (read)))

(define (resultado) (if (paso? (nota)) (write "GANO")(write "AMPLIACION"))) =>(resultado) "Deme las notas" 90 80 70 GANO "GANO"

Definiciones Internas:
(define (todo) ( (define (calcula-nota x y z) ( ) (/ (+ x y z) 3)) (define (paso? n) (>= n 70)) (define (nota) (newline) (write "Deme las notas") (newline) (calcula-nota (read) (read) (read))) (define ( (d fi (resultado) lt d ) (if (paso? (nota)) (write "GANO") (write "AMPLIACION"))) AMPLIACION )))(resultado))

todo =>(todo) "Deme las notas" 90 40 50 AMPLIACION "AMPLIACION“ =>(resultado) >(resultado) // ERROR top-level: unbound variable: resultado

Recursión y Recursión Lineal
Ejemplo 1:

Versión Recursiva (define (factorial n) ( ( ( (if (or (= n 0) (= n 1)) )( )) 1 (* n (factorial (- n 1))))) (f t i l (

e s ó ecu s a ea ( ecu s ó ea ) Versión Recursiva Lineal (RecursiónLineal) (define (factorial1 n) (fac-iter 1 1 n)) (define (fac-iter resultado i n) (if (> i n) ( ) resultado (fac-iter (* resultado i) (+ i 1) n)))

Modelo de Sustitución ode o Sust tuc ó
(factorial1 4) (fac-iter 1 1 4) (fac-iter 1 2 4) (fac iter (fac-iter 2 3 4) (fac-iter 6 4 4) (fac-iter 24 5 4)

Ejemplo 2:

Versión Recursiva (define (fib n) ( (cond ((= n 0) 0) (( ) ) ((= n 1) 1) ( l (+(fib (- n 1)) (fib (- n 2)))))) ( ( (else

( (define (fib1 n) ( ) (fib-iter1 0 1 0 n)) ( (define (fib-iter1 ant res i n) ( ) (if (>= i n) ant (fib iter1 (fib-iter1 res (+ res ant) (+ i 1) n)))

Versión Recursiva Lineal (Recursión Lineal) (define (fib1 n) (fib-iter 1 0 n)) (define (fib-iter a b n) (if (= n 0) b (fib-iter (+ a b) a (- n 1))))

Funciones co o Parámetro u c o es como a á et oEjemplo 1: (define (serie1 a n) (if (> a n) 0 (+ a (serie1 (+ a 1) n))))

Ejemplo 2: j p define (serie2 d fi ( i 2 a n) ) ( ( (if (> a n) ) 0 (+ (* a a) (serie2 (+ a 1) n))))

Ejemplo 3:
( (define ( (serie3 a n) ) (if (> a n) 0 (+ (/ 1 (+ (* a a) 1)) (serie3 (+ a 1) n))))

Toda serie es de la forma: Programa general (define (serie f a n) (if (> a n) ) 0 (+ (f a) (serie f (+ a 1) n))))...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Lenguaje de Programación LISP
  • Lisp
  • lisp
  • Lisp
  • lisp
  • lisp dicertacion
  • Examen LISP
  • ejercicios de lisp

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS