Está en la página 1de 11

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING.

MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

POGRAMACIN EN PROLOG
--------------------------------------------------------------------------------------------------------------------------Docente del curso: ING KAREN CARRION DOMINGUEZ

LABORATORIO 01 PROGRAMACIN VISUAL PROLOG OBJETIVOS Instalacin de Visual Prolog. Conocer el manejo de Visual Prolog. Conocer la forma de declarar y utilizar los predicados Desarrollar ejemplos en modo consola o texto.

DESCRIPCIN Prolog es un lenguaje de programacin hecho para representar y utilizar el conocimiento que se tiene sobre un determinado dominio. Ms exactamente, 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 programacin que es usado para resolver problemas que envuelven objetos y las relaciones entre ellos. TIPOS DE DATOS EN PROLOG Symbol Hay dos tipos de smbolos: 1. Un grupo de caracteres consecutivos (letras, nmeros y signos de subrayado) que comienzan con un carcter en minscula

Ejemplo: alto,alto_edificio,el_alto_edificio_en_la_ciudad
2. Un grupo de caracteres consecutivos(letras y nmeros) que comienzan y terminan con dobles comillas("). Este tipo es til cuando se quiere comenzar el smbolo con un carcter en mayscula o si se quieres agregar espacios entre los caracteres del smbolo. Ejemplo:"Alto","Alto edificio".

------------------------------------------------------------------------------------------------------------------------------------------------------------

SISTEMAS EXPERTOS

IS-442

-1-

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING. MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

POGRAMACIN EN PROLOG
--------------------------------------------------------------------------------------------------------------------------Docente del curso: ING KAREN CARRION DOMINGUEZ

String Cualquier grupo de caracteres consecutivos (letras y nmeros) que comience y termine con dobles comillas("). Es igual a smbolo pero Prolog los trata de forma distinta. Ejemplo:"alto","alto edificio"

Integer Cualquier numero comprendido entre (-32.768 y 32.768). El limite esta determinado porque los enteros se almacenan como valores de 16 bits, este limite puede variar segn la versin de Prolog. Ejemplo:4,-300,3004

Real Cualquier numero real en el rango +/- 1E-307 a +/-1E+308. El formato incluye estas opciones: signo, numero, punto decimal, fraccin, E(exponente), signo para el exponente, exponente. Ejemplo:3,3.1415

Char Cualquier carcter de la lista ASCII estndar, posicionado entre dos comillas sencillas(). Ejemplos:t,X PROLOG est orientado a la resolucin de problemas mediante el clculo de predicados, basado en: Preguntas a la base de datos. Pruebas matemticas. El programa PROLOG especifca cmo debe ser la solucin, en vez de dar el algoritmo para su resolucin. La solucin se obtiene mediante bsqueda aplicando la lgica de predicados.

------------------------------------------------------------------------------------------------------------------------------------------------------------

SISTEMAS EXPERTOS

IS-442

-2-

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING. MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

POGRAMACIN EN PROLOG
--------------------------------------------------------------------------------------------------------------------------Docente del curso: ING KAREN CARRION DOMINGUEZ

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. EL ENTORNO DE VISUAL PROLOG

------------------------------------------------------------------------------------------------------------------------------------------------------------

SISTEMAS EXPERTOS

IS-442

-3-

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING. MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

POGRAMACIN EN PROLOG
--------------------------------------------------------------------------------------------------------------------------Docente del curso: ING KAREN CARRION DOMINGUEZ

Ejemplos de programacin 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. Ejecutamos el programa. Presione la opcin New del men File. lo que aparecer una ventana en la cual copie lo siguiente:

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

------------------------------------------------------------------------------------------------------------------------------------------------------------

SISTEMAS EXPERTOS

IS-442

-4-

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING. MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

POGRAMACIN EN PROLOG
--------------------------------------------------------------------------------------------------------------------------Docente del curso: ING KAREN CARRION DOMINGUEZ

ANLISIS DEL PROGRAMA: La estructuracin 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 clusulas equivaldra a la definicin de funciones en lenguaje C, utilizan las definiciones de Domains, as por ejemplo: amigos Clauses: contiene la definicin especfica de los predicados valioso(oro). hermano(juan, pedro). amigos( luis,pedro,pablo). El smbolo de culminacin se determina por un punto. Goal: contiene las consultas a desarrollar en el programa El prolog permite como se indico extraer consultas lgicas de los que sucede en el conocimiento expresado resultando estas consultas verdaderas o falsas (YES, NO) segn corresponda, aqu se han de ubicar las preguntas necesarias ejemplo es valioso el oro:

valioso(oro).

Para poner en memoria todas las clusulas y ver la consulta ejecute Test Goal del men de proyecto o su equivalente CTRL+G o simplemente apretando el botn 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. Ntese que se ha ejecutado la consulta para crear un ejecutable se tiene que crear un proyecto echo que se desarrollara despus:

------------------------------------------------------------------------------------------------------------------------------------------------------------

SISTEMAS EXPERTOS

IS-442

-5-

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING. MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

POGRAMACIN EN PROLOG
--------------------------------------------------------------------------------------------------------------------------Docente del curso: ING KAREN CARRION DOMINGUEZ

valioso(oro). valioso(plata). valioso(bronce). 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 mayscula Al ejecutar la consulta la respuesta ser:

Esto corresponde a las especificaciones que se han definido anteriormente en las clusulas. Si desea aumentar las especificaciones puede ubicar valioso(cobre). valioso(zing). La respuesta permitir cinco soluciones para X.

Consideracin: Si desea mejorar la aplicacin podrir ubicar entre comillas todo su programa todas las especificaciones de las clusulas el paquete generara de mejor forma estas definiciones ubicndolas de un color respectivo. Especificaciones en Verde Amarillento, Clusulas en Negro, Cadenas en azul, Variables en verde claro, errores en rojo, etc.

------------------------------------------------------------------------------------------------------------------------------------------------------------

SISTEMAS EXPERTOS

IS-442

-6-

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING. MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

POGRAMACIN EN PROLOG
--------------------------------------------------------------------------------------------------------------------------Docente del curso: ING KAREN CARRION DOMINGUEZ

BSQUEDAS: VARIABLES Y PREDICADOS La practica le permitir proponer un sistema experto que deduzca quien es cuado de quien en una familia en base a una serie de conocimientos propuestos, para esto se ira paso a paso.

------------------------------------------------------------------------------------------------------------------------------------------------------------

SISTEMAS EXPERTOS

IS-442

-7-

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING. MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

POGRAMACIN EN PROLOG
--------------------------------------------------------------------------------------------------------------------------Docente del curso: ING KAREN CARRION DOMINGUEZ

Casos: Indicar cual es la respuesta de la consulta: Quien es hijo Dan: GOAL hijo(X, "Dan"). Respuesta:Pedro, Ivan Todos los hijos. GOAL hijo(X,Y). Respuesta: X=Dan, Y=Juan X=Pedro, Y=Dan X=Ivan, Y=Dan Hermanas de Sue GOAL Respuesta:

Hermanas de Susana GOAL Respuesta:

Hermanos de Larry GOAL Respuesta:

Todos los casados: GOAL Respuesta:

Todos los hijos de Dan: GOAL Respuesta:

------------------------------------------------------------------------------------------------------------------------------------------------------------

SISTEMAS EXPERTOS

IS-442

-8-

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING. MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

POGRAMACIN EN PROLOG
--------------------------------------------------------------------------------------------------------------------------Docente del curso: ING KAREN CARRION DOMINGUEZ

USANDO PREDICADOS :- , ; La idea de esta parte es encontrar quien es cuado de quien en base a las clusulas definidas anteriormente, para esto antes de GOAL ubique el siguiente predicado (No interesa que exista doble PREDICATES Y CLAUSES) PREDICATES cunado(persona,persona) CLAUSES cunado(A,B):-casado(A,C), hermana(C,B). cunado(A,B):-hermano(A,C), casado(C,B). Referencia: Las variables A, B y C permiten desarrollar las bsquedas necesarias en caso estas sean encontradas se cumplan una tras otra en ser verdaderas son asignadas a cuado y se ven como respuestas. Consultas: De quien es el cuado(a) de Juan: GOAL cunado("Juan", Z) Respuesta: Quien es el cuado de Maria: GOAL Respuesta: Todos los cuados: GOAL Respuesta: MEJORANDO LA APLICACIN TRABAJANDO CON NUEVOS PREDICADOS Se desea conocer en base a los conocimientos definidos: PREDICATES padre(persona,persona) abuelo(persona,persona) CLAUSES padre(A,B):-hijo(B,A). % no toma en cuenta los hermanos cruzados abuelo(A,B):-padre(A,C), padre(C,B).
------------------------------------------------------------------------------------------------------------------------------------------------------------

SISTEMAS EXPERTOS

IS-442

-9-

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING. MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

POGRAMACIN EN PROLOG
--------------------------------------------------------------------------------------------------------------------------Docente del curso: ING KAREN CARRION DOMINGUEZ

Consultas: Todos los padres: GOAL Respuesta: Todos los abuelos: GOAL Respuesta: Se desea conocer los hermanos en comn ya que no se distingue entre estos, existen dos predicados diferentes hermana y hermano, es mas esta no es una relacin de arriba abajo si no del miso nivel por ejemplo si se consulta: GOAL hermana("Susana",X). La respuesta es: Sin Solucin, pero: hermana("Maria","Susana"). La solucin parte por incluir un nuevo predicado (incluirlo al final antes de GOAL):

PREDICATES hermanos(persona,persona) CLAUSES hermanos(A,B):-hermano(A,B). %una clusula hermano corresponde a hermanos hermanos(A,B):-hermano(B,A). %un hermano puede referirse en forma inversa definindose as en hermanos hermanos(A,B):-hermana(A,B). %una clusula hermana corresponde a hermanos hermanos(A,B):-hermana(B,A). %una hermana puede referirse en forma inversa definindose as en hermanos hermanos("Popo","Ququ"). %Puede definirse nuevas clusulas hermanos("Maria", "Pedro"). Referencia: Ntese que un predicado no es solamente una definicin si no que se puede sobrecargar, osea redefinirla varias veces.

------------------------------------------------------------------------------------------------------------------------------------------------------------

SISTEMAS EXPERTOS

IS-442

- 10 -

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA FACULTAD DE ING. MINAS, GELOGIA Y CIVIL ESCUELA DE FORMACIN PROFESIONAL DE INGENIERA DE SISTEMAS

POGRAMACIN EN PROLOG
--------------------------------------------------------------------------------------------------------------------------Docente del curso: ING KAREN CARRION DOMINGUEZ

Consultas:

Todos los hermanos existentes:


GOAL Respuesta:

EJERCICIO 02: 1. Sobrecargue el predicado hermanos, para encontrar a los hermanos que tengan el mismo padre, utilizando el predicado hijo: Ejemplo: Pedro e Ivan son hermanos por que tienen el mismo padre. hijo("Pedro", "Dan"). hijo("Ivan", "Dan"). 2. Sobrecargue el predicado padre, para encontrar a los hijos de un padre que son los hermanos de sus hijos, utilizando el predicado hijo y hermano. Ejemplo: Si Ivan es hijo de Dan e Ivan es hermano de Simon, entonces Simon es hijo de Dan. hijo("Ivan", "Dan"). hermano("Ivan", "Simon"). 3. Desarrolle su ARBOL_GENEALOGICO_ALUMNO.PRO

------------------------------------------------------------------------------------------------------------------------------------------------------------

SISTEMAS EXPERTOS

IS-442

- 11 -

También podría gustarte