Sie sind auf Seite 1von 10

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

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.

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.

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.

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.

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:

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].

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
8

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
9

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.

10

Das könnte Ihnen auch gefallen