programacion funcional

Upload: chavachiras

Post on 18-Oct-2015

24 views

Category:

Documents


0 download

TRANSCRIPT

INSTITUTO TECNOLOGICO DE OCOTLAN

INSTITUTO TECNOLOGICO DE OCOTLAN

Programacin Funcional

Materia: Programacin lgica y funcionalMtro.: Oscar GonzlezAlumnos: Azucena Parra BecerraCristian Omar Estrada MoralesRosa Brisehida Gonzlez VillagraMayra Selene Sols Chvez

19/Marzo/2014Ocotln Jal.

ndiceIntroduccinObjetivosConcepto matemtico de funcinBases de la programacin funcionalEvolucin de la programacin funcionalCaractersticas de la programacin funcional.IntroduccinDurante la parte de programacin funcional vamos a hablar sobre Haskell. La programacin funcional est constituida mediante definicin de funciones puramente matemticas. Est basado en un modelo matemtico: ellambda-clculo. A diferencia de Prolog, el objeto bsico aqu es la funcin. Esta vez nos enfrentamos a un lenguaje tipado y polimrfico adems de poseer funciones de orden superior.

Objetivos del Tema

Entender el concepto de funcin desde el punto de vista matemtico.Dar una visin general de la programacin funcional, desde sus bases y evolucin hasta sus caractersticas.Concepto matemtico de funcin IUna funcin establece una asociacin entre valores de entrada y valores de salida.Ejemplos:Funcin doble: Asocia al valor 5 al valor de 10, al 6 al 12,Funcin capital:Asocia a Espaa el valor Madrid, a Italia la ciudad de Roma.Concepto matemtico de funcin IIFuncin: regla de correspondencia en la que un elemento de un conjunto origen(dominio), le corresponde un nico elemento de otro conjunto imagen(rango).Funcin doble:Dominio: nmeros enterosRango: nmeros enterosFuncin capital:Dominio: pases del mundo Rango: ciudades del mundo.Concepto matemtico de funcinAplicacin de una funcin: particularizacin de la regla de correspondencia a un valor concreto de dominio que determina un valor concreto de la imagen.Notacin: f(x)= yF: nombre de la funcinX: argumento o entradaY: resultado o salida.Ejemplo:Doble(5)=10Capital(Espaa)= MadridConcepto matemtico de funcinExisten funciones con notacin universal predefinida que son representadas por un operador: suma, resta,.El argumento o entrada de una funcin puede provenir de la salida de otra aplicacin (misma funcin u otra)Composicin de funcionesEjemplos: Doble (doble(5))= 20Doble (mayor(7,4))=14Concepto matemtico de funcinLa definicin de funciones se puede dar por medio de : comprensin y extensin.Comprensin: ecuacin cuya parte izquierda la componen los argumento (entrada) y la parte derecha la representa la extensin algebraica de la operaciones que componen la funcin.Ejemplo:Funcin doble x= 2*xExtensin: conjunto de pares ordenados donde el primer elemento es el valor de conjunto origen y el segundo el del conjunto imagen.Ejemplo:Funcin capital Espaa = Madrid Italia = RomaBases de la Programacin FuncionalTambin conocida como programacin declarativa (junto con el paradigma lgico), su objetivo es describir los problemas mediante funciones matemticas puras sin efectos laterales.Los programas funcionales expresan mejor que hay que calcular, y no detallan tanto como realizar dicho calculo (como ocurre con los programas imperativos)Bases de la Programacin FuncionalProgramacin funcional: similar al uso de una hoja de calculo o una calculadora: el usuario introduce una expresin inicial y el sistema la evala mediante un proceso de reduccin.Los programas funcionales se caracterizan por la propiedad de la transparencia referencial: el resultado devuelto por una funcin solo depende de los argumento que se le pasan en la llamadaBases de la Programacin FuncionalEjemplo (Programa Pascal con efectos laterales)PROGRAM ConEfectosLaterales;VAR estado: boolean;FUNCTION Efectos (n: interger); interger;BEGINIF (estado) THENEfectos := nELSEEfectos := 2*n+1;Estado := NOT estado;END; (* Efectos *)BEGIN estado := TRUE;WriteLn (Efectos(1), , Efectos(1));WriteLn (Efectos(2), , Efectos(2)); ENDLa Salida es la Siguiente:3 5

Evolucin de la Programacin FuncionalInicios: Calculo Lambda de Church (aos 30)El primer lenguaje funcional desarrollado fue LISP(1958), que se aplico en el area de Inteligencia Artificial. Es la base del actual Scheme, que no es puramente funcional.Aos 60 y 70 ISWIM, FP, Y MLKRC y Miranda, Haskell, Hope, Wadler, CAML, etc.Haskell: nace a partir de la conferencia FPCA87 y Fue desarrollado por las universidades de Yale y Glasgow, con objeto de reunir todas aquellas caracteristicas fundamentales del paradigma funcional.Caractersticas de la Programacin FuncionalLas principales caractersticas de los lenguajes funcionales son:-funciones de orden superior-tipado fuerte y esttico-inferencia de tipos-polimorfismo-orden de reduccin normal y evaluacin perezosa.

Funciones de orden superior alto nivel de abstraccin Funciones tratadas como valores de primera claseAlmacenadas en estructuras de datos, pasadas como argumentos y devueltas como resultados.Ejemplo:

Tipado esttico deteccin de errores en tiempo de compilacin.Fuertemente tipadoEl programador no esta obligado a declarar el tipo de la expresionesEl compilador, mediante un algoritmo, infiere el tipo de las expresiones.Si se declara el tipo de una expresin el compilador los chequea.