Вы находитесь на странице: 1из 10

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA

ESCUELA DE FORMACIÓN PROFESIONAL DE INGENIERÍA DE SISTEMAS

LABORATORIO 1
ENTORNO DE PROGRAMACIÓN SWI PROLOG
I. OBJETIVOS

Los objetivos de ésta práctica son:

 Conocer Swi Prolog.


 Conocer el manejo de Swi Prolog.
 Conocer la forma de declarar y utilizar los predicados
 Desarrollar ejemplos en modo consola o texto.

II. MARCO TEORICO


2.1. ¿QUE ES PROLOG?
Prolog es un lenguaje de programación hecho para representar y utilizar
el conocimiento que se tiene sobre un determinado dominio.

El dominio es un conjunto de objetos y el conocimiento se representa por


un conjunto de relaciones que describen las propiedades de los objetos
y sus interrelaciones.

Un conjunto de reglas que describa estas propiedades y estas relaciones


es un programa Prolog.

Prolog es un lenguaje de programación que es usado para resolver


problemas que envuelven objetos y las relaciones entre ellos.

2.2. ELEMENTOS DEL LENGUAJE PROLOG

2.2.1. BASE DE CONOCIMIENTO DE PROLOG


Para responder a las preguntas formuladas por el programador, Prolog
consulta una base de conocimiento. Al iniciar una sesión Prolog, esta
base de conocimiento almacena un conocimiento básico que
incluye, entre otras cosas, conceptos y definiciones de la aritmética
de los números naturales.
La base de conocimiento se expresa mediante hechos y reglas
Prolog, que no son otra cosa que una representación sintáctica concreta
de cláusulas de Horn de primer orden. Por lo tanto, todo el conocimiento
Prolog queda expresado empleando (casi) exclusivamente lógica de
primer orden.

Por ello se dice que Prolog es un lenguaje lógico y que la programación


en Prolog es programación lógica. Un programa Prolog no es por tanto
más que un conjunto de hechos y reglas que expresan cierto
conocimiento mediante lógica de primer orden.
UNSCH-2018. 1 Lab. Sistemas Expertos
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
ESCUELA DE FORMACIÓN PROFESIONAL DE INGENIERÍA DE SISTEMAS

Este conocimiento permite a Prolog responder correctamente las


siguientes preguntas:

?- 5 is 2+3.

2.2.2. COMENTARIOS Los comentarios en Prolog se escriben comenzando


la línea con un símbolo de $ Ejemplo:

% Hola, esto es un comentario.

% Y esto también.

2.2.3. HECHOS
Los hechos representan las relaciones entre objetos
En general, la sintaxis es relación (objeto, objeto,
...).
La relación se conoce como el predicado y los objetos como los
argumentos.

Los nombres de todos los predicados y argumentos


deben de comenzar con una letra minúscula.

Primero, se escribe el predicado.


Los argumentos se escriben separándolos mediante
comas y encerrados entre paréntesis.
Al final del hecho debe ir un punto.

Al ejecutar

UNSCH-2018. 2 Lab. Sistemas Expertos


UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
ESCUELA DE FORMACIÓN PROFESIONAL DE INGENIERÍA DE SISTEMAS

esPato(lucas).

ERROR Undefined predicate `esPato/1' Prolog nos


responderá que no sabe determinar si algo es o no un pato, pues
su base de conocimiento no incluye información acerca de los
patos. Formalmente, lo que ocurre es que el predicado lógico
‘esPato/1’ no está definido (undefined predicate).

Definamos en nuestra base de conocimientos los siguientes


hechos

esPato(lucas).
esPato(donald).
esPato(gilito.

2.2.4. REGLAS Una regla consta de dos partes, una cabeza y un


cuerpo. La cabeza y el cuerpo están unidos mediante el
siımbolo : −
cabeza :- cuerpo.
El cuerpo puede estar formado por varios hechos.

cabeza :- hecho1, hecho2, ..., hechon.

La separación : − SE LEE ”SI”( la cabeza es verdad


si el cuerpo es verdad.)

esPato(P) :- tienePlumas(P), haceCuac(P).

Nota: En la cabeza de una regla no puede haber más de un


hecho

2.2.5. TIPOS DE DATOS


Definición o Los tipos de datos en Prolog se denominan
“términos”.

a) Números
b) Átomos
c) Variables
d) Estructuras
e) Listas

a) NÚMEROS
Enteros … ,-3, -2, -1, 0, 1, 2, 3 … o

UNSCH-2018. 3 Lab. Sistemas Expertos


UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
ESCUELA DE FORMACIÓN PROFESIONAL DE INGENIERÍA DE SISTEMAS

Reales …, -3.001, …,-2,5, …, 0.0, …, 1.956, …

Observación Es un tipo de dato constante.


Los rangos de los valores numéricos dependen del intérprete.

b) ÁTOMOS
Son constantes que no tienen valores numéricos.

Sintaxis (1/3)
Primera forma: Compuestos por letras, números o el símbolo “_”.
que Deben comenzar por una letra minúscula.

Ejemplos
juan, ana, oro, agua fin_de_mes, dato_1, paga_extra

Sintaxis (2/3)
Segunda forma: Cualquier secuencia de caracteres delimitados
por comillas simples.

Ejemplos
‘Juan Lara Luque’
‘Fin de mes’
‘1Ba’

Sintaxis (3/3)
Tercera forma: q Cualquier secuencia de uno o más de los
siguientes caracteres especiales: + - * / > < = & # @ :
Ejemplos
+++
+-
>

No son átomos
Uno, Marta, Vaso:
Comienzan por una letra mayúscula.
23ab:
Comienza por un dígito.
_hombre:
Comienza por “_”

c) VARIABLES
Tipo de dato que puede modificar su valor. Las variables en
Prolog no son variables en el sentido habitual, por eso las
llamamos variables lógicas. Se escriben como una secuencia
de caracteres alfabéticos comenzando siempre por
mayúscula o subrayado.

Variables
UNSCH-2018. 4 Lab. Sistemas Expertos
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
ESCUELA DE FORMACIÓN PROFESIONAL DE INGENIERÍA DE SISTEMAS

Ejemplos
Hola
_Hola
_

X, Y, N, Respuesta, Cola, Cabeza


Pago_anual, Clave_secreta, …
Dato_1, Dato_2, …
_dato, _control, …

Pero no son variables:

variable
$Hola
p__

d) VARIABLE ANÓNIMA: símbolo “_”


Cada aparición de la variable anónima es independiente de las
demás.
La variable anónima se utiliza para indicar que existe un valor que
hace verdadero un predicado, pero no interesa saber qué valor
es.

Variable anónima: símbolo “_”


Ejemplo
tiene (juan, bicicleta).
tiene (juan, coche).
tiene (ana, motocicleta).
tiene (ana, coche).
tiene (pedro, barco).

Variable anónima: símbolo “_”


Ejemplo
¿Qué cosas tiene Juan?
?- tiene (juan, X).
X = bicicleta ;
X = coche

¿Tiene Juan alguna cosa?

?- tiene(juan,_).
True

¿Qué cosas tiene en común Juan y Ana?


? tiene (juan, X), tiene (ana, X).
X = coche q
¿Tienen Juan y Pedro alguna cosa?
UNSCH-2018. 5 Lab. Sistemas Expertos
UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
ESCUELA DE FORMACIÓN PROFESIONAL DE INGENIERÍA DE SISTEMAS

?- tiene(juan,_), tiene(pedro,_).
True

2.3. ENTORNO DE SWI PROLOG

PARTE 1: Corriendo el Primer Programa en Prolog


Los programas en Prolog a lo que tienden es a desarrollar consultas en
base a predicados que se escriben en un "programa" de Prolog. Tras
"correr" el programa, se pueden hacer estas consultas.

1) Para ejecutar Prolog, nos dirigimos al Botón Iniciar, ubicamos el


icono de acceso directo a Prolog Figura N° 1, al ejecutar el
programa nos muestra la siguiente interface Figura N° 2.
Figura N° 1

Figura N° 2

UNSCH-2018. 6 Lab. Sistemas Expertos


UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
ESCUELA DE FORMACIÓN PROFESIONAL DE INGENIERÍA DE SISTEMAS

2) Nombramos el archivo con el que trabajaremos File/New/ le


asignamos un nombre por defecto guarda con extensión .pl que será
la base de conocimiento para generar las consultas
3) Agregar los siguientes hechos en el editor de Prolog

4) En el editor Guardar mediante Save Buffer, luego Compilar el


archivo Compile/compile buffer

5) EJERCICIOS
EJERCICIO N°1 REALIZAMOS LAS CONSULTAS EN LA
CONSOLA DE PROLOG

a) ¿Oro es un metal?

UNSCH-2018. 7 Lab. Sistemas Expertos


UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
ESCUELA DE FORMACIÓN PROFESIONAL DE INGENIERÍA DE SISTEMAS

Y la respuesta es true porque el hecho existe en la base de


conocimiento.

b) ¿Oro es un plata ? justifique la respuesta

c) ¿Bronce es un metal ? justifique la respuesta

d) ¿Quiénes son metales ? justifique la respuesta

Agrege el siguiente hecho


e) Bronce es un metal
y realice la consulta bronce es metal? quienes son metales?

EJERCICIO 2
Implemente la siguiente Base de Conocimiento en un Nuevo
Archivo A continuación Identifique el error que muestra el
Programa.

Explique su respuesta

UNSCH-2018. 8 Lab. Sistemas Expertos


UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
ESCUELA DE FORMACIÓN PROFESIONAL DE INGENIERÍA DE SISTEMAS

Consultas

UNSCH-2018. 9 Lab. Sistemas Expertos


UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA
ESCUELA DE FORMACIÓN PROFESIONAL DE INGENIERÍA DE SISTEMAS

EJERCICIO 3
Implemente la base de conocimientos de la variable anónima vista
anteriormente.

EJERCICIO 4
Represente el siguiente conocimiento:
Dan es hijo de Juan, Pedro es hijo de Dan e Ivan es hijo de Dan
Maria y Susana son hermanas, Harold Larry son hermanos, Ivan y Simón son
Hermanos, Juan está casado con Maria y Larry con Sue.

Implemente 5 consultas como mínimo.

UNSCH-2018. 10 Lab. Sistemas Expertos

Вам также может понравиться