Sie sind auf Seite 1von 5

16 de julio de 2005

Inteligencia Artificial (ST414)

PROLOG LABORATORIO 1 Objetivos 1. Crear nuevos proyectos. 2. Identificar las secciones de un programa en PROLOG Creacin de Proyectos. 1. Crear su carpeta de trabajo en ../labs/ 2. Ingresar al PROLOG e ir a la opcin Project/New Project

Presione el botn Create para crear el nuevo proyecto. Luego de este paso obtendr la siguiente ventana, desde donde puede seleccionar, editar y crear los programas para su proyecto.

3. Registrar su proyecto con el nombre Lab01 en la carpeta ../labs/

5. Edite el programa LAB01.PRO Ud debe de obtener el siguiente programa, compare y verifique que los programas tienen la misma especificacin: /***************************** Copyright (c) My Company Project: LAB01 FileName: LAB01.PRO Purpose: No description Written by: Visual Prolog Comments: *******************************/ include "lab01.inc"

4. Modifique la configuracin del UI Strategy, como sigue:

predicates lab01() clauses lab01():-!. goal lab01(). Identifique las secciones de este programa y mencione el objetivo de cada uno de ellos.

16 de julio de 2005

Inteligencia Artificial (ST414)

PROLOG LABORATORIO 2 Objetivos 1. Creacin de dominios, predicados, clausulas y goals Crear un programa en Prolog. 1. Recuerde que la lgica de programacin en Prolog es declarativa, a diferencia de lenguajes de programacin como el Java o C++ que son procedurales. Por lo que las instrucciones no especifican cmo resolver el problema?, sino cul es el problema a resolver

6. Modifique el programa para identificar los hijos de julia (hijos e hijas). goal progenitor("julia",X,_). 7. Indique que se obtiene cuando se ejecuta el siguiente goal, explique. goal progenitor("victor",Y,_), progenitor("julia",Z,_),Y<>Z. 8. Prepare el goal para identificar todos los hijos hombres y todos los hijos mujeres.

2. Reemplace el programa generado por defecto por el PROLOG por el siguiente cdigo: /******************************** Ejemplo 1 *********************************/ DOMAINS persona, genero = string PREDICATES progenitor(persona,persona, genero) hijo(persona, persona) CLAUSES progenitor("victor","luis" , "M"). progenitor("victor","maria" , "F"). progenitor("victor","carlos", "M"). progenitor("victor","laura" , "F"). progenitor("victor","eliseo", "M"). progenitor("julia" ,"luis" , "M"). progenitor("julia" ,"maria" , "F"). progenitor("julia" ,"carlos", "M"). progenitor("julia" ,"laura" , "F"). progenitor("julia" ,"elian" , "F"). hijo(X,Y) :- progenitor(Y,X,_). goal hijo(X, Y). 3. Presione F9 y verifique que es lo que se obtiene. 4. Presiones Ctl-G y verifique que es lo que se obtiene. 5. Modifique el programa para identificar todos los hijos varones. goal progenitor(_,X,"M").

16 de julio de 2005

Inteligencia Artificial (ST414)

PROLOG LABORATORIO 3 Objetivo. 1. Administracin de la recursividad read y write. 1. Para el programa anterior disee un programa en PROLOG de tal manera que se pueda conocer a todos los padres de un hijo ingresado por el usuario del sistema. 2. La clausula readln(X) leer un string hasta que se presione Enter y siempre es verdadero. 3. La clusula readint(X), leer in entero en X y siempre es verdadero 4. La clausula write(X,Y,Z,. . . ), escribe en pantalla la cadena XYZ, si espacios al medio. Solucin parcial: 1. Modifique su programa para ingresar las siguientes instrucciones, determine a que seccin del programa corresponde, si es que se debe de crear nuevos predicados, nuevas clausulas y cul es el goal del programa. readhijo(Hijo) :nl, write("Ingresa el nombre del hijo"),nl, write("Hijo ? :"), readln(Hijo). test :- readhijo(H), hijo(H,P), nl, write("(n para salir-->) El padre de <", H, " > es <", P,">"), nuevotest(Ch),!. test :- nl, nl, write("-- pruebe de nuevo --"),nl, fintest(Ch),nl, test.

3. Disee un programa que solicite el nombre y el genero del hijo y que antes de proporcionar los nombres de los padres verifique si estos son correctos. 4. Reporte las conclusiones a las que llega.

Las clausulas para los predicados nuevotest y fintest son los siguientes: nuevotest(Ch) :readchar(Ch), Ch='n'. fintest(Ch) :write("desea seguir s/n-->"), readchar(Ch), Ch='s'. 2. Diga de qu manera se puede controlar que la solicitud de nueva prueba, se pueda ingresar con minsculas o maysculas y que solo acepte las iniciales de Si o No.

16 de julio de 2005

Inteligencia Artificial (ST414)

PROLOG LABORATORIO 4 Objetivo. Bsqueda en rboles.

Bsqueda en rboles. 1. Para el siguiente rbol determine las reglas necesarias para conocer: el (los) padre(s) el (los) hermano(s) el (los) tio (s) el (los) primo (s) el (los) antecesor (es)

A B E K W L M F N O G P Q C H R S I T U D J V X

2. Defina las relaciones como hijo, por ejemplo: hijo (B,A) , hijo(G, C) 3. Indique las modificaciones a su programa si es que algunos nodos del rbol se repiten. 4. Identifique la estrategia de bsqueda que usa el PROLOG para resolver el problema, es posible modificar la estrategia de bsqueda? 5. Reporte las conclusiones a las que ha llegado.

16 de julio de 2005

Inteligencia Artificial (ST414)

PROLOG LABORATORIO 5 Objetivo. Consultas y diseo de goals. Consultas. 1. Ud. dispone del siguiente predicado: nondeterm nombre(nombre, genero, 2. Y, de los siguientes hechos: nombre("ACHIQ", "hombre", nombre("ACKONQHAWAQ","hombre", nombre("AMARU", "hombre", nombre("ANTAY", "hombre", nombre("ATIQ", "hombre", nombre("ATUQ", "hombre", nombre("CHUKI", "hombre", nombre("KUNTUR", "hombre", nombre("KUNTURCHAWA","hombre", nombre("KUNTURKANKI","hombre", nombre("KUNTURUMI", "hombre", nombre("KUSIPUMA", "hombre", nombre("WILLKA", "hombre", nombre("WILLKAWAMAN","hombre", nombre("YAKU", "hombre", nombre("ACHIQ", "mujer", nombre("AKLLASISA", "mujer", nombre("ALIQORA", "mujer", nombre("AMANKAY", "mujer", nombre("AWQASISA", "mujer", nombre("CHAMI", "mujer", nombre("CHINPUKILLA","mujer", nombre("CHUKI", "mujer", nombre("ILLA", "mujer", nombre("ILLARI", "mujer",

significado, color,

edad)

"luz", "piedra", "serpiente", "cobre", "vencedor", "zorro", "danzante", "condor", "condor", "condor", "condor", "puma", "sagrado", "halcon", "agua", "luz", "flor", "hierba", "flor", "flor", "pequea", "luna", "danzante", "luz", "amanecer",

"blanco", 24). "blanco", 32). "", 41). "cobre", 22). "", 25). "", 26). "oro", 31). "roca", 15). "rojo", 43). "marron", 23). "roca", 24). "marron", 31). "sol", 22). "", 22). "transparente",34). "blanca", 22). "arcoiris", 25). "", 22). "blanca", 34). "roja", 34). "", 22). "arcoiris", 33). "oro", 44). "blanca", 34). "azul", 25).

3. Diga el resultado que se obtiene al aplicar los siguientes goals, interprete las respuestas 1. nombre(X,hombre,_,_,_), nombre(X,mujer,_,_,_). 2. nombre(X,Z1,_,_,_), nombre(X,Z2,_,_,_),Z1=hombre,Z2=mujer. 3. nombre(_,_,X,_,N),N>23,N<33,not(nombre(_,_,_,,_)). 4. nombre(X,_,luz,_,_); nombre(X,_,puma,_,_). 4. Diga el resultado que se obtiene al aplicar los siguientes goals, interprete las respuestas 1. Todas las personas (slo nombre) con edades entre 10 y 20 aos o entre 35 y 100 aos. 2. Todas las personas (solo nombre) sin color, o con color blanco (puede ser blanca) 3. Los colores para los hombres cuyo nombre no signifique danzante y con edades menores a 20 y mayores a 35 aos (no debe presentar los casos donde el color no tenga un valor).

Das könnte Ihnen auch gefallen