Unidad I - Contenido - Organizacion - de - Archivos - y - Base - de - Datos - I
Unidad I - Contenido - Organizacion - de - Archivos - y - Base - de - Datos - I
Unidad I - Contenido - Organizacion - de - Archivos - y - Base - de - Datos - I
BASE DE DATOS I
UNIDAD 1
Introducción
El fin de esta materia es dotar al alumno de conocimientos sobre cómo organizar,
almacenar y manipular los datos. Dar a conocer a los mismos los mecanismos de
Objetivos
General
- Comprender los mecanismos de formación y gestión de estructuras de datos en
Específicos
- Optimizar la categorización de la información.
- Brindar soporte directo ante el manejo de los datos y para los dispositivos de
almacenamiento.
1.1. Introducción
El dato está muy ligado a otro concepto que necesitamos conocer que es el de "información".
información. Entonces ¿Qué es información y qué es dato? Para entender esta diferencia
Ejemplos de datos: sería el 0, 12, "sHadksdje2so", "Madrid", "lunes" y cosas así. Estos datos no
(Álvarez, 2022)
Ejemplos de información: 0 (el número de Ferrari que tengo en el garaje), 12 (los días del mes),
Los datos se convierten en información cuando les damos un contexto. El número 0 puede ser
cualquier cosa, pero ya cambia si te digo que faltan 0 días para mi cumpleaños ¿no? en ese caso
el 0 es una información, ¡sobre la cual decides que me tendrás que felicitar ya mismo! (Álvarez,
2022)
un valor que se le asigna a las cosas y se representa a través de una secuencia de símbolos,
4
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
Fuente: (Etecé,2020)
Los datos describen hechos empíricos. Para examinarlos deben ser organizados o tabulados, ya
que un dato por sí mismo no puede demostrar demasiado, sino que se debe evaluar el conjunto
1.2.1 Bit
5
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
Binary digit es una expresión inglesa que significa “dígito binario” y que da lugar al término bit,
de información que equivale a la selección entre dos alternativas que tienen el mismo grado de
El bit, en otras palabras, es un dígito que forma parte del sistema binario. A diferencia del
sistema decimal, que utiliza diez dígitos (0, 1, 2, 3, 4, 5, 6, 7, 8 y 9), el sistema binario apela a
sólo dos (0 y 1). Un bit, por lo tanto, puede representar a uno de estos dos valores (0 ó 1).
(Porto, 2011)
6
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
EL BIT EN LA INFORMÁTICA
Para la informática, el bit es la unidad más pequeña de información. Permite representar dos
Si un bit nos permite representar dos valores (0 y 1), dos bits nos posibilitan codificar cuatro
combinaciones: 0 0, 0 1, 1 0 y 1 1. Cada una de estas cuatro combinaciones, por su parte,
Esto significa que cuando, haciendo referencia a dos dispositivos digitales, se representan con
dos valores como es el caso del 0 0 significa que los dos están apagados mientras que si la
La tercera representación posible es la 1 1 con la que entenderíamos a la perfección que los dos
8
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
1.2.2 Byte
generalmente estipulado en 8. Es decir: 8 bits equivalen a un byte, pero dicha cantidad puede
alterarse, así que un byte es equivalente en realidad a n bits ordenados. (Etecé, 2021)
9
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
también su uso a partir de que era la cantidad mínima de datos que podían alimentarse a un
sistema por vez (la cantidad mínima que podía “morder”). (Etecé, 2021)
sistemas comerciales de computación de hoy en día, es decir: un byte equivale a una letra, por lo
que un párrafo entero podrá superar los 100 B, y un texto brevísimo alcanzará la unidad
A partir de entonces se inicia toda una escala de medida de cantidad de información digital, de
1.2.3 Campos
representa un tipo de dato estructurado, en el que cada uno de sus componentes se denomina
campo. Los campos de un registro pueden ser todos de diferentes tipos de datos. Por tanto,
también podrán ser registros o arreglos. Cada campo se identifica con un nombre único, el
identificador de campo. Otra diferencia importante con los arreglos es que no es necesario
1.2.4 Registros
De acuerdo con lo estudiado en las secciones previas, los arreglos son estructuras de datos muy
útiles para almacenar una colección de datos, todos del mismo tipo. Sin embargo, en la práctica,
11
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
a veces se necesitan estructuras que permitan almacenar datos de distintos tipos que sean
manipulados como un único dato. Para ilustrar este problema se incluye el siguiente ejemplo.
(Cairo, 2006).
o Edad (entero)
o Sexo (carácter)
o Antigüedad (entero)
Si se quisiera almacenar estos datos no sería, posible usar un arreglo, ya que sus componentes
deben ser todos del mismo tipo. La estructura que puede guardar esta información de manera
representa un tipo de dato estructurado, en el que cada uno de sus componentes se denomina
campo. Los campos de un registro pueden ser todos de diferentes tipos de datos. Por tanto,
también podrán ser registros o arreglos. Cada campo se identifica con un nombre único, el
identificador de campo. Otra diferencia importante con los arreglos es que no es necesario
12
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
1.2.5 Archivos
13
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
Cada archivo posee una identificación única o nombre, la cual puede ser modificada o asignada
a voluntad del usuario o del programador, y una extensión que determina qué tipo de archivo es
informática más pequeña que existe) y que se ordenan en registros o líneas, siendo
que existen numerosas estructuras de archivo, más simples y más complejas, que están más o
(Etecé, 2021)
Los archivos pueden tener numerosas funciones. Desde simplemente contener información de
manera ordenada, como los archivos de texto, y permitir el acceso a ella por parte
acciones (y de otros archivos) que tienen como resultado una acción concreta. (Etecé, 2021)
14
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
15
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
pertenecen a una aplicación o programa de los que pertenecen a otro. Las carpetas no son más
mismo tiempo permita una interfaz sencilla con el usuario, ya que el tránsito de algunos
archivos entre dos soportes (digamos: un disco duro y un pendrive) puede ser tan simple como
indicar al sistema que los movilice de la carpeta madre a la carpeta destino, sin que sufran
o Únicos por directorio. En una misma carpeta o directorio no pueden existir dos archivos
idénticos con el mismo nombre. Cuando ello ocurra alguno de los dos habrá de cambiar
levemente su nombre o en todo caso será remplazado uno por otro. (Etecé, 2021)
modificación, como es el caso de los archivos vitales del sistema informático, que no
deben sufrir cambios pues éste se desestabilizaría, lo común es que los archivos puedan
grande sea el archivo, más capacidad deberá tener el soporte donde se encuentre. (Etecé,
2021)
16
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
FORMATO DE ARCHIVO
La manera en que la información se codifica y ordena dentro de los archivos se conoce como
Esto se debe a que dentro de los archivos en un soporte cualquiera sólo puede haber bits, dado
que los sistemas informáticos deben poder convertir esa información en código binario (unos y
ceros) para poder procesarla. Así, cada tipo de archivo puede almacenarse en diversos formatos
EJEMPLOS DE ARCHIVO
inglés), .com (command, “comando”) o .bat (batch, “lote”), son aquellos que disparan las
2021)
17
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
saber cuál es el tipo de ese dato, para saber los valores posibles que podrían tener y las cosas
Por ejemplo, 2 es un número entero. Lo podré sumar, restar y hacer otras operaciones
matemáticas con otros números. "Madrid" es una cadena de caracteres, que la podré comparar
Dependiendo del lenguaje de programación puede trabajar con unos tipos u otros. Por ejemplo,
hay lenguajes que distinguen entre números enteros y números decimales y otros lenguajes de
programación en los que solamente se tiene el tipo de datos numérico, englobando tanto
Como hemos dicho, todos los datos tienen un tipo asociado con ellos. Un dato puede ser un
simple carácter, tal como "x", una cadena como "hola", un valor entero tal como 35 o un valor
numérico con coma flotante como "0.55". En todo caso, el tipo de dato nos indica el conjunto de
valores que podría llegar a tomar una variable de un tipo en particular. (Álvarez, 2022)
siempre presente, los tipos de datos simples y los tipos de datos compuestos. (Álvarez, 2022)
18
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
Los tipos de datos simples, también llamados tipos de datos primitivos o tipos de datos básicos,
son aquellos que contienen un elemento único de un tipo de datos particular y no se pueden
Aquí tienes una lista de tipos de datos simples comunes en la mayoría de los lenguajes de
manejará:
o Numérico
o Número Entero
o Carácter
o Cadena de caracteres
De entre todos los tipos de datos mencionados en el listado anterior, que puede ampliar o
reducir su número dependiendo del lenguaje, los más comunes son los siguientes:
19
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
Los datos de tipo numérico permiten realizar operaciones aritméticas como la suma,
o Datos lógicos: Son aquellos que solo pueden tener dos valores: cierto (true) o falso
(false). Llamamos a estos tipos de datos "booleanos" por la palabra en inglés "Boolean".
Este tipo de datos se da muchas veces cuando se producen comparaciones entre valores
(Álvarez, 2022)
o Datos e tipo cadena (string): Los datos de tipo cadena, también llamados "string" o datos
alfanuméricos consisten en una secuencia de caracteres, ya sean números, letras o signos
diversos que aparecen en el teclado. Este tipo de datos es muy común en las aplicaciones
ya que nos permiten guardar cosas como nombres, direcciones, emails... Los valores de
este tipo de datos se representan generalmente encerrado entre comillas. Ya depende del
lenguaje particular si se usan comillas simples, dobles o es posible usar ambas. (Álvarez,
2022)
Existen más clasificaciones que podemos mencionar, aunque no son tan comunes. Por ejemplo,
dentro de los datos básicos podemos encontrar datos estáticos y derivados. Los estáticos son los
datos que manejamos generalmente, como los mencionados en la lista anterior. Cómo dato
derivado nos encontramos con los punteros que hoy en día no se utilizan casi, a no ser que se
Luego tenemos los tipos de datos compuestos, que también se denominan tipos de datos
o Array
o Estructuras
o Objetos
Estos tipos de datos compuestos también dependen del lenguaje de programación que estemos
utilizando. Depende del lenguaje que implemente unos u otros tipos de datos complejos.
(Álvarez, 2022)
CONSTANTES Y VARIABLES
También muy asociados al concepto de tipo de datos encontramos otro como es el de variable, o
constante. Hablaremos con más detalle de ellas, pero de momento podemos adelantar que los
(Álvarez, 2022)
Se define como variable a una posición de memoria referenciada por un identificador donde se
21
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
Se define como constante a un valor que no se modifica a lo largo de toda la ejecución del
IDENTIFICADORES
Los identificadores sirven para etiquetar y referenciar en el código a los datos de un programa
Dicho de otro modo, toda variable o constante recibe un identificador a la hora de declararse. A
través de ese identificador podemos referenciarla cuando queramos usar el dato que lleva
Técnicamente el identificador es una secuencia de caracteres que sirve para identificar una
identificadores son los que nos permiten acceder a su contenido. (Álvarez, 2022)
Ejemplos de identificadores:
o Nombre
o Operando
o Num_horas
o Calif2
No es posible llamar a las variables o constantes como nos da la gana. En cambio, cada lenguaje
de programación permite crear identificadores con unas reglas determinadas. No obstante, hay
22
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
o Debe contener letras, dígitos y caracteres como la subrayado (guión bajo "_").
o La longitud de identificadores puede ser de varios caracteres. Aquí cada lenguaje tiene
sus límites, pero son generalmente bastante generosos.
Nosotros podemos escoger cualquier nombre para las variables y constantes, pero es importante
que los nombres que hayamos elegido sean buenos. (Álvarez, 2022)
o El nombre del identificador debe dar una idea del significado del valor que contiene
o Si se usan varias palabras se pueden separar por guión bajo, como "factura_original".
Pero también podemos usar la notación de camel case que consiste en poner mayúscula
o Ten cuidado con las mayúsculas y minúsculas, porque la mayoría de los lenguajes las
23
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
tienen en cuenta. No es lo mismo una variable que se llame "ALTURA" que "altura" o
"Altura".
o Sé consistente, si usas una manera de nombrar las variables, usa siempre la misma en
todo el programa
También queremos hablar ahora de una de las características que más definen a los lenguajes de
programación, que es su capacidad para aceptar distintos tipos de datos en una variable, o fijar
el tipo de datos de la variable de manera que perdure a lo largo del tiempo. (Álvarez, 2022)
o Tipado estático: Son lenguajes donde se fija el tipo de datos de una variable en el
momento de su creación, no pudiendo cambiar el tipo de datos de esa variable a lo largo
o Tipado dinámico: Es una característica de los lenguajes que permiten que las variables
puedan contener cualquier tipo de datos y éste tipo pueda cambiar a lo largo del tiempo.
(Álvarez, 2022)
Lenguajes con tipado estático tenemos a Java, C#, C. Lenguajes con tipado dinámico tenemos a
lineales
Las estructuras lineales de datos se caracterizan porque sus elementos están ubicados uno al
lado del otro relacionados en forma lineal. Cada elemento de la estructura puede estar
conformado por uno o varios subelementos o campos que pueden pertenecer a cualquier tipo de
dato. (Martínez, 2021)
1.4.1 Introducción
o Listas enlazadas
o Pilas
o Colas
LISTAS ENLAZADAS
Estas listas, en la estructura de datos, se confeccionan con elementos que están ubicados uno
tras otro en secuencia, donde cada elemento se conecta con el siguiente a través de un enlace
(link) que contiene la posición del siguiente elemento. Sus operaciones dependen de la
25
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
PILAS
La pila, en una estructura de datos, hace referencia a un tipo especial de lista lineal en la que la
Es un elemento que encuentra varias comparaciones con situaciones de la vida real, como lo es
ordenar una pila de libros. Esto se debe a su mecanismo llamado LIFO (last-in, first-out, último
en entrar, primero en salir), en el cual el último elemento que se pone en la pila es el primero
Los elementos se incorporan solo por un extremo que, en este caso, sería la cima de la pila.
Un ejemplo de método LIFO que se da en la vida real, puede ser cuando intentamos apilar
libros, ropa o lo que sea, siempre agregamos objetos por encima y si necesitamos sacar alguno,
COLAS
¿Qué es una cola en una estructura de datos? Podemos decir que son otro tipo de estructura
este caso, las eliminaciones se realizan por el inicio de la fila, en tanto que las inserciones se
27
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
De este modo, la diferencia con las pilas está en el modo en que ingresan y salen los datos. La
utilidad de las colas yace en almacenar datos que necesitan ser procesados según el orden de
Aquí también hay varias analogías con la vida real. Pongamos como ejemplo la cola de un
supermercado en la que el primer elemento que llega (cliente) es el primero en salir al ser
28
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
1.4.2 Punteros
Un puntero no es más que una variable, en la cual se almacena una dirección de memoria. Esto
parece muy simple, pero luego da muchos quebraderos de cabeza. Al ser una dirección de
memoria, le podemos decir a un puntero que en ese lugar donde apunta queremos almacenar un
Para realizar una explicación muy sencilla, vamos a decir que un puntero es como un buzón de
correos y nuestra memoria RAM, es similar a una comunidad de vecinos donde hay muchos
buzones. Además, en esta comunidad en lugar de tener el nombre puesto en el buzón, cada uno
29
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
Como se puede ver en la imagen, hay muchos buzones (zonas de memoria), pero no todas las
podemos usar, ya que hay buzones que son nuestros y otros que son de otros vecinos (otros
El buzón b5 tiene un papel con el número 23 escrito (en esa posición identificada como b5 está
Una vez que ya sabemos que es un puntero, una variable cuyo valor es una dirección de
Imaginamos que el cartero sabiendo que hay dos buzones nuestros, decide introducir un paquete
Pero se da cuenta de que lo introdujo en el buzón que no era, entonces se le ocurre dejarnos en
el buzón correcto (b1), un papel donde pone “tu paquete está en b5“. (Durán, 2021)
La manera de obtener el valor es bien sencilla, nosotros abriríamos b1, veríamos que lo que hay
30
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
dentro es el papel y entonces diríamos, para alcanzar el valor, tengo que ir a b5 y obtener su
En la dirección de memoria 0x67 tenemos almacenado un 5. Podemos decir que la variable cuya
este caso tenemos un puntero a entero, ya que tenemos en 0x75 almacenada la dirección de
De igual manera, en la dirección 0x88 tenemos almacenado otra dirección de memoria, pero en
entero sino la de un puntero a entero. Esto da como resultado que tenemos un puntero a puntero
31
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
operaciones de manera más eficiente al trabajar con direcciones de memoria. Por ejemplo, si
tuviéramos que intercambiar el valor de dos cadenas de texto de 200bytes cada una, es mucho
más eficiente cambiar los punteros a cada una de las cadenas (2 bytes, uno por puntero), que
copiar el contenido. El tener que gestionar manualmente estos punteros, quizás hacen de C
1.4.3. Listas
una secuencia ordenada de valores, donde el mismo valor puede ocurrir más de una vez. Un
una secuencia finita. Las listas son un ejemplo básico de contenedores, cuando contienen otros
valores. Si el mismo valor se repite varias veces, cada ocurrencia está considerada un elemento
Una simple estructura de lista enlazada, implementando una lista con 3 elementos enteros.
(Durán, 2021)
sintaxis especiales y semánticas para listas y operaciones de lista. Una lista a menudo puede ser
32
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
los array (vectores), en tal caso es más adecuado describirlas como array. En programación
orientada a objetos las listas son normalmente proporcionadas como instancias de una clase
"Lista" genérica, y recorridas por iteradores separados. Los tipo de datos de lista son usualmente
dato pueden ser más apropiadas para algunas aplicaciones. En algunos contextos, como en
programación en Lisp, el término lista se puede referir específicamente a una lista enlazada más
1.4.4. Pilas
Una pila representa una estructura lineal de datos en la que se puede agregar o quitar elementos
únicamente por uno de los dos extremos. En consecuencia, los elementos de una pila se
eliminan en orden inverso al que se insertaron; es decir, el último elemento que se mete en la
pila es el primero que se saca. Debido a esta característica, se le conoce como estructura LIFO
Existen numerosos casos prácticos en los que se utiliza el concepto de pila; por ejemplo, una
pila de platos, una pila de latas en un supermercado, una pila de libros que se exhiben en una
librería, etcétera. En la figura 3.1 se observa una pila de platos. Es de suponer que si el cocinero
necesita un plato limpio, tomará el que está encima de todos, que es el último que se colocó en
Las pilas son estructuras de datos lineales, como los arreglos, ya que los componentes ocupan
lugares sucesivos en la estructura y cada uno de ellos tiene un único sucesor y predecesor, con
Una pila se define formalmente como una colección de datos a los cuales se puede acceder
33
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
1.4.5. Colas
Una cola constituye una estructura lineal de datos en la que los nuevos elementos se introducen
por un extremo y los ya existentes se eliminan por el otro. Es importante señalar que los
primer elemento que se introduce en la estructura será el que se eliminará en primer orden.
Debido a esta característica, las colas también reciben el nombre de estructuras FIFO (First-In,
Existen numerosos casos de la vida real en los cuales se usa este concepto. Por ejemplo, la cola
de los bancos en las que los clientes esperan para ser atendidos -;.. primera persona de la cola
será la primera en recibir el servicio-, la cola de los niño. que esperan a veces pacientemente
para subir a un juego mecánico, las colas de 1 vehículos esperando la luz verde del semáforo,
las colas para entrar a un cine, teatro' estadio de fútbol, etcétera. (Cairo, 2006)
lineales
Las estructuras de datos no lineales también son conocidas por el nombre de multienlazadas. En
ellas, cada elemento puede estar enlazado a cualquier otro componente. Esto quiere decir que
34
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
o Árboles
o Grafos
1.5.1 Introducción
Los árboles corresponden a una de las subclases de grafos de uso más amplio, particularmente
en computación.
Los grafos se pueden clasificar en dos grupos: dirigidos y no dirigidos. Los árboles forman parte
de los no dirigidos.
Sirven para organizar y relacionar datos en una base de datos, por ejemplo. Esto permite
diversas bibliotecas.
Otro ejemplo de la utilización de árboles son los diccionarios. A partir de una palabra, se realiza
una búsqueda en el árbol para saber si está incluida en el conjunto, y si existe, se obtienen sus
1.5.2. Arboles
35
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
datos con una relación jerárquica en la que cada elemento tiene un único antecesor y puede tener
o Árbol general: que es un árbol donde cada elemento puede tener un número ilimitado de
subárboles. (Martínez, 2021)
o Árboles binarios: que son una estructura de datos homogénea, dinámica y no lineal en
donde a cada elemento le pueden seguir como máximo dos nodos.
Equilibrados: las alturas de los dos subárboles de cada uno de los nodos tienen
como máximo una diferencia de una unidad.
36
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
1.5.3. Grafos
37
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
Los grafos, en las estructura de datos, son otra estructura no lineal, así como los árboles.
Los puntos se llaman nodos o vértices del grafo y las líneas se llaman aristas o arcos”.
(Martínez, 2021)
Si nos preguntamos ¿qué es un grafo y para qué sirve? Diremos que es una estructura
matemática que permite modelar problemas de la vida cotidiana, mediante una representación
gráfica, formada por nodos, que muestra las relaciones que hay entre los distintos componentes.
(Martínez, 2021)
Podemos poner el ejemplo de una red social donde se establecen relaciones entre las personas
que a su vez generan relaciones entre ellas interactuando, conformando así un grafo. (Martínez,
2021)
38
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
Llegados a este punto, ya debes tener una idea concreta de qué es una estructura de datos y
cómo funciona para poder aplicarla en tus proyectos. Recuerda que son un medio muy útil que
Referencias Bibliográficas
1. Bibliografía Básica
- Senn J.A., “Análisis y diseño de sistemas de información”
39
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I - BIBLIOGRAFÍA
ORGANIZACIÓN DE ARCHIVOS Y BASE DE DATOS I – UNIDAD 1
2. Bibliografía Complementaria
- Gary W. Hansen, James V. Hansen, Diseño
ISBN: 9788469301463
40