Clases paradigmas de programacion

Unidad 4 / Escenario 7 Lectura Fundamental Paradigma de programaci´on l´ogica Contenido 1 Programaci´ on l´ ogica 1

Views 71 Downloads 0 File size 439KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Unidad 4 / Escenario 7 Lectura Fundamental

Paradigma de programaci´on l´ogica

Contenido

1 Programaci´ on l´ ogica

1

2 Lenguaje de programaci´ on Prolog

2

Palabras claves: programaci´on l´ogica, paradigma declarativo,paradigmas de programaci´on, prolog, l´ogica de primer orden

En algunas ocasiones suele ser necesario resolver situaciones con base en la toma de decisiones, el paradigma de Programaci´ on l´ ogica permite resolver este tipo de situaciones mediante la definici´on de un conjunto de predicados l´ ogicos. En la mayor´ıa de casos, la programaci´on l´ogica est´a ligada con problemas de toma de decisiones o inteligencia artificial, donde es necesario alimentar una base de conocimiento a partir de la cual es posible generar nueva informaci´ on o tomar una decisi´on espec´ıfica. Se utiliza principalmente l´ogica de primer orden, en el que se pueden establecer las consultas y reglas establecidas siendo axiomas y teoremas, respectivamente. Se dar´ a principal enfoque al uso del lenguaje de programaci´ on Prolog, (PROgrammation en LOGique, en franc´es), en el que se presentar´an conceptos y la manera en que se utilizan para resolver problemas l´ogicos.

1. Programaci´on l´ogica El enfoque en el paradigma de programaci´on l´ ogico consiste en expresar programas en t´erminos de s´ımbolos l´ogicos, y emplear procesos de deducci´on l´ ogicos para producir resultados. La programaci´ on l´ogica pertenece al conjunto de paradigmas declarativos lo que significa que se especifican los resultados deseados, en lugar de detallar el procedimiento para conseguirlos. A diferencia de la programaci´on funcional que est´ a basada en la definici´ on de funciones, la programaci´ on l´ogica est´a basada en la definici´on de relaciones, las cuales son m´as generales que las funciones, y por esta raz´on la programaci´on l´ogica es considerada de m´ as alto nivel que la programaci´on funcional e imperativa. Infortunadamente, la programaci´on l´ ogica no puede explotar todo el poder de la l´ogica matem´atica, debido a que por medio de esta es posible especificar problemas para los cuales no podemos implementar soluciones, por ejemplo, a trav´es del lenguaje matem´ atico podemos especificar el problema de fermat, pero este no es computable. Por tal raz´on la programaci´on l´ogica est´a restringida a un tipo de l´ogica que s´ı puede ser implementada, la denominada l´ogica de primer orden. Los conceptos fundamentales de la programaci´on l´ogica incluyen: • afirmaciones • cl´ausulas de Horn, y • relaciones. Una afirmaci´ on tiene la forma r(T1 , . . . , Tm ) donde r es una relaci´ on m-aria y en donde T1 , . . . , Tm son t´erminos, es decir, expresiones. Para una secuencia de m t´erminos dada la afirmaci´on puede ser verdadera o falsa. Una cl´ ausula de Horn tiene la forma:

A0 si A1 , . . . , An Lo cual significa que si las afirmaciones A1 , . . . , An son todas ciertas, entonces se puede inferir que la afirmaci´on A0 tambi´en lo es.

´ POLITECNICO GRANCOLOMBIANO

1

Un caso especial de la cl´ausula de Horn es denominada un hecho, y ocurre cuando n = 0, lo que significa que la afirmaci´on A0 es cierta sin condici´ on alguna. Un programa l´ ogico no es m´ as que una colecci´ on de cl´ausulas de Horn que son utilizadas para inferir nuevo conocimiento. Los lenguajes de programaci´ on l´ogico puros en contraparte a los imperativos no permiten la definici´ on de procedimientos. En cambio a esto u ´nicamente permiten aprovechar el backtraking. Infortunadamente los lenguajes de programaci´on l´ogico no adoptan algunas caracter´ısticas de los lenguajes imperativos o funcionales como el agrupamiento de funcionalidad a trav´es de paquetes y por ende, generalmente, los programas bajo el paradigma l´ogico constan de la definici´on de un gran n´ umero de relaciones lo que puede complicar un poco el trabajo de mantenimiento de un programa l´ogico.

2. Lenguaje de programaci´on Prolog El lenguaje de programaci´on Prolog es un lenguaje de programaci´on l´ogica, utilizado en campos como la inteligencia artificial y el procesamiento de lenguaje natural. Utilizaremos este lenguaje como herramienta en la construcci´on de algunos programas l´ogicos.

2.1. Datos, hechos y consultas Prolog identifica el tipo de un objeto por medio de su forma sint´actica es decir, en la forma en la cual se escribe un dato, ya que el lenguaje reconoce diferentes formas para cada tipo de dato. Un ´atomo es la informaci´on que se desea consultar, estos son diferentes a las variables, por lo tanto la forma de distinguirlos es que los ´ atomos empiezan con letras min´ usculas o s´ımbolos, existen tres formas de representar ´atomos en prolog: • Cadenas de letras, d´ıgitos y el s´ımbolo gui´on bajo ‘ ’, cada uno empezando con una letra min´ uscula: juan carlos x23 x_carlos estudiante_juan categoria_x • Cadenas que incluyen s´ımbolos especiales: -----> Y X > Y. X = Y X >= Y. X = Y X =:= Y. X /= Y X =\= Y. La forma de realizar las consultas entonces ser´ıa: ?- 3 < 4. Prolog retornar´ıa yes ?- 5 =< 5. Prolog retornar´ıa yes ?- 6 > 6. Prolog retornar´ıa no ?- 5 =\= 6. Prolog retornar´ıa yes ?- 4 =\= 4. Prolog retornar´ıa no ?- 4 =:= 4. Prolog retornar´ıa yes Este tipo de verificaci´ on permite tambi´en evaluar t´erminos matem´aticos como es el caso de: ?- 3 < 3+1. Prolog retornar´ıa yes ?- 2+4 =:= 3+3 Prolog retornar´ıa yes • Prolog permite realizar comparaciones simb´ olicas, en las que sin importar que los datos sean num´ericos, se tomar´an como cadenas, as´ı mismo se utiliza la asignaci´on simb´olica para agregar una cadena o s´ımbolo en una variable: ?- X = 3+4. La variable ser´ a X = 3+4 ?- 3+4 == 2+5. Prolog retornar´ıa no ?- 3+4 == 3+4. Prolog retornar´ıa yes

´ POLITECNICO GRANCOLOMBIANO

10

Referencias Gabbrielli, M. & Martini, S. (2010). Programming languages: principles and paradigms. Springer Science & Business Media. Louden, K. C. y col. (2011). Programming languages: principles and practices. Cengage Learning. Nadathur, G. & Miller, D. (2012). Programming with high-order logic. Cambridge University Press. Norvig, P. (2014). Paradigms of artificial intelligence programming. Morgan Kaufmann. Sebesta, R. W. (2012). Concepts of programming languages (10.a ed.). Pearson. Van Roy, P. & Haridi, S. (2004). Concepts, techniques, and models of computer programming (1.a ed.). The MIT Press. Watt, D. A. (2004). Programming language design concepts. John Wiley & Sons.

´ POLITECNICO GRANCOLOMBIANO

11

´ TECNICA ´ INFORMACION

M´ odulo: Paradigmas de Programaci´on Unidad 4: Paradigmas de Programaci´on L´ogico y Funcional Escenario 7: Paradigma de Programaci´on L´ogico Autor: Diego Satoba Asesor Pedag´ ogico: Manuel Fernando Guevara Dise˜ nador Gr´ afico: Yinet Rodr´ıguez Asistente: Angie Laiton Este material pertenece al Polit´ecnico Grancolombiano. Por ende, es de uso exclusivo de las Instituciones adscritas a la Red Ilumno. Prohibida su reproducci´ on total o parcial.

´ POLITECNICO GRANCOLOMBIANO

12