TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto...

35
LOGO TIPO DE DATO ABSTRACTO (TDA) Ing. Eduard Antonio Lozano Córdoba Nota: Toda la información fue copiada de: Libros físicos e Internet

Transcript of TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto...

Page 1: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

TIPO DE DATO

ABSTRACTO (TDA)Ing. Eduard Antonio Lozano Córdoba

Nota: Toda la información fue copiada de:

Libros físicos e Internet

Page 2: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

Actividad Extra Clases

#include <stdio.h>

#include <conio.h>

int binario(int num);

int n;

void main()

{

clrscr();

printf("Dame un numero:");

scanf("%d",&n);

binario(n);

getch();

}

int binario(int num)

{

if (num == 0)

return 1;

else { binario(num/2);

}

printf("%d",num%2);

}

www.themegallery.com

hola, yo no soy el autor de este programa, pero lo puedo explicar.

Bueno pues te pide un numero enteroLo guarda en Variable nEl valor n lo asigna a la funcion binarioentoncescon n en la mano va a la funcion y dicees n igual a cero ?si es afirmativo regresa el numero "1"sinoese numero vuelve a asignarlo a la funcion binarioy comprueba si es cero o no (sino es ya sabes que hacer)escribe siempre que pases n con la funcion binario el residuo de n entre 2

Page 3: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

Page 4: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

Un tipo de dato se define como:

(1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo.

(2) Un conjunto de operaciones, definidas sobre dichos valores, que permiten operar adecuadamente con ellos.

En la mayoría de los lenguajes de programación esnecesario realizar la declaración de tipos, esto es,asignar un tipo de dato a cada una de las variables (aveces también las constantes) del programa.

Clasificación del conjunto de datos

• Datos elementales.

• Datos Estructurados o Estructuras de Datos.

www.themegallery.com

Page 5: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

INTRODUCCIÓN

En general conocemos los tipos de datos

básicos de los lenguajes, a saber:

Entero : int

Real : real

Boolean : boolean

Carácter : char

Estos varían de un lenguaje a otro.

Page 6: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

DEFINICIÓN:

Un tipo de dato abstracto (TDA) es un modelo matemático,junto con varias operaciones definidas sobre ese modelo.

Los TDA se representan en función de los tipos de datos y losoperadores manejados por ese lenguaje.

Para representar los TDA se usan estructuras de datos queestán constituidas por conjuntos de variables (a veces dediferente tipo).

1. Memoria

2. Variable

3. Nombre

4. Valor

5. Tipo

Page 7: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

VALOR

Es un elemento de algún conjunto con un tipo.

3 es un valor del conjunto Z asociado con el tipo

integer.

TRUE es un valor de conjunto {T, F} asociado

con el tipo boolean.

Page 8: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

VARIABLE

Es un componente de una memoria que tiene un

nombre y un tipo asociado. Una variable contiene

valores de este tipo.

Reglas para definición de variables

· Pueden tener hasta 40 caracteres.

· Debe empezar obligatoriamente con una letra (a-z /

A-Z), el resto de los dígitos pueden ser números.

· No pueden contener espacios en blanco, se pueden

incluir caracteres especiales como el guión o el punto.

Page 9: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

MEMORIA

Es a menudo descrita como una colección de cajas con datos variables que contienen valores.

Una forma intuitiva puede ser el mapeo memoria: nombre → valor

int x, y;

{

x = 3;

y = x + 2;

}

Decimos que int es un tipo del lenguaje y que x e y son de tipo int. Es decir que contienen valores de tipo int.

El número 3 es almacenado.

La expresión x + 2 evalúa un valor entero.

Dado que x e y contienen valores enteros matemáticos, entonces ciertas operaciones matemáticas son permitidas: + y -. Para otros tipos como reales, void, boolean aplica lo mismo.

Page 10: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

DATOS DE TIPO ENTERO

Este tipo representa el conjunto de los números

enteros. Dentro del ordenador los enteros se van

a representar como números en binario o en

base dos (utilizando sólo ceros y unos). Para su

almacenamiento se utilizarán un número fijo de

bits, que dependiendo de su número nos darán

distintos tipos de dato entero. Por ejemplo el

número 35)10 = 100011)2 Para pasar de un

número en decimal a cualquier

Page 11: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

DATOS DE TIPO REAL

Este tipo es una representación del conjunto de númerosreales. La transformación que se realiza consiste,básicamente, en expresar el número de la forma N = m * Be,donde N es el número real a representar, B es la baseutilizada (prefijada para cada computadora), e es el exponentedel número y m es la "mantisa". Dentro de la computadora, elnúmero se almacena uniendo el signo, el exponente y lamantisa, cada uno con un número de bits prefijado. Aspectosa tener en cuenta:

- el número de bits utilizado para almacenar la mantisa va a determinar la precisión de la representación. La representación de los reales no es unívoca, ya que lo que verdaderamente se representan son intervalos de la recta real. Por ejemplo, si tenemos 3 decimales de precisión, tanto el número 15.3244 como el 15.3243 se representarán como 15.324.

Page 12: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

DATOS DE TIPO LÓGICO

Este tipo de datos representan valores de tipo lógicoo booleano. Estos datos pueden tomar los valoresverdadero (uno) o falso (cero). Sobre los valoreslógicos actúan los operadores lógicos: AND, OR,NOT, NAND, NOR y XOR. En la siguiente tablapodemos ver todos los posibles resultados de losdistintos operadores lógicos. (V = verdad, F = falso).

ejemplos: - 5 < 6, con resultado V(erdadero).

- 10.5 = 10.58, con resultado F(also).

- "B" ≥ "F", con resultado F.

- (5 + 7) ≠ (2 - 6), con resultado V.

Page 13: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGOwww.themegallery.com

Page 14: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

TIPO DE DATOS CARÁCTER

Los datos de tipo carácter representan

elementos individuales de conjuntos finitos y

ordenados de caracteres. Cada computadora

puede representar un conjunto de caracteres

distintos, siendo el más extendido el ASCII.

La única operación interna que tiene este tipo es

la asignación de un carácter a una variable.

Page 15: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

TIPO DE DATOS ENUMERADO

Los datos de este tipo se definen explícitamente dando un conjunto finito de valores. La ventaja del uso de estos tipos de datos está en poder enumerar de forma más real los posibles valores que pueda tomar una variable. El siguiente ejemplo define el tipo de dato DiasSemana que toma todos los días de la semana. De esta forma evitamos tener que pensar en otra representación menos intuitiva como sería identificar el lunes con un cero, el martes con un uno, etc.

DiasSemana = (lunes, martes, miércoles, jueves, viernes, sábado, domingo)

Page 16: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

TIPO DE DATOS SUBRANGO

Este tipo se define a partir del tipo entero,carácter. Un dato de tipo subrango puede tomardeterminados valores del tipo original, a partirdel cual se ha definido el subrango (entre unmínimo y un máximo). Con los datos del tiposubrango se pueden realizar las mismasoperaciones definidas para el tipo original.ejemplo: - 0..9

- teniendo en cuenta el ejemplo anterior podemos definir el subrango lunes...Viernes

- "a".."z".

Page 17: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

Tipos de datos estándar de C y C++

Todos los programas gestionan algunos tipos de información que normalmente se pueden representar utilizando

uno de los ocho (8) tipos de datos básicos de C y C++: texto o char, valores enteros o int, valores de coma flotante o

flota, valores en como flotante de doble precisión o double (long double), enumerados o enum, sin valor o void,

punteros y booleanos.

1. Texto (tipo de dato char) está constituido por caracteres simples, como a, Z, ¿, 3 y cadenas, como “Esto es una

prueba” (normalmente, de 8 bits o un byte por carácter, con un rango de 0 a 255).

2. Los valores enteros (tipo de dato int) son aquellos números que se aprendieron a contar (1, 4, -2, 1354);

normalmente, tienen un tamaño de 16 bits, 2 bytes o una palabra, con rango de -32768 a 32767. En Windows 98 y

Windows NT, los valores enteros tienen un tamaño de 32 bits con un rango de -2147483648 a 2147483647.

3. Los valores en coma flotante (tipo de dato float) son números que tienen una parte fraccional, como por ejemplo pi

(3,14159), y exponentes (7,5631021). También se conocen como números reales (normalmente, son de 32 bits, 4 bytes

o 2 palabras, con un rango de +/-3,4E-38 a 3,4E+38).

4. Los valores en coma flotante de doble precisión (tipo de dato double) tienen un rango superior (normalmente de 64

bits, 8 bytes ó 4 palabras, con un rango de 1, 7E-308 a 1, 7E+308). Los valores en coma flotante long double

(doble precisión largos) son incluso más precisos (normalmente, tamaño de 80 bits ó 5 palabras, con un rango de

+/-1,18E-4932 a 1,18E-4932).

5. los tipos de datos enumerados (tipo de dato enum) permiten al usuario definir tipos de datos.

6. El tipo void se utiliza para especificar valores que ocupan cero bits y no tienen valor (este tipo también se puede

utilizar para la creación de punteros genéricos.

7. El tipo de dato puntero no contiene información en el mismo sentido que el resto de los tipos de datos; en su lugar,

cada puntero contiene la dirección de la posición de memoria que almacena el dato actual.

8. El tipo de dato bool, al que se le puede asignar las constantes true (verdadero) y false (falso).

www.themegallery.com

Page 18: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

LAS ESTRUCTURAS DE DATOS

Llamamos estructura de datos o tipo de datoestructurado a los tipos de datos construidos a partirde otros tipos de datos.

ejemplos:

- tipo de datos complejo formado por una pareja de datos reales.

- tipo de datos fecha compuesto por tres enteros.

- tipo de datos dirección formado por cadenas de caracteres

(calle, población,...), y por enteros y caracteres

(portal, piso y letra, ...).

Page 19: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

CLASIFICACIÓN.

Pueden realizarse diferentes clasificaciones.

Atendiendo al tipo de los datos que la componen

podemos distinguir entre estructuras de datos:

• homogéneas, cuando todos los datos

elementales que la forman son del mismo tipo.

• heterogéneas, en caso contrario.

www.themegallery.com

Page 20: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

Si en lo que nos fijamos es en la forma en que se almacenan y se gestionan en memoria las estructuras de datos, podemos distinguir entre las:

• estáticas si poseen un número fijo de elementos. Los ejemplosmás típicos son los arrays y registros. Su mayor desventaja es lanecesidad de tener que definir el número máximo de elementosque podrá tener la estructura. Su mayor ventaja es la rapidez deacceso a cada elemento individual de la estructura.

• dinámicas si el número de elementos que contienen puedevariar durante la ejecución del programa. Su principalinconveniente es la lentitud en el acceso, ya que normalmente serealiza de forma secuencial. La ventaja es sin embargoimportante, la posibilidad de aumentar o disminuir en tiempo deejecución el número de elementos que componen la estructura.

www.themegallery.com

Page 21: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

Por la forma de acceder a la estructura de datos encontramos:

• acceso por nombre, es decir, para acceder a cadaelemento de la estructura de datos es necesario conocer elnombre (p. e. los registros).

• acceso por posición, donde para acceder a un elementode la E. D. o bien se conoce su posición, o bien el accesose reduce a ciertos elementos (el primero, el último, etc.).Ejemplos pueden ser las estructuras matriciales (matrices,vectores, etc.), las Pilas y las Colas.

• acceso por clave, en la que para acceder a undeterminado elemento es preciso conocer únicamente elcontenido de uno de sus campos, normalmente llamadoclave. Ejemplos son todas las estructuras ordenadas por sucontenido, como es el caso de los árboles.

www.themegallery.com

Page 22: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

TIPOS DE ESTRUCTURAS DE

DATOS.

ARRAYS: Un array es una estructura de datos

formada por una cantidad fija de datos de un

mismo tipo, cada uno de los cuales tiene

asociado uno o más índices que determinan de

forma unívoca la posición del dato en el array.

www.themegallery.com

Page 23: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

CADENAS DE CARACTERES

Una cadena de caracteres, también conocida como"string", es una estructura de datos formada por unasecuencia de caracteres. En una variable de tipo stringse puede almacenar una frase, un nombre, unamatricula de un coche, etc.

Algunas de las operaciones más usuales que se pueden realizar sobre datos de tipo cadena

son:

- concatenación (+): forma una nueva cadena a partir de la unión de otras dos puestas una a

continuación de la otra.

Por ejemplo: “Hola” + “Colega” = “HolaColega”

www.themegallery.com

Page 24: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

- extracción de subcadena: permite formar una nueva cadena apartir de otra ya existente.

Si FRASE es una variable de tipo string que contiene la cadena"Hola Colega", entonces FRASE(6:11) es la cadena "Colega" (sesupone en este caso que las cadenas comienzan por la posiciónnúmero uno).

- comparación de cadenas: esta operación permite determinar siuna cadena es menor, igual o mayor que otra dada. El criteriopara determinar si una cadena es mayor o menor que otra es elorden alfabético, por ejemplo,

"Moto" es mayor que "Mota".

- obtención de longitud: la longitud de una cadena es un dato de tipo entero, cuyo valor es el número de caracteres que contiene dicha cadena.

www.themegallery.com

Page 25: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

REGISTRO

Un registro es una estructura de datos que englobavarios elementos (simples o estructurados) y quecontiene información relativa a un mismo ente.Cada unión informativa sobre un objeto particularse denomina registro. A cada uno de loselementos del registro se le denomina campo.Cada uno de los campos de un registro puede serde diferente naturaleza (tipo) por lo que son unejemplo claro de estructura de datos heterogénea.

Para definir un registro es necesario especificar el nombre y el tipo de cada campo.

www.themegallery.com

Page 26: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

EJEMPLO:

la ficha de un empleado en una empresa puede ver como un registro con los siguientes

campos:

- NIF (string)

- Nombre (string)

- Apellido1 (string)

- Apellido2 (string)

- N_Hijos (entero)

- NSS (string)

- Fecha_Nacimiento (fecha)

donde tipo_fecha es otro registro con los campos:

- día (subrango 1..31)

- mes (subrango 1..12)

- año (entero)

www.themegallery.com

Page 27: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

LISTAS

Una lista está formada por un número variable dedatos (elementos) de un mismo tipo (homogénea), queforman una secuencia lineal. Cada elemento, salvo elprimero, tiene un predecesor y todos los elementosmenos el último tienen un sucesor. La lista es unaestructuradinámica.

Se puede construir una lista usando una estructura dedatos formada por registros de al menos dos campos,en que uno de ellos contiene información que permitelocalizar al siguiente

www.themegallery.com

Page 28: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGOwww.themegallery.com

Page 29: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

Las operaciones más habituales son las

siguientes:

- añadir un elemento a la lista en cualquier

posición de ésta.

- eliminar un elemento de la lista de cualquier

posición.

- acceso al primer elemento de la lista.

- acceso al siguiente elemento de la lista.

- comprobar si la lista está o no vacía.

www.themegallery.com

Page 30: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

Si en una lista sólo se permite añadir (push) y

eliminar (pop) elementos por uno de los

extremos (la cima), hablamos de PILA o LIFO (

Last In, First Out). En este tipo de estructura, el

último elemento introducido, es el primero que

sale.

www.themegallery.com

Page 31: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

Si la operación de añadir (push) se realiza

siempre por un extremos de la lista y la de

eliminar por el extremo opuesto, hablamos de

una COLA o FIFO (First In, First Out). En una

COLA, el primer elemento que entra es el primer

elemento que sale. El siguiente esquema

representa una Cola:

www.themegallery.com

Page 32: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

Las diferencias básicas entre las listas y losarrays:

- la lista es una estructura de datos dinámica y,por tanto, ocupa en memoria el espacio necesariopara albergar los elementos que contiene en cadainstante.

- las listas no son direccionables, para acceder aun elemento hay que recorrer los anteriores, esdecir, en un instante dado sólo hay un elementoaccesible de forma directa.

www.themegallery.com

Page 33: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

ÁRBOLES

Un árbol es una estructura de datos formada por elementosdel mismo tipo, llamados nodos, relacionados de tal modoque el árbol puede descomponerse en:

1. un nodo llamado raíz.

2. un conjunto finito de objetos de tipo árbol llamadossubárboles del nodo raíz.

Un nodo puede ser de diferentes tipos:

Nodo hijo: aquel que depende directamente de otrosuperior en la jerarquía.

Nodo padre: aquel que posee al menos un hijo.

Nodo raíz: el único nodo en la jerarquía que no tiene padre.

Nodo hoja: aquel nodo sin hijos.

www.themegallery.com

Page 34: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGOwww.themegallery.com

Page 35: TIPO DE DATO ABSTRACTO (TDA) - · PDF fileLOGO Un tipo de dato se define como: (1) Un conjunto de valores, aquellos que puede tomar cualquier dato de dicho tipo. (2) Un conjunto de

LOGO

Utch2009.wordpress.com