Está en la página 1de 16

TECNOLÓGICO NACIONAL DE MÉXICO

DEPARTAMENTO DE SISTEMAS COMPUTACIONALES

MATERIA
PROGRAMACION LOGICA Y FUNCIONAL

TITULO
PRÁCTICA: RECURSIVIDAD EN PROLOG.

GRUPO
7SB
ELY ISMAEL MAAS CAHUM
JESUS OSMAR AHUMADA OXTE
VICTOR AARON BAAS AVILES

DOCENTE
ING. LARISSA PENICHE

28 DE MARZO DEL 2020


Nombre del alumno: Ely Ismael Maas Cahum Grupo: 7 SB

Ejercicio 1. antecesor. Pruebe la ejecución correcta de la función antecesor,


utilizando la base de hechos (BH) de su árbol genealógico de su familia. Defina el
functor padre/2 y ampliar a varias generaciones.

A continuación, se anexa las reglas que fueron utilizadas en SWI-Prolog


padre_de(cristino,clotilde).%bisabuelo padre de mi abuelo
padre_de(clotilde,david).%abuelo padre de mi padre
padre_de(david,ely).%padre e hijo
antecesor_de(X,Y):-padre_de(X,Y).%padre

antecesor_de(X,Y):-padre_de(X,Z),%abuelo
padre_de(Z,Y).

antecesor_de(X,Y):-padre_de(X,Z1),%bisabuelo
padre_de(Z1,Z2),
padre_de(Z2,Y).

?- ?- padre_de(X,Y).
antecesor_de(cristino,Y). X = cristino,
Y = clotilde ; Y = clotilde ;
Y = david ; X = clotilde,
Y = ely. Y = david ;
X = david,
Ejercicio 2. ¡Investigue las funciones Fibonacci y n!. Estudie su estructura,
Pruebe cada una en su compilador. Documente la función indicando la
condición(es) de paro y la(s) parte(s) recursiva de la función.

Funcion Fibonacci
fib(0,0).%Detener
fib(1,1).%Detener
fib(N,NF):- %Recursa el primer dato de la posición y el segundo es el valor
en la posición

N>1,%Numero mayor a 1
Z is N-1, fib(Z,Nu),
Y is N-2, fib(Y,M), Resultado
NF is Nu+M.

Recursividad
factorial(0,1).%inicialización
factorial(N,F):-%Variables de entrada y salida respectivamente
( N>0,
( N1 is N-1, %decremento
factorial(N1,F1),%Primera variable entrada, la segunda salida
F is N*F1 % valores que va a tomar F
);
write('N debe ser mayor a 0')

).:
Resultado

?- factorial(5,V).
V = 120 .

?- factorial(2,V).
V=2
Ejercicio 3. amiga. Defina una BH con el functor amiga/2. Escriba una función
recursiva que encuentre a mis amigas, sabiendo que las amigas de mis amigas
son mis amigas.
amig(io,victoria). %unica amiga(solo victoria)
amig(victoria,dani). %amigas de victoria
amig(victoria,jessica). %amigas de victoria
amig(victoria,alma). %amigas de victoria
amig(osmara,lala). %amigas de Osmara
amig(osmara,megan). %amigas de Osmara
amig(osmara,windy). %amigas de Osmara

amigas(X,Y):-amig(X,Y).%para encontrar mi amiga(victoria)

amigas(X,Y):-amig(X,Z),%para encontrar las amigas de victoria


amig(Z,Y).

amigas(X,Y):-amig(X,Z1),%para encontrar las amigas de osmara


amig(Z1,Z2),
amig(Z2,Y).
Resultado:

?- amigas(io,X).
X = victoria ;
X = dani ;
X = jessica ;
X = alma ;
1. Ejercicio 4. Mis funciones. Encuentre al menos 2 funciones propias de
Prolog para manejo de listas (append, length, last, sum_list, member, last) y
escribe TUS PROPIAS funciones recursivas. Recuerda documentar % y
usar nombres de variables ilustrativos.
2. Pruebe sus funciones. Tome evidencias de al menos dos corridas de cada
función diseñada.

FUNCIÓN Mostrar_Ultimo (Last).


FUNCIÓN Longitud (Lenght).
Nombre del alumno: Jesus Osmar Ahumada Oxte Grupo: 7 SB

Ejercicio 1. antecesor. Pruebe la ejecución correcta de la función antecesor,


utilizando la base de hechos (BH) de su árbol genealógico de su familia. Defina el
functor padre/2 y ampliar a varias generaciones.

A continuación, se anexa las reglas que fueron utilizadas en SWI-Prolog


padre_de(cristino,clotilde).%bisabuelo padre de mi abuelo
padre_de(clotilde,david).%abuelo padre de mi padre
padre_de(david,ely).%padre e hijo
antecesor_de(X,Y):-padre_de(X,Y).%padre

antecesor_de(X,Y):-padre_de(X,Z),%abuelo
padre_de(Z,Y).

antecesor_de(X,Y):-padre_de(X,Z1),%bisabuelo
padre_de(Z1,Z2),
padre_de(Z2,Y).

?- padre_de(X,Y).
?-
antecesor_de(cristino,Y). X = cristino,
Y = clotilde ; Y = clotilde ;
Y = david ; X = clotilde,
Y = ely. Y = david ;
X = david,
Ejercicio 2. ¡Investigue las funciones Fibonacci y n!. Estudie su estructura,
Pruebe cada una en su compilador. Documente la función indicando la
condición(es) de paro y la(s) parte(s) recursiva de la función.

Funcion Fibonacci
fib(0,0).%Detener
fib(1,1).%Detener
fib(N,NF):- %Recursa el primer dato de la posición y el segundo es el valor
en la posición

N>1,%Numero mayor a 1
Z is N-1, fib(Z,Nu),
Y is N-2, fib(Y,M), Resultado
NF is Nu+M.

Recursividad
factorial(0,1).%inicialización
factorial(N,F):-%Variables de entrada y salida respectivamente
( N>0,
( N1 is N-1, %decremento
factorial(N1,F1),%Primera variable entrada, la segunda salida
F is N*F1 % valores que va a tomar F
);
write('N debe ser mayor a 0')

).:
Resultado

?- factorial(5,V).
V = 120 .

?- factorial(2,V).
V=2
Ejercicio 3. amiga. Defina una BH con el functor amiga/2. Escriba una función
recursiva que encuentre a mis amigas, sabiendo que las amigas de mis amigas
son mis amigas.
amig(io,victoria). %unica amiga(solo victoria)
amig(victoria,dani). %amigas de victoria
amig(victoria,jessica). %amigas de victoria
amig(victoria,alma). %amigas de victoria
amig(osmara,lala). %amigas de Osmara
amig(osmara,megan). %amigas de Osmara
amig(osmara,windy). %amigas de Osmara

amigas(X,Y):-amig(X,Y).%para encontrar mi amiga(victoria)

amigas(X,Y):-amig(X,Z),%para encontrar las amigas de victoria


amig(Z,Y).

amigas(X,Y):-amig(X,Z1),%para encontrar las amigas de osmara


amig(Z1,Z2),
amig(Z2,Y).
Resultado:

?- amigas(io,X).
X = victoria ;
X = dani ;
X = jessica ;
X = alma ;

3. Ejercicio 4. Mis funciones. Encuentre al menos 2 funciones propias de


Prolog para manejo de listas (append, length, last, sum_list, member, last) y
escribe TUS PROPIAS funciones recursivas. Recuerda documentar % y
usar nombres de variables ilustrativos.
4. Pruebe sus funciones. Tome evidencias de al menos dos corridas de cada
función diseñada.

FUNCIÓN Mostrar_Ultimo (Last).


FUNCIÓN Longitud (Lenght).

Nombre del alumno: Víctor Aarón Baas Avilés Grupo: 7 SB

Ejercicio 1. antecesor. Pruebe la ejecución correcta de la función antecesor,


utilizando la base de hechos (BH) de su árbol genealógico de su familia. Defina el
functor padre/2 y ampliar a varias generaciones.

A continuación, se anexa las reglas que fueron utilizadas en SWI-Prolog


padre_de(cristino,clotilde).%bisabuelo padre de mi abuelo
padre_de(clotilde,david).%abuelo padre de mi padre
padre_de(david,ely).%padre e hijo
antecesor_de(X,Y):-padre_de(X,Y).%padre

antecesor_de(X,Y):-padre_de(X,Z),%abuelo
padre_de(Z,Y).
antecesor_de(X,Y):-padre_de(X,Z1),%bisabuelo
padre_de(Z1,Z2),
padre_de(Z2,Y).

?- padre_de(X,Y).
?-
antecesor_de(cristino,Y). X = cristino,
Y = clotilde ; Y = clotilde ;
Y = david ; X = clotilde,
Y = ely. Y = david ;
X = david,

Ejercicio 2. ¡Investigue las funciones Fibonacci y n!. Estudie su estructura,


Pruebe cada una en su compilador. Documente la función indicando la
condición(es) de paro y la(s) parte(s) recursiva de la función.

Funcion Fibonacci
fib(0,0).%Detener
fib(1,1).%Detener
fib(N,NF):- %Recursa el primer dato de la posición y el segundo es el valor
en la posición

N>1,%Numero mayor a 1
Z is N-1, fib(Z,Nu),
Y is N-2, fib(Y,M), Resultado
NF is Nu+M.
Recursividad
factorial(0,1).%inicialización
factorial(N,F):-%Variables de entrada y salida respectivamente
( N>0,
( N1 is N-1, %decremento
factorial(N1,F1),%Primera variable entrada, la segunda salida
F is N*F1 % valores que va a tomar F
);
write('N debe ser mayor a 0')

).:
Resultado

?- factorial(5,V).
V = 120 .

Ejercicio 3. amiga. Defina una BH con el functor amiga/2. Escriba una función
?- factorial(2,V).
recursiva que encuentre a mis amigas, sabiendo que las amigas de mis amigas
son misV=2amigas.
amig(io,victoria). %unica amiga(solo victoria)
amig(victoria,dani). %amigas de victoria
amig(victoria,jessica). %amigas de victoria
amig(victoria,alma). %amigas de victoria
amig(osmara,lala). %amigas de Osmara
amig(osmara,megan). %amigas de Osmara
amig(osmara,windy). %amigas de Osmara

amigas(X,Y):-amig(X,Y).%para encontrar mi amiga(victoria)

amigas(X,Y):-amig(X,Z),%para encontrar las amigas de victoria


amig(Z,Y).
amigas(X,Y):-amig(X,Z1),%para encontrar las amigas de osmara
amig(Z1,Z2),
amig(Z2,Y).
Resultado:

?- amigas(io,X).
X = victoria ;
X = dani ;
X = jessica ;
X = alma ;

5. Ejercicio 4. Mis funciones. Encuentre al menos 2 funciones propias de


Prolog para manejo de listas (append, length, last, sum_list, member, last) y
escribe TUS PROPIAS funciones recursivas. Recuerda documentar % y
usar nombres de variables ilustrativos.
6. Pruebe sus funciones. Tome evidencias de al menos dos corridas de cada
función diseñada.

FUNCIÓN Mostrar_Ultimo (Last).


FUNCIÓN Longitud (Lenght).

También podría gustarte