martes, 9 de junio de 2015

Listas en Prolog

Una lista en Prolog (como en casi cualquier lenguaje que use listas) se divide en dos partes: (1) Cabeza. Es el primer elemento de la lista. Puede ser un ´atomo o una lista, pero a fin de cuentas es el primer elemento de la lista original. (2) Cola. Es el resto de los elementos de una lista, es de nuevo una lista. Ejemplos: (1) L=[perro, gato, raton, queso] (a) cabeza= perro (b) cola=[gato, raton, queso] (2) L=[[perro, gato], [raton, queso]] (a) cabeza=[perro, gato] (b) cola=[[raton, queso]] (3) L=[perro] (a) cabeza=perro (b) cola=[] la lista vac´ıa (4) L=[] (a) cabeza= NO (b) cola=[] la lista vac´ıa



En esta secci´on se ver´a el uso de las listas para determinar la existencia de un elemento en la lista e incluso el uso de recursividad. En primer lugar, la existencia de un elemento en la lista se puede verificaci con una regla como: pertenece(E,L):-L=[E| ]. Que dice que el elemento E pertenece a la lista L si L se puede hacer teniendo una lista cuya cabeza sea E y cualquier cola, incluso la lista vac´ıa. Pero esto solamente nos asegura la pertenencia de la cabeza de la lista, no si un elemento est´a dentro de ella. Para esto se necesita una segunda cl´ausula recursiva: pertenece(E,[ |T]):-pertenece(E,T). Es decir “un elemento E pertenece a una lista compuesta de cualquier cabeza y una cola T, si ese mismo elemento E es la cabeza del resto de la lista T”. As´ı se tiene el siguiente programa en Prolog que verifica la pertenencia de un elemento en una lista: pertenece(E,L):-L=[E|_]. pertenece(E,[_|T]):-pertenece(E,T). :-pertenece(E,[a,b,c,d,e].)

 

No hay comentarios.:

Publicar un comentario