Documente Academic
Documente Profesional
Documente Cultură
Ingeniera en Informtica
Programacin Funcional
Lenguajes basados en funciones matemticas
Funciones Matemticas
Definen un conjunto de valores, ms que el
procedimiento de calculo
Establece una correspondencia entre los
miembros de un conjunto llamado Dominio a otro
conjunto llamado Rango.
La correspondencia es definida por una
expresin o en algunos casos por una tabla.
Programacin Funcional
Funciones Matemticas Caractersticas
El orden de evaluacin es controlado por
condicionales y recursin, en vez de secuencias y
repeticiones.
No hay efectos de borde (No hay definicin de
variables en el sentido de lenguajes imperativos)
Programacin Funcional
Funciones Matemticas Formas Funcionales
9 Composicin
f(x) ~ x + 2
g(x) ~ 3* x
h(x) ~ f(g(x)) => h(x) ~ (3 * x) + 2
9 Construccin
g(x) ~ x * x
h(x) ~ 2 * x
i(x) ~ x/2
[g,h,i] (4) ~ (16,8,2)
valor
42
21
20
-1
6
12
~
~
~
A
A
(A B C)
4 elementos
( A (B C) D (E (F G)))
4 elementos
Scheme
Ejemplos car
(car (A B C))
(car ((A B) C D))
(car A)
(car (A))
Devuelve A
Devuelve (A B)
Devuelve error A no es una lista
Devuelve A
Ejemplos cdr
(cdr (A B C))
(cdr ((A B) C D))
(cdr A)
(cdr (A))
Devuelve (B C)
Devuelve (C D)
Devuelve error A no es una lista
Devuelve ( )
Scheme
Devuelve (A)
Devuelve ((A B) C D)
Devuelve ( () A B)
Scheme
list construye listas dado un nmero variable de parmetros
(list x y z) Devuelve (x y z)
Es equivalente a (cons x (cons y (cons z ())))
Devuelve #t
Devuelve #f
Scheme
Para las comparaciones con data numrica se usa: =, <,
>, <=, >=, even?, odd?, zero?
Para visualizacin
(display expresin)
(newline)
Scheme
Definicin de funciones
(define (nombre-funcion parametros)
cuerpo
)
o
(define nombre-funcion
(lambda (parametros)
cuerpo
)
)
Ejemplos
(define (segundo lst)
( car (cdr lst))
)
>(segundo (A B C))
B
(define cuadrado
(lambda (numero)
(* numero numero)
)
)
> (cuadrado 6)
36
Scheme
Flujos de Control
Condicional - Clausula if
(if condicion expression_then expresion_else)
1 si n = 0
factorial(n) ~
n * f(n-1)
(define (factorial n)
(if (= n 0)
1
(* n (factorial (- n 1)))
)
)
Scheme
Flujos de Control
Multiples Condiciones
(cond
(condicion1 expresion1)
(condicion2 expresion2)
.
.
.
(condicionN expresionN)
(else expresion)
Scheme
Flujos de Control
Multiples Condiciones
Realice una funcin que determine si un tomo es miembro de
una lista.
Scheme
Ejemplos
Scheme
Ejemplos
Scheme
Funcion Let
(let (
(nombre1
(nombre2
.
.
.
(nombreN
cuerpo
expresion1)
expresion2)
expresionN)
Scheme
Ejemplos
(define (raices a b c)
(let (
(parte_raiz (/ (sqrt (- (* b b) (* 4 a c))) (* 2 a)))
(parte_menos ( / (- 0 b) (* 2 a)))
)
(display (+ parte_menos parte_raiz))
(newline)
( display (- parte_menos parte_raiz))
)
)
Scheme
Ejercicios