Sie sind auf Seite 1von 5

ESCUELA SUPERIOR POLITÉCNICA DE

CHIMBORAZO

SEMESTRE MARZO - JULIO 2019

TAREA No. 2

IDENTIFICACION
Facultad: Informática y Electrónica

Carrera: Ingeniería en Sistemas

Materia: Inteligencia Artificial

Semestre: Séptimo

Docente: Ing. Blanca Hidalgo

Nombre: Freire Oña Kevin Eduardo (6165)

Fecha: 16 de abril del 2019

Revisado
Calificación
TEMA: PROLOG
OBJETIVO GENERAL
 Realizar una investigación sobre conceptos fundamentales, sintaxis del
lenguaje de programación declarativo Prolog.
OBJETIVOS ESPECÍFICOS
● Analizar los conceptos fundamentales del lenguaje de programación
declarativo Prolog.
● Describir la sintaxis utilizada en el lenguaje de programación Prolog.

MARCO TEÓRICO

PROLOG

Es un lenguaje de programación declarativo basado en símbolos tiene su origen


en Europa a principios de 1970 por Alain Colmerauer. Al ser un lenguaje
declarativo su principal diferencia de los demás lenguajes es que están formados
en formalismos abstractos y que su semántica no depende de la maquina en la
que se está ejecutando (Teresa Escrig, 2001).

PROLOG Y EL LENGUAJE DE LA LÓGICA DE PRIMER ORDEN

La Lógica de Primer Orden analiza las frases sencillas del lenguaje (fórmulas
atómicas o elementales) separándolas en Términos y Predicados. Los términos
hacen referencia a los objetos que intervienen y los predicados a las propiedades
o relaciones entre estos objetos. Además, dichas fórmulas atómicas se pueden
combinar mediante Conectivas permitiéndonos construir fórmulas más
complejas, llamadas fórmulas moleculares (Faraón Llorens Largo, 2001).

PREDICADOS

Se utilizan para expresar propiedades de los objetos, predicados monádicos, y


relaciones entre ellos, predicados poliádicos. En Prolog los llamaremos hechos.
Debemos tener en cuenta que:

 Los nombres de todos los objetos y relaciones deben comenzar con una
letra minúscula.
 Primero se escribe la relación o propiedad: predicado
 Y los objetos se escriben separándolos mediante comas y encerrados
entre paréntesis: argumentos.
 Al final del hecho debe ir un punto (".").

Simbolo_de_predicado(arg1,arg2,...,argn).

TERMINOS
Los términos pueden ser tanto constantes o variables:

Las constantes sirven para dar nombre a objetos concretos, representan


objetos conocidos de nuestro universo.

Átomos: existen tres clases de constantes atómicas:

 Cadenas de letras, dígitos y subrayado (_) empezando por letra


minúscula.
 Cualquier cadena de caracteres encerrada entre comillas simples (').
 Combinaciones especiales de signos: "?-", ":-", ...

Números: se utilizan para representar números de forma que se puedan realizar


operaciones aritméticas. Dependen del ordenador y la implementación

 Enteros: en la implementación de Prolog-2 puede utilizarse cualquier


entero que el intervalo [-223,223-1]=[-8.388.608,8.388.607].
 Reales: decimales en coma flotante, consistentes en al menos un dígito,
opcionalmente un punto decimal y más dígitos, opcionalmente E, un «+»
o «-» y más dígitos.

Las variables se utilizan para representar objetos cualesquiera del Universo u


objetos desconocidos en ese momento, es decir, son las incógnitas del problema.

CONECTIVAS LÓGICAS

La conjunción, “y”, la representaremos poniendo una coma entre los objetivos


“,” y consiste en objetivos separados que Prolog debe satisfacer, uno después
de otro.

La disyunción, “o”, tendrá éxito si se cumple alguno de los objetivos que la


componen. Se utiliza un punto y coma “;” colocado entre los objetivos.

La negación lógica no puede ser representada explícitamente en Prolog, sino


que se representa implícitamente por la falta de aserción : “no”, tendrá éxito si
el objetivo X fracasa. No es una verdadera negación, en el sentido de la Lógica,
sino una negación “por fallo”. La representamos con el predicado predefinido not
o con \+.

La implicación o condicional, sirve para significar que un hecho depende de


un grupo de otros hechos. En castellano solemos utilizar las palabras “si ...
entonces ...”. En Prolog se usa el símbolo “:-” para representar lo que llamamos
una regla.

SINTAXIS
La sintaxis de un lenguaje describe la forma en la que se nos está permitido
juntar palabras entre sí. Los programas en Prolog se construyen a partir de
términos. Un término es una constante, una variable o una estructura. Todo
término se escribe como una secuencia de caracteres. Para escribir un
comentario lo encerraremos entre los signos /* y */ o desde el símbolo % hasta
el final de línea. Así, Prolog pasa por alto los comentarios, pero los debemos
añadir a nuestros programas para aclararlos y que el propio programa quede
documentado

APLICACIÓN PRÁCTICA
Dada la base de datos familiar del ejemplo 1.1, y suponiendo definidas las
siguientes cláusulas:

hombre(X).
mujer(X).
progenitor(X,Y).
dif(X,Y):- X\=Y.

Donde las 3 primeras cláusulas se definirán como hechos (por tanto, no se podrá
poner una variable como argumento, ya que una variable haría que el hecho
fuera cierto para cualquier objeto) y la última como una regla (donde el símbolo
\= significa distinto). Escribir las reglas de PROLOG que expresen las siguientes
relaciones:

a) es_madre(X).

b) es_padre(X).

c) es_hijo(X).

d) hermana_de(X,Y).

e) abuelo_de(X,Y) y abuela_de(X,Y).

f) hermanos(X,Y). Tened en cuenta que una persona no es hermano de sí


mismo.

g) tia(X,Y). Excluid a los padres.

Con la definición del tipo de reglas anterior se pueden resolver problemas


interesantes, sin embargo, la gran potencia del PROLOG está en la definición
de reglas recursivas. Como hemos visto en ejemplos anteriores se puede
definir la relación progenitor, y las reglas abuelo, bisabuelo, tatarabuelo, etc.
En general, puede ser interesante definir la relación predecesor(X,Y). Un
predecesor de X podrá ser el progenitor de X. También será predecesor si es
abuelo/a, si es tatarabuelo/a, etc., es decir, necesitaríamos un conjunto de
reglas como:
predecesor(X,Y):-progenitor(X,Y).

predecesor(X,Y):-progenitor(X,Z), progenitor(Z,Y).

predecesor(X,Y):-progenitor(X,Z), progenitor(Z,V),

progenitor(V,Y).

CONCLUSIONES
● El lenguaje de programación Prolog se basa en símbolos por lo que es
capaz de generar respuestas con solo tener una base de conocimientos
ya creada.
● Las conectivas lógicas ayudan a generar bases de conocimiento mucho
más amplias y complejas asegurando asi que la capacidad del lenguaje
Prolog sea más extensa y pueda generar respuestas correctas.
RECOMENDACIONES
● Buscar información lo más detallada posible ya que muchos autores
omiten gran cantidad de información.
● Debido a la gran información que abarca el lenguaje de programación
Prolog no se lo pudo tratar al completo en este documento por ello se
recomiendo ampliar el tema para adquirir más conocimiento del mismo.

BIBLIOGRAFÍA

Faraón Llorens Largo, J. C. (2001). Recuperado el 16 de 04 de 2019, de


http://www.dccia.ua.es/logica/prolog/docs/prolog.pdf

Jiménez, J. A. (17 de 06 de 2016). Obtenido de


https://www.cs.us.es/~jalonso/publicaciones/2006-int_prolog.pdf

Morales, E. (s.f.). Recuperado el 16 de 04 de 2019, de


https://ccc.inaoep.mx/~emorales/Cursos/Prolog/curso.pdf

Teresa Escrig, J. P. (06 de 2001). Recuperado el 16 de 04 de 2019, de


http://mural.uv.es/mijuanlo/PracticasPROLOG.pdf

Das könnte Ihnen auch gefallen