Vous êtes sur la page 1sur 5

UNIVERSIDAD NACIONAL DE SAN CRISTOBAL DE HUAMANGA

FACULTAD DE INGENIERA DE MINAS, GEOLOGA Y CIVIL


ESCUELA DE FORMACIN PROFESIONAL DE
INGENIERA DE SISTEMAS

PRIMER INFORME
PROCEDIMIENTO DEL
METODOS SOBRE

CASO RECURSIVO DE LOS


LISTAS TRATADOS EN

CLASE
CURSO
GRUPO
PROFESOR
ALUMNO

: SISTEMAS EXPERTOS
: VIERNES 2-4 PM
: Ing Eloy VILA
: AGUILAR OZEJO, Anthony

AYACUCHO 2016

PER

BUSCAR ELEMENTO DE UNA LISTA.


El siguiente cdigo es para saber si un elemento se encuentra dentro de una lista.
Cdigo:
pertenece([X|R],X). %Caso base.
pertenece([X|R],Y):-elemento(R,Y).
Consulta:
:?-elemento([a,b,c,d],c).

True
ANLISIS DEL EJEMPLO ANTERIOR.
Nivel 1.- X=a, R=[b,c,d], Y=c
pertenece([X|R],X). Aqu dira que si, si Y fuera igual a a o sea el primer
elemento.
pertenece([X|R],Y):-pertence(R,Y). Todo coincide as que entra al siguiente
nivel.

Nivel 2.- X=b, R=[c,d], Y=c


pertenece([X|R],X). No.
pertenece([X|R],Y):-elemento(R,Y). Todo coincide as que entra al
siguiente nivel.

Nivel 3.- X=c, R=[d], Y=c


pertenece([X|R],X).
X con X, si. R con R, si. X con X, si, puesto que X (el primer
elemento de la lista coincide con el elemento que se busca).
Por lo tanto la consola dir que si.

CONCATENAR.
Concatenar no es ms que unir dos elementos o listas. Lo cual se podra decir que es
unir 2 listas, pues una lista puede contener solo un elemento. De esto concluimos que
concatenar es unir la lista L1 y L2 en una lista L3.
Cdigo:
concatenar([],L,L). %Caso base.
concatenar([X|L1],L2,[X|L3]):-concatenar(L1,L2,L3).
Consulta:

:?-concatenar([a,b,c,d,e],[1,2,3],R).
R=[a,b,c,d,e,1,2,3]
ANLISIS DEL EJEMPLO ANTERIOR.
concatenar([ ],L,L). No entra por que no se tiene un arreglo vaco.
concatenar([X|R],L2,[X|Z]):-concatenar(R,L2,Z). Entra al primer nivel.
Aqu lo que se hace es estar eliminando el primer elemento de la lista hasta lograr una
lista vaca para as poder entrar al caso base.
Nivel 1.- X=a, R=[b,c,d,e], L2=[1,2,3]
Nivel 2.- X=b, R=[c,d,e], L2=[1,2,3]
Nivel 3.- X=c, R=[d,e], L2=[1,2,3]
Nivel 4.- X=d, R=[e], L2=[1,2,3]
Nivel 5.- X=e, R=[ ], L2=[1,2,3]
En este nivel entrara al caso base.
Nivel 6.- L2=[1,2,3]
Aqu comenzara a regresar cerrando los niveles y as ir concatenando todos los
elementos en la lista R, terminando as con la conclusin. R=[a,b,c,d,e,1,2,3]
INVERSA DE UNA LISTA.
El inverso de (X, L) es verdadero si X es una lista y Y es el inverso de la lista X. Si
tenemos L=[a,b,c], su inverso es Li=[c,b,a].
Cdigo:
inversa([],[]).%Caso base.
inversa([H|T],L):-inversa(T,R),concatenar(R,[H],L).
Consulta:

:?-inversa([a,b,c],L). L=[c,b,a].

ANLISIS DEL EJEMPLO ANTERIOR.


Nivel 1.- X=a, R=[b,c], inversa([b,c],Z)

Nivel 2.- X=b, R=[c], inversa([c],Z)

Nivel 3.- X=c, R=[ ], inversa([ ],Z)


Aqu entrara al caso base y regresndose para entrar a la segunda accin que es
conc(Z,[X],E) que estar concatenando primero c, luego b y al final a.

ELIMINAR UN ELEMENTO DE UNA LISTA.


Este mtodo servir para cualquier elemento de una lista, el elemento a eliminar
tiene que ser dado por consola.
Cdigo:
elimina(X,[X|T],T). %Caso base.
elimina(X,[H|T],[H|T1]):- elimina(X,T,T1).
Consulta:

?- elimina(d,[a,b,c,d],X).
ANLISIS DEL EJEMPLO ANTERIOR.
Nivel 1.- C=a, P1=[b,c,d], elimina([b,c,d],X)

Nivel 2.- C=b, P1=[c,d], elimina([c,d],X)

Nivel 3.- C=c, P1=[d], elimina([d],X)


De regreso:
Nivel 3.- X=[a]

Nivel 2.- X=[a,b]

Nivel 1.- X=[a,b,c]

Vous aimerez peut-être aussi