10
1 PROFESOR: L.I. ANTONIO CAB BALAM CURSO: PROGRAMACIÓN LÓGICA Y FUNCIONAL MÓDULO: 2 TÍTULO: PROGRAMACIÓN FUNCIONAL: TRABAJO INTEGRADOR INTEGRANTES: MIGUEL ÁNGEL CHI UITZIL GENARO MAHAY DZUL ESTEFANIA HOIL AVILES CARRERA: INGENIERÍA EN SISTEMAS COMPUTACIONALES GRADO Y GRUPO: OCTAVO SEMESTRE GRUPO “B” FECHA DE ENTREGA: 17/04/2015

MAHAY_GENARO_U2_A4

Embed Size (px)

DESCRIPTION

programacion funcional- trabajo integrador

Citation preview

  • 1

    PROFESOR:

    L.I. ANTONIO CAB BALAM

    CURSO:

    PROGRAMACIN LGICA Y FUNCIONAL

    MDULO:

    2

    TTULO:

    PROGRAMACIN FUNCIONAL: TRABAJO INTEGRADOR

    INTEGRANTES:

    MIGUEL NGEL CHI UITZIL

    GENARO MAHAY DZUL

    ESTEFANIA HOIL AVILES

    CARRERA:

    INGENIERA EN SISTEMAS COMPUTACIONALES

    GRADO Y GRUPO:

    OCTAVO SEMESTRE GRUPO B

    FECHA DE ENTREGA:

    17/04/2015

  • 2

    CONCEPTOS BSICOS

    En la actualidad, se est dando el caso de que, a lenguajes imperativos como Java

    o C#, se estn agregando caractersticas propias de los lenguajes funcionales; al

    mismo tiempo, cada vez estn naciendo ms lenguajes hbridos, como Scala, que

    mezclan en su diseo los estilos de programacin funcional e imperativo orientado a

    objetos. En Java, adems, ltimamente se han desarrollado varias bibliotecas con

    funcionalidad normalmente presente en los lenguajes funcionales.

    Y qu aporta el estilo de programacin funcional para justificar este reciente

    inters? dos son las razones fundamentales.

    Es mucho ms fcil escribir aplicaciones concurrentes y paralelas.

    El cdigo es ms expresivo, conciso e intuitivo, lo que hace ms fcil razonar

    acerca de su correccin.

    Un programa escrito con un estilo de programacin imperativo consiste en una

    secuencia de rdenes que se ejecutan una tras otra, modificando los valores de las

    variables por medio de asignaciones. Al contrario, un programa escrito con un estilo de

    programacin funcional contiene nicamente definiciones de funciones, siendo la

    ejecucin del programa la evaluacin de una expresin que usa dichas funciones.

    En el estilo de programacin funcional, una funcin f con tipo de entrada A y tipo de

    salida B es un clculo que relaciona cada valor a de tipo A con exactamente un

    valor b de tipo B tal que b es determinado nicamente por el valor de a.

  • 3

    Una expresin e tiene la propiedad de transparencia referencial si, para todos los

    programas p, todas las ocurrencias de e en p pueden ser reemplazadas por el resultado

    de evaluar e sin afectar el comportamiento observable de p.

    Una funcin f es pura si la expresin f(x) tiene la propiedad de transparencia

    referencial para todo x que posee tambin transparencia referencial.

    En el estilo de programacin funcional, las funciones son puras.

    El cimiento que hace posible la propiedad de transparencia referencial es la

    caracterstica de que no existe la asignacin destructiva; es decir, las variables se

    comportan como en matemticas, son inmutables y no cambian de valor.

    A su vez, la propiedad de transparencia referencial tiene dos consecuencias

    importantes:

    La evaluacin de una expresin, resultado de aplicar una funcin a un juego de

    parmetros reales, nunca produce efectos colaterales.

    El resultado de aplicar una funcin a un juego de parmetros reales siempre es

    el mismo e independiente del contexto en el que se use la expresin.

  • 4

    CARACTERSTICAS DE LA PROGRAMACIN FUNCIONAL

    Programacin declarativa:

    No hay asignacin ni cambio de estado

    No hay referencias: identificadores asociados a valores

    No hay efectos laterales

    Recursin

    Funciones como tipos de datos primitivos

    ELEMENTOS Y ESTRUCTURA DE LA PROGRAMACIN FUNCIONAL

    Los elementos son:

    -Booleanos: (Bool, valores True y False).

    -Caracteres: (Char)

    -Enteros: (Int e Integer).

    LAS ESTRUCTURAS SON:

    -Funciones de primera clase y de orden superior

    -Funciones puras

    -Recursividad

    -Evaluacin estricta frente a la no estricta

    -Tipo de sistemas.

  • 5

    LENGUAJE DE PROGRAMACION REPRESENTATIVA

    LENGUAJE DE PROGRAMACIN PROLOG

    Prolog es un lenguaje de programacin simple pero poderoso desarrollado en la

    Universidad de Aix-Marseille (Marsella, Francia) por los profesores Alain

    Colmerauer y Philippe Roussel, como una herramienta prctica para programacin

    lgica. Naci de un proyecto que no tena como objetivo la implementacin de un

    lenguaje de programacin, sino el procesamiento de lenguajes naturales.

    Prolog es un lenguaje de programacin seminterpretado. Su funcionamiento es muy

    similar a Java. El cdigo fuente se compila a un cdigo de byte el cul se interpreta en

    una mquina virtual denominada Warren Abstract Machine (comnmente denominada

    WAM).

    Por eso, un entorno de desarrollo Prolog se compone de:

    Un compilador: Transforma el cdigo fuente en cdigo de byte. A diferencia de

    Java, no existe un Standard al respecto. Por eso, el cdigo de byte generado por

    un entorno de desarrollo no tiene por que funcionar en el intrprete de otro

    entorno.

    Un intrprete: Ejecuta el cdigo de byte. Un shell o top-level. Se trata de una

    utilidad que permite probar los programas, depurarlos, etc. Su funcionamiento es

    similar a los interfaces de lnea de comando de los sistemas operativos.

  • 6

    Una biblioteca de utilidades: Estas bibliotecas son, en general, muy amplias.

    Muchos entornos incluyen (afortunadamente) unas bibliotecas standard-ISO que

    permiten funcionalidades bsicas como manipular cadenas, entrada/salida, etc.

    ELEMENTOS EN PROLOG

    Como hemos especificado antes, para construir programas en Prolog

    necesitamos una serie de elementos. Vamos a especificarlos:

    tomos: Es una definicin genrica de un objeto del mundo que queremos

    representar.

    Predicados: Nos permite especificar caractersticas de los objetos de nuestro

    mundo o las relaciones entre ellos.

    OBJETOS DE DATOS

    TIPOS DE DATOS PRIMITIVOS: VARIABLES Y CONSTANTES:

    Enteros

    Reales

    Caracteres

    Los identificadores con minscula representan hechos, los que van con

    mayscula variables. El alcance de una variable es la regla donde aparece.

    Tipos de datos estructurados:

  • 7

    tomos: constantes y variables de cadena.

    Listas, representadas entre [ ].

    Tipos definidos por el usuario. Las reglas para definir relaciones pueden actuar

    como tipos de usuario.

    ESTRUCTURA DE UNA LISTA

    Una lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos

    partes:

    (1) Cabeza. Es el primer elemento de la lista. Puede ser un tomo o una lista, pero a fin

    de cuentas es el primer elemento de la lista original.

    (2) Cola. Es el resto de los elementos de una lista, es de nuevo una lista

    (Gonzlez) (a) cabeza= perro

    (b) cola=[gato, ratn, queso].

  • 8

    MAPA CONCEPTUAL DE LOS LENGUAJES DE PROGRAMACION MAS

    CONOCIDOS

    CONCLUSIONES

    MIGUEL ANGEL CHI UITZIL

    La programacin funcional viene para simplificar estas grandes construcciones y

    agregar una lgica implcita en el cdigo que ayude al programador no solo a escribir

    buen cdigo, sino a comprenderlo mejor cuando lo lea, ya sea programado por l u otra

    persona. Me doy cuenta de que muchos de los lenguajes que he aprendido y muchas

    de las metodologas en las que me he visto sumergido han sido protagonizados por una

    moda. Una forma de hacer las cosas tpicas de una poca y que nadie discuta. La

    orientacin a objetos es un paradigma muy vlido para la construccin de sistemas de

  • 9

    informacin como se ha demostrado en multitud de ocasiones. Pero cierto es que

    muchas de esas construcciones sera impensable realizarlas sin la ayuda de un IDE

    muy enfocado al lenguaje de programacin orientado a objetos que se est empleando.

    GENARO MAHAY DZUL

    La programacin funcional ha ido evolucionando enormemente debido a la importancia

    que se le ha dado para su mejora, la desde el comienzo de la programacin funcional

    ms conocida como la es la Lisp ha estado actualizndose con ms herramientas como

    la es la Scheme que ha sido como una adaptacin de las Lisp. En la actualidad la

    comunidad de ingenieros en sistemas computacionales atraviesa por una crisis en la

    programacin de software que ha causado que los software sean ms costosos y

    menos confiables debido al estilo de programacin de cada uno de los usuarios es por

    eso que la programacin funcional juega un importante papel en la actualidad para los

    ingenieros en sistemas computacionales ya que su estilo de programacin permitiendo

    dar solucin a este problema dando como solucin un software ms confiable, menos

    costoso, y mejor manejable.

    ESTEFANIA HOIL AVILES

    Como conclusin podemos decir que la programacin funcional es muy importante para

    los ingenieros en sistemas, ya que nos da una forma diferente y ms fcil para entender

    los problemas que se nos da a resolver, no podemos dejar atrs la evolucin que ha

  • 10

    tenido la programacin desde sus comienzos con el lenguaje de programacin Lisp,

    cabe mencionar que entre los lenguajes funcionales puros, cabe destacar a Haskell y

    Miranda. Los lenguajes funcionales hbridos ms conocidos son Scala, Lisp, Scheme,

    Ocaml, SAP y Standard ML (estos dos ltimos, descendientes del lenguaje ML). Erlang

    es otro lenguaje funcional de programacin concurrente. R tambin es un lenguaje

    funcional dedicado a la estadstica. Recientemente Microsoft Research est trabajando

    en el lenguaje F#.

    REFERENCIAS

    Ecured. (s.f.). Recuperado el 16 de abril de 2015, de

    http://www.ecured.cu/index.php/Prolog_(Lenguaje_de_programaci%C3%B3n)

    Gonzlez, A. E. (s.f.). Recuperado el 17 de abril de 2015, de

    http://computacion.cs.cinvestav.mx/~acaceres/courses/itesm/lp/clases/listasProlo

    g.pdf

    FOKKER, Jeroen. Programacin Funcional. Universidad de Utrecht, Departamento de

    Informtica. 1995.

    MITCHELL, T. M. Machine Learning. Mc Graw Hill. 1997.

    BRATKO, I. Prolog Programming for Artificial Intelligence (2nd ed.). Addison Wesley.

    1990.