5
Listas. Secuencia ordenada de elementos (items) que pueden tener cualquier longitud, las listas pueden ser vacías sino contienen elementos, y por lo general son estructuras con dos componentes: cabeza, cola. Un conjunto de elementos encerrados entre corchetes y separados por comas. Una lista de símbolos sería de la forma [elem_1, elem_2, ..., elem_N]. La lista vacía se representa con dos corchetes, [ ]. La manera más sencilla de escribir listas es enumerar sus elementos. La lista que consta de tres átomos a, b y c puede escribirse como : [ a, b, c ] También podemos especificar una secuencia inicial de elementos y una lista restante, separadas por |. La lista [a,b,c] también puede escribirse como : [a, b, c | [ ] ] [a, b | [c] ] [a, | [b, c] ] Un caso especial de esta notación es una lista con cabeza H y cola T, representada como [H | T]. La cabeza puede usarse para extraer los componentes de una lista, de manera que no se requieren operadores específicos para extraer la cabeza y la cola. La solución a la consulta : Los elementos de una lista pueden ser : - Constantes - Variables - Estructuras Operaciones con listas. Las listas se pueden usar para representar conjuntos, sin embargo, entre las listas y los conjuntos existen algunas diferencias: - el orden de los elementos en un conjunto no es relevante, mientras que en las listas si lo es. - en una listas se pueden repetir elementos; A pesar de lo anterior , la mayoría de las operaciones que se realizan en las listas son análogas a las que se efectúan en los conjuntos. Entre estas operaciones se encuentran: - verificar la pertenencia de un elemento a una lista. - concatenar listas - agregar un elemento a una lista - eliminar un elemento de una lista. FUNCIONES DEFINIDAS. VERIFICAR LA PERTENENCIA DE UNA ELEMENTO A UNA LISTA 1

Listas prolog m_c

  • Upload
    upse

  • View
    401

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Listas prolog m_c

Listas.Secuencia ordenada de elementos (items) que pueden tener cualquier longitud, las listas pueden ser vacías sino contienen elementos, y por lo general son estructuras con dos componentes: cabeza, cola.Un conjunto de elementos encerrados entre corchetes y separados por comas. Una lista de símbolos sería de la forma [elem_1, elem_2, ..., elem_N]. La lista vacía se representa con dos corchetes, [ ].La manera más sencilla de escribir listas es enumerar sus elementos. La lista que consta de tres átomos a, b y c puede escribirse como :[ a, b, c ]También podemos especificar una secuencia inicial de elementos y una lista restante, separadas por |.

La lista [a,b,c] también puede escribirse como :[a, b, c | [ ] ][a, b | [c] ][a, | [b, c] ]

Un caso especial de esta notación es una lista con cabeza H y cola T, representada como [H | T]. La cabeza puede usarse para extraer los componentes de una lista, de manera que no se requieren operadoresespecíficos para extraer la cabeza y la cola. La solución a la consulta :

Los elementos de una lista pueden ser : - Constantes - Variables - Estructuras

Operaciones con listas.Las listas se pueden usar para representar conjuntos, sin embargo, entre las listas y los conjuntos existen algunas diferencias:- el orden de los elementos en un conjunto no es relevante, mientras que en las listas si lo es.- en una listas se pueden repetir elementos;A pesar de lo anterior , la mayoría de las operaciones que se realizan en las listas son análogas a las que se efectúan en los conjuntos. Entre estas operaciones se encuentran:- verificar la pertenencia de un elemento a una lista.- concatenar listas- agregar un elemento a una lista - eliminar un elemento de una lista.

FUNCIONES DEFINIDAS.

VERIFICAR LA PERTENENCIA DE UNA ELEMENTO A UNA LISTASe desea verificar en una lista si existe un elemento específico, puede utilizarse las siguientes dos reglas.

member(X,[X|_]):-true.member(X,[_|Y]):-member(X,Y).

Concatenación de listasUnión de listas en una sola

concat([], L, L).concat( [ X | L1 ] , L2, [ X | L3 ] ) :- concat(L1, L2, L3).

1

Page 2: Listas prolog m_c

Adición de elementosPara agregar un elemento a una lista cualquiera se puede considerar que el nuevo elemento agregado a la lista se ubicará en su Cabeza, por lo tanto se puede escribir lo siguiente:

agregar( X, L, [ X | L ] ).

Eliminación de elementosLa eliminación de elementos de una lista se puede definir como:

eliminar(X, L, L1).

En este caso, X es el elemento que se desea eliminar de la lista L y L1 es la lista resultante, o sea la lista L menos el elemento X.En Prolog se escribe las siguientes expresiones:

eliminar( X, [ X | Cola ], Cola ).eliminar( X, [Y | Cola ] , [ Y | Cola1 ] ) :- eliminar(X,Cola,Cola1).

Otras operaciones con listasPrimer elementoIdentificar el primer elemento de una lista, o definido como la cabeza de la listaprimero([X|_],X).

Elementos que forman parte de la cola de la listaIdentificar los elementos diferentes al primero.restantes([_|X],X).

EjemplosUna forma de definir que un conjunto de materias pertenece a una clasificaciónciclo_basico (geografía)ciclo_basico (anatomía)ciclo_basico (historia)ciclo_basico (geometría)ciclo_basico (botánica)ciclo_superior (diseño)ciclo_superior (cálculo)ciclo_superior (literatura)ciclo_superior (taller)ciclo_superior (tecnología)

Se puede representar el mismo conocimiento aplicando listas y las instrucciones especificas

%aplicación de listas y la instrucción de pertenencia en una reglaciclo_basico(X):- member(X,[geografia, anatomia, historia, geometria, botanica]).ciclo_superior(X):-member(X,[diseno, calculo, literatura, taller, tecnologia]).

2

Page 3: Listas prolog m_c

Ejercicios

-Representar para los estudiantes del paralelo 5/1 de la carrera de informática, las características de hombre, mujer, personas que estudian, personas que trabajan, colocar a cinco estudiantes como asistentes al seminario de “Robótica”- Aquellas personas que estudian son jóvenes.- Los jóvenes que estudian están solteros.- Los jóvenes que estudian son independientes- Los estudiantes del Seminario y aquellos que trabajan están casados- Si los estudiantes estudian Redes y son independientes, pasarán Redes-Verónica es amiga de Edwin, de Sandra y de Ivonne

Según ésta base de conocimientos,

¿Quiénes son las personas que están casadas?.¿Quiénes pasarán redes?

TEMA 2: Considerando la malla curricular de la carrera de Ingeniería en Sistemas tanto en año como en semestre, represente el conocimiento en Prolog tal que se pueda luego responder a las siguientes consultas:¿Cuáles son las materias que pertenecen a las personas matriculadas en modalidad anual?¿Cuáles son las materias que pertenecen a la personas matriculadas en modalidad semestral?¿Cuáles son las materias que son consideradas "básicas", "complementarias", "de especialidad"?

TEMA 3. Especifique una lista de personas que pudieran estar registradas en las materias y determine las siguientes consultas.¿Personas registradas en las materias básicas de la malla anual?¿Personas registradas en las materias "de especialización" de la malla anual?¿Personas registradas en las materias básicas de la malla semestral?¿Personas registradas en las materias "de especialización" de la malla semestral?Malla semestral.

3

Page 4: Listas prolog m_c

Malla Anual

4