miércoles, 17 de agosto de 2011

Prolog 2

A continuacion presentare las guias de Porlog hechas en clase de sistemas, basadas en el libro del profesor Manuel Montero, he hecho las guias 1 y 2; espero que las disfruten y su contendio sea de gran ayuda para todos en la comunidad:
Guia 1
Ejemplos
Ejemplo 1
domains
nombre=symbol
predicates
padre(nombre,nombre)
todos
clauses
padre(juan,pedro).
padre(jose,maria).
padre(julio,carlo).
todos:-padre(X,Y),makewindow(1,112,7,resultados,3,20,10,45),
cursor(5,5),
write(X," es el padre de ",Y),
nl,readln(_),fail.

Ejercicios

Ejercicio 1

domains
nombre,sexo,interes=symbol
intereses=interes*
predicates
encuentrapares
persona(nombre,sexo,interes)
interes_comun(intereses,intereses,interes)
miembro(interes,intereses)
clauses
encuentrapares:-
persona(H,m,L1),
persona(M,f,L2),
interes_comun(L1,L2,_),
write(H, " Puede gustarle ",M),nl,fail.
encuentrapares:- write("fin de la lista").
interes_comun(L1,L2,X):-
miembro(X,L1),
miembro(X,L2),!.
persona(juan,m,[viajes,libros,bicicleta]).
persona(maria,f,[cine,libros,tenis]).
miembro(X,[X|_]).
miembro(X,[_|C]):-miembro(X,C).

Ejercicio 2

domains
persona=symbol
objeto=symbol
predicates
femenino(persona)
masculino(persona)
progenitor(persona,persona)
pareja(persona,persona)
rela(objeto)
padre(persona,persona)
madre(persona,persona)
hermano(persona,persona)
hermana(persona,persona)
tio(persona,persona)
tia(persona,persona)
primo(persona,persona)
prima(persona,persona)
abuelo(persona,persona)
abuela(persona,persona)
ancestro(persona,persona)
descendiente(persona,persona)
familiar(persona,persona)
clauses
femenino(isabel).
femenino(clara).
femenino(monica).
femenino(sandra).
femenino(katherine).
femenino(amanda).
femenino(julia).
femenino(lilia).
masculino(julio).
masculino(adolfo).
masculino(tomas).
masculino(luis).
masculino(fernando).
masculino(ricardo).
masculino(william).
masculino(manuel).
progenitor(julio,sandra).
progenitor(isabel,sandra).
progenitor(julio,adolfo).
progenitor(isabel,adolfo).
progenitor(julio,clara).
progenitor(isabel,clara).
progenitor(clara,monica).
progenitor(luis,monica).
progenitor(luis,fernando).
progenitor(clara,fernando).
progenitor(tomas,katherine).
progenitor(sandra,katherine).
progenitor(adolfo,manuel).
progenitor(maritza,manuel).
pareja(tomas,sandra).
pareja(luis,clara).
pareja(julio,isabel).
pareja(adolfo,maritza).
rela(pedro).
rela(juan).

padre(X,Y):-
progenitor(X,Y),
masculino(X).
madre(X,Y):-
progenitor(X,Y),
femenino(X).
hermano(X,Y):-
progenitor(Z,X),
progenitor(Z,Y),
masculino(X),
X<>Y.
hermana(X,Y):-
progenitor(Z,X),
progenitor(Z,Y),
femenino(X),
X<>Y.
tio(X,Y):-
progenitor(Z,Y),
hermano(X,Z).
tia(X,Y):-
progenitor(Z,Y),
hermana(X,Z).
primo(X,Y):-
progenitor(Z,X),
progenitor(W,Y),
hermana(Z,W),
masculino(X);
progenitor(Z,X),
progenitor(W,Y),
hermano(Z,W),
masculino(X).
prima(X,Y):-
progenitor(Z,X),
progenitor(W,Y),
hermana(Z,W),
femenino(X);
progenitor(Z,X),
progenitor(W,Y),
hermano(Z,W),
femenino(X).
abuelo(X,Y):-
padre(X,Z),
padre(Z,Y);
padre(X,Z),
madre(Z,Y).
abuela(X,Y):-
madre(X,Z),
padre(Z,Y);
madre(X,Z),
madre(Z,Y).
ancestro(X,Y):-
abuelo(X,Y);
abuela(X,Y);
progenitor(X,Y);
tio(X,Y);
tia(X,Y).
descendiente(X,Y):-
abuela(Y,X);
abuelo(Y,X);
progenitor(Y,X).
familiar(X,Y):-
ancestro(X,Y);
descendiente(X,Y).

Guia 2

Ejemplos

Ejemplo 1

domains
nombre=symbol

predicates
padre(nombre,nombre)
todos

clauses
padre(juan,pedro).
padre(jose,maria).
padre(julio,carlo).
todos:-padre(X,Y),
makewindow(1,112,7,resultados,3,20,10,45),
cursor(5,5),write(X, " es el padre de ",Y),
nl,readln(_)
fail.

Ejemplo 2

Domains
integerlist = integer*

Predicates
par ( integer, integerlist )
lee ( integerlist )
escribe ( integerlist )

Clauses
par(Head, [Head|_]) :-
0 = Head mod 2.
par(Element, [_|Tail]) :-
par(Element, Tail).

lee([H|T]) :-
write("Ingrese un entero: ") ,
readint(H), ! ,
lee(T).
lee([]).

escribe(L) :-
par(E,L) ,
write(E,"\n") ,
fail.
escribe(_).

Goal
makewindow(1,2,3,"NUMEROS PARES DE UNA LISTA ",0,0,25,80) ,
write("Por favor entre un entero que ",
"qquiere incluir a la lista.\n",
" (Enter y ningun entero para finalizar la lista.)\n\n") ,
lee(List) ,
write("\nEsta es la lista completa",List,":\n\n") ,
escribe(List),
write("\nPresione una tecla...") ,
readchar(_).

Ejercicios

Ejercicio 1

domains
nombre,sexo,interes=symbol
intereses=interes*
predicates
encuentrapares
persona(nombre,sexo,interes)
interes_comun(intereses,intereses,interes)
miembro(interes,intereses)
clauses
encuentrapares:-
persona(H,m,L1),
persona(M,f,L2),
interes_comun(L1,L2,_),
write(H, " Puede gustarle ",M),nl,fail.
encuentrapares:- write("fin de la lista").
interes_comun(L1,L2,X):-
miembro(X,L1),
miembro(X,L2),!.
persona(juan,m,[viajes,libros,bicicleta]).
persona(maria,f,[cine,libros,tenis]).
miembro(X,[X|_]).
miembro(X,[_|C]):-miembro(X,C).

Ejercicio 2

Domains
integerlist = integer*

Predicates
par ( integer, integerlist )
lee ( integerlist )
escribe ( integerlist )
nombre,sexo,interes=symbol
intereses=interes*
predicates
encuentrapares
persona(nombre,sexo,interes)
interes_comun(intereses,intereses,interes)
miembro(interes,intereses)

No hay comentarios:

Publicar un comentario