Está en la página 1de 5

Universidad Nacional del Altiplano – Puno

Escuela Profesional de Ingeniería de Sistemas


CURSO: INTELIGENCIA ARTIFICIAL

GUÍA ACADÉMICA Nro. 1

TEMA: PRIMER PROGRAMA

Apellidos y Nombres: ……………………………………… Nro. Matrícula: ….………

OBJETIVOS:

◊ Conocer al Visual Prolog y el Swi Prolog

REQUERIMIENTOS:

◊ Pc con Visual Prolog o SWI Prolog

PROCEDIMIENTO

PARTE 1: Corriendo el Primer Programa en Visual 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.

Para el presente curso se utilizara dos versiones el Visual Prolog 5.0 y el SWI
Prolog 5.6, siendo el segundo una versión actual y pequeña pero de
características similares al primero, la mayor parte del trabajo se desarrollar en
el primero ya que su entorno de trabajo tiene características ideales quedando
el segundo como alternativo para su revisión para esto se propondrán las
diferencias correspondientes y sus casos respectivos en caso de ser necesario.
En este caso se va ha proponer el siguiente programa en Visual Prolog., para
esto se deberá ingresara al paquete, ahí seleccionar la opción nuevo de la
barra de botones o del menú FILE, lo que aparecerá una ventana en la cual
copie lo siguiente:

Domains
metal = symbol
Predicates
valioso(metal)
Clauses
valioso(oro).
valioso(plata).
valioso(bronce).
Goal
valioso(oro).

Luego almacene su archivo donde deseara pero siempre con la extensión pro.,
luego de almacenar el archivo notara el cambio de color de algunas letras del
programa que copio, si no ubico la extensión no sucederá el cambio.

1
Universidad Nacional del Altiplano – Puno
Escuela Profesional de Ingeniería de Sistemas
CURSO: INTELIGENCIA ARTIFICIAL

Análisis del programa:

La estructuración de un programa en Visual Prolog contiene estas partes,


requeridas necesariamente:

Domains: aquí se definen los tipos de datos que se han de usar en los
predicados, así por ejemplo,

hombre = string
metal = symbol
numeros = real
letra = char

Predicates: aquí se definen todos los predicados que se han de definir, en las
cláusulas equivaldría a la definición de funciones en lenguaje C, utilizan las
definiciones de Domains, así por ejemplo:

valioso(metal)
Hermano(hombre, hombre)
amigos( hombre,hombre,hombre)

Clauses: contiene la definición especifica de los predicados

valioso(oro).
hermano(“juan”, “pedro”).
amigos( ”luis”,”pedro”,pablo”).

El símbolo de culminación se determina por un punto.

Goal: contiene las consultas a desarrollar en el programa

El prolog permite como se indico extraer consultas lógicas de los que sucede
en el conocimiento expresado resultando estas consultas verdaderas o falsas
(YES, NO) según corresponda, aquí se han de ubicar las preguntas necesarias
ejemplo es valioso el oro:

valioso(oro).

Para poner en memoria todas las clausulas y ver la consulta ejecute Test Goal
del menú de proyecto o su equivalente CTRL+G o simplemente apretando el
botón G de la barra de botones.

Luego observara una ventana de sugerencias y errores y otra ventana que


muestra el resultado de la consulta en este caso YES.
Nótese que se ha ejecutado la consulta para crear un ejecutable se tiene que
crear un proyecto echo que se desarrollara después

PARTE 2: Entendiendo y Mejorando el Programa

valioso(oro).
valioso(plata).
valioso(bronce).

2
Universidad Nacional del Altiplano – Puno
Escuela Profesional de Ingeniería de Sistemas
CURSO: INTELIGENCIA ARTIFICIAL

Indican que la "La plata es valiosa", "el oro es valioso". Todos estos predicados
se escriben en un "programa" de Prolog. Tras "correr" el programa, se pueden
hacer estas consultas:

Valioso(oro). ¿Es valioso el oro? Esta es una meta


Yes Si, es la respuesta

En vez de la consulta anterior se colocara esta nueva:

Goal Valioso(X).

X es una variable, por ello va en mayúscula


Al ejecutar la consulta la respuesta sera

X=oro
X=plata
X=bronce
3 soluciones

Esto corresponde a las especificaciones que se han definido anteriormente en


las cláusulas.

Si desea aumentar las especificaciones puede ubicar

valioso(cobre).
valioso(zing).

La respuesta permitirá cinco soluciones para X.

Consideración:

Si desea mejorar su aplicación podrirá ubicar entre comillas todo su programa


todas las especificaciones de las cláusulas el paquete generara de mejor forma
estas definiciones ubicándolas de un color respectivo.

Especificaciones en Verde Amarillento, Cláusulas en Negro, Cadenas en azul,


Variables en verde claro, errores en rojo, etc.

El programa quedaría:

Domains
metal = string
Predicates
valioso(metal) %Predicado único no siempre será así
Clauses
valioso("oro").
valioso("plata").
valioso("bronce").
valioso("cobre"). % Cláusulas agregadas
valioso("zing").
Goal
valioso(X). %Consulta

3
Universidad Nacional del Altiplano – Puno
Escuela Profesional de Ingeniería de Sistemas
CURSO: INTELIGENCIA ARTIFICIAL

PARTE 3: Ejecución del programa en SWI Prolog

La diferencia no es mucha entre paquete y paquete con la salvedades que se


indicaran a continuación, en realidad el programar en SWI Prolog es mas
sencillo, lo que nos permite cierta versatilidad, observa la diferencia.

Entre al SWI Prolog, ahí en el menú file seleccionar la opción new, lo que abrirá
una ventana de edición donde, se colocara el nombre respectivo, ahí se
seleccionara si para crear uno nuevo, una vez abierto el editor copiara
solamente la parte de las cláusulas del programa desarrollado en Visual Prolog,
ósea:

valioso(oro).
valioso(plata).
valioso(bronce).

Almacene su programa y vuelva a SWI Prolog, ahí en el menú file seleccioné la


especificación Consult, lo que le permitirá abrir un dialogo, en el cual abra su
programa copiado anteriormente, eso hará que las cláusulas definidas ahí se
definan en la memoria para desarrollar consultas

Luego al volver al SWI Prolog coloquese en modo consulta ?-, lo que


conseguirá con el cursor a la derecha (fleca a la derecha->) de los botones de
cursos, los cursores arriba abajo vuelven a las consultas anteriores, una vez
ahí puede hacer las consultas:

?- valioso(oro). ¿Es valioso el oro? Esta es una meta


Yes Si, es la respuesta

?- valioso(X). X es una variable, por ello va en mayúscula


X=oro;

Esta es una respuesta. Apretar tecla “;” , entonces Al agregar el punto y coma
se le está pidiendo otra respuesta que satisface la meta

X=plata; Otra ves la tecla ;


X=bronce; Otra ves la tecla ;
no Cuando ya no encuentra más respuestas responde con
"no". Ah encontrado 3 posibilidades verdaderas, No
aparece cuando no existen mas.

4
Universidad Nacional del Altiplano – Puno
Escuela Profesional de Ingeniería de Sistemas
CURSO: INTELIGENCIA ARTIFICIAL

CONCLUSIONES

RECOMENDACIONES

TRABAJO APLICATIVO

1. Cuales son las diferencias que existen entre el SWI Prolog y el Visual Prolog.