Você está na página 1de 12

Hans Villagrn Vidal

write(texto). Mostrar texto en pantalla read(X). Lee desde teclado y unifica con X. consult(programa). Compilar un programa .pl edit(programa). Editar un programa .pl listing. Muestra todas las clausulas de un programa assert(hecho). Agrega un nuevo hecho a la base de conocimientos (programa) retract(hecho). Elimina un hecho a la base de conocimientos (programa) \+ Negacin de hechos.

Al usar read(X) se debe tener cuidado con el valor de la variable que se ingresa
Recordar que una constante se agrega con MINUSCULA Si se agrega un trmino con mayscula, Prolog retorna el valor de una variable interna Para agregar una palabra o frase, se usan las comillas simples Si se usan las comillas dobles , Prolog retorna una lista con el valor ASCII de los caracteres

Consultemos los hijos de Felipe Respuesta: es_padre_de(felipe,_). Supongamos que Claudia y David tienen una hija Mara, que debemos agregar a la base de conocimientos Respuesta:

assert(es_hijo_de(maria, claudia)). assert(es_hijo_de(maria, david)). assert(mujer(maria)). Sin embargo hay que definir los predicados para agregar como dinmicos :- dynamic es_hijo_de/2. :- dynamic mujer/1.

Una de las estructuras ms importantes en Prolog son las listas. La lista vaca [ ] es una lista y es el ltimo elemento de cada lista. Para nombrar todos los elementos de una lista se hace con .(X,Y,a,b). Existe otra forma de notacin: [X|Y].
Donde X es el primer elemento de la lista (cabeza) Y es lo restante (cola).

Pertenencia Para ver que un elemento pertenece a una lista L, puede ser el de la cabeza, o comprobar en la cola Sentencias en Prolog pertenece(X,[X|L]). pertenece(X,[Y|L]) :- pertenece(X,L).

Concatenar En Prolog existe el comando append que dadas dos listas las une para formar una. append(L1,L2,L3). Donde L1 y L2 son las listas que queremos unir para formar L3. Otra forma es utilizar las siguientes reglas:
concatena([ ],L,L). concatena([X|L1],L2,[X|L3]) :- concatena(L1,L2,L3).

Longitud de una Lista Para determinar el nmero de elementos de una lista usaremos las siguientes reglas
longitud([ ], 0). longitud( [_| Cola] , Total) :- longitud(Cola, lenght), Total is lenght+1.

Invertir una Lista Damos vuelta la lista dada


invertir([X],[X]). invertir([X|M],Z):-invertir(M,S), concatena(S,[X],Z).

Tenemos la siguiente base de conocimientos (BC): Mara, Alfredo, Toms, Susana y Juan son alumnos de Historia y tienen que rendir un examen. Alfredo y Mara leen el libro gua del curso, hacen los ejercicios y asisten a clases. Toms lo sabe todo. Mara ayuda a Juan a estudiar y Juan ayuda a Susana a estudiar.

Continuacin de la BC Una persona aprueba el examen si ella est preparada para el examen. Una persona est preparada para el examen si va a clases, realiza los ejercicios y lee el libro. Otra forma de prepararse para el examen es que una persona preparada para el examen sea el tutor de otra persona. Una tercera forma es que esa persona lo sepa todo.

1.
2.

a) b) c) d)

Representar en Prolog la base de conocimientos. Escribir la consulta hecha en Prolog y la respuesta, como comentario (%), de las siguientes preguntas:
Juan aprueba el examen? Est Susana preparada para el examen? Quin es el sabio del grupo? Quines aprueban el examen?

Esta mini tarea se entrega el prximo domingo 10 de junio por correo a hvillagran@udec.cl

Você também pode gostar