Tipos de Datos
Estructura de Datos

Un tipo de datos es la propiedad de un valor que determina su dominio (qué valores puede tomar), qué operaciones se le pueden aplicar y cómo es representado internamente por el computador.
Todos los valores que aparecen en un programa tienen un tipo.
A continuación revisaremos los tipos de datos elementales de Python. Además de éstos, existen muchos otros, y más adelante aprenderemos a crear nuestros propios tipos de datos.
TIPOS DE DATOS SIMPLES Y ESTRUCTUARADOS
A diferencia de los datos de tipo simple que sólo pueden almacenar un valor, los datos estructurados o estructuras de datos pueden recolectar varios valores simultáneamente. Se hace una primera introducción a los datos estructurados destacando en primer lugar que se les asigna una cantidad fija de memoria durante la ejecución del programa cuando se declara una variable de un determinado tipo estructurado
El primer tipo estructurado es el tipo que permite agrupar otros datos más simples de igual tipo bajo un mismo identificador. Este tipo de estructuras permiten definir vectores, matrices, tablas y estructuras multidimensionales. Turbo Pascal incorpora un tipo especial de arrais: el tipo string. Se define como una secuencia de caracteres cuya longitud puede variar entre 1 y 255. El tipo record está compuesto de elementos de diferentes tipos a cada uno de los cuales se les asocia un identificador. Finalmente se analiza el tipo estructurado set equivalente al concepto de conjunto matemático y otros tipos de datos no simples.
DATOS IMPLEMENTADOS
Los recursos de datos implementados incluyen bases de datos y su contenido, archivos de datos y su contenido, y sistemas host que contienen bases de datos y archivos de datos. Las definiciones de elemento de datos, que representan estructuras de datos complejas, son también recursos de datos implementados.
![]() |
Los recursos de datos implementados incluyen los metadatos a nivel de tabla y a nivel de columna que las herramientas de la suite de IBM InfoSphere Information Server utilizan en trabajos y análisis. Los recursos de datos implementados representan bases de datos y archivos de datos reales, a diferencia de los modelos de datos físicos, que representan diseños para almacenar datos.
REPRESETACION DE MEMORIA
El conocimiento se organiza en la memoria en forma de esquemas, estructuras de datos que representan los conceptos genéricos. Estos esquemas tienen variables, pueden encajarse uno dentro de otro, varían en sus niveles de abstracción y representan un conocimiento asociado a conceptos. Son las unidades clave de los procesos de comprensión, almacenamiento y recuperación de la información. También son necesarios para establecer inferencias, como predictores de estímulos no observados, y en el razonamiento analógico. El conocimiento subyacente para la realización de acciones lo constituyen los esquemas de acción, que son subesquemas de un esquema más complejo. Existen dos mecanismos para producir y modificar esquemas: la especialización y la generalización, y ambos pueden ser considerados como tipos de aprendizaje. Los procesos de búsqueda y activación de un esquema pueden ser conducidos por datos, o conducidos conceptualmenteLA COMPLEJIDAD EN ESPACIOS OPERATIVOS
es la administración de los archivos esto se realiza a través del sistema operativo permitiendo que los usuarios tengan acceso directo con los archivos y tengan control de ellos, así como también se puede enviar y compartir archivos con otros usuarios, brindarles seguridad y protección a estos. De modo que le permite al usuario realizar ciertas operaciones con ellos, las cuales son:
1 Puedes crear un archivo, identificándolo con un nombre y determinar el espacio de este.
Abrir el archivo, aquí se realiza distintas operaciones como su ejecución, leerlo, escribir en el.
Borrarlo de modo que puedes liberar el espacio que ocupa este archivo.
cerrar el archivo, finaliza la ejecución de este.
5 Modificarlo permite hacer cambios al archivo como cambiar su nombre.
¿Que es un archivo?
Es un conjunto ordenado de información de la misma clase o relacionados entre si, este es almacenado en cualquier parte de la computadora y es identificado mediante por un nombre.
¿Que son los directorios?
Es donde se guardan un grupo de información relacionados entre si o “archivos de datos”, en estos directorios se pueden encontrar otros directorios llamados como subcarpeta. Estos sirven para el mejoramiento organizado de los archivos.
¿Qué es un campo?
Es donde se introduce un elemento de datos básico y su valor no cambia, estos campos se utilizan para identificar algo, su longitud varia puede ser fija o variable.
¿Qué es un registro?
Son campos unidos y relacionados entre si que representan un mismo conjunto o unidad de un dato.
¿Qué es una base de datos?
Es un conjunto de datos que pertenecen a un mismo contexto y son almacenados sistemáticamente para su posterior uso.
Tipos de datos astractos
Estaba en mi habitación peleándome con la fiebre e intentando dormir, cuando recordé que otra noche de gripe hace un par de años hice un trabajo sobre los tipos abstractos de datos. Como recibí una buena calificación en él, lo dejo aquí por si le puede resultar útil a alguien. Además, recuerdo que también colgué este mismo trabajo en una antigua versión de este blog, allá por 2007.
A pesar de que estamos acostumbrados a utilizar el término abstracción dentro del contexto de la programación, la verdad es que esta palabra tiene un origen mucho más lejano. Desde siempre, el hombre se ha tenido que enfrentar a problemas muy complejos, sin embargo con el paso del tiempo hemos descubierto un buen método para enfrentarnos a ellos: la abstracción. Abstraer consiste en centrarse sólo en la parte principal y esencial de los problemas, dejando así a un lado todos los detalles insignificantes o menos importantes.
Un buen ejemplo de la capacidad humana para la abstracción es la elaboración y lectura y un mapa. Cuando dibujamos un mapa de carreteras, reflejamos en él los elementos principales, los que tienen utilidad para su interpretación, como por ejemplo las autopistas, autovías, carreteras nacionales, áreas de servicio, gasolineras, etc. Otros datos como podrían ser museos, parques o monumentos no aparecen ya que se consideran innecesarios en este tipo de mapas. La abstracción es una de las herramientas fundamentales de la mente humana, ya que nos permite dividir los problemas en partes independientes y solucionar cada una por separado.
En los primeros tiempos de la informática, los programadores se comunicaban con las máquinas en binario, lo cual resultaba ser una tarea extremadamente larga y complicada. Al cabo de un tiempo apareció el código ensamblador, cuyos nemotécnicos facilitaron notablemente el trabajo de los programadores al evitar que tuviesen que recordar las secuencias de unos y ceros que formaban cada instrucción. Estos nemotécnicos constituyeron la primera escala de abstracción de la era informática.
Unos años más tarde llegaron los lenguajes de alto nivel y con ellos las macroinstrucciones. Gracias a estos lenguajes, los programadores pudieron comenzar a escribir software genérico, es decir, podían programar sin preocuparse de la máquina sobre la que iba a correr el programa. Esto se debía a que las instrucciones de los lenguajes de alto nivel producían varias acciones en la máquina, independientemente de las arquitecturas concretas de cada una de ellas. Con este tipo de lenguajes llegaron también las sentencias de control más habituales como los bucles o sentencias if-then.
En definitiva, la complejidad iba creciendo a medida que lo hacía la abstracción. Así fueron surgiendo los procedimientos y funciones, los módulos y posteriormente los tipos abstractos de datos.
En la programación, la abstracción puede aplicarse de dos modos distintos dando lugar a la abstracción funcional y la abstracción de datos.
La abstracción funcional aparece al pensar de manera abstracta las operaciones que necesitamos para resolver un problema. Este tipo de abstracción nos permite definir operaciones nuevas en una aplicación que anteriormente carecía de ellas. La abstracción funcional fue la primera en aparecer ya que es fácil de llevar a la práctica debido a que su implementación es posible en la gran mayoría de los lenguajes de programación. Suele corresponderse con el uso de procedimientos o funciones.
La abstracción de datos surge cuando se abstrae el significado de los diferentes tipos de datos que aparecen en nuestro problema. Este tipo de abstracción nos permite crear nuevos tipos de datos pensando en los posibles valores que pueden tomar y en las operaciones que los manipulan. Como cabe esperar, estas operaciones serán a su vez abstracciones funcionales.
La abstracción de datos es más reciente que la funcional, ya que los primeros lenguajes de programación no ofrecían demasiadas facilidades para su uso. Uno de los primeros mecanismos que permitió esta abstracción fueron las clases de Simula.
Para hablar de la abstracción es necesario tener clara la diferencia que existe entre los datos, los tipos de datos y los tipos abstractos de datos.
Los datos son los valores que manejamos en la resolución de un problema, tanto los valores de entrada, como los de proceso y los de salida. Es decir, los datos son información y por lo tanto distinguimos varios tipos de datos.
Un tipo de dato se puede definir como un conjunto de valores y un conjunto de operaciones definidas por esos valores. Clasificar los datos en distintos tipos aporta muchas ventajas, como por ejemplo indicarle al compilador la cantidad de memoria que debe reservar para cada instancia dependiendo del tipo de dato al que pertenezca.
Los tipos de datos abstractos van todavía más lejos; extienden la función de un tipo de dato ocultando la implementación de las operaciones definidas por el usuario. Esta capacidad de ocultamiento nos permite desarrollar software reutilizable y extensible, lo cual veremos más adelante cuando hablemos de modularidad.
Un tipo de datos definido por el programador se denomina tipo abstracto de datos (TAD) para distinguirlo de los tipos predefinidos de datos. Los tipos abstractos de datos están formados por los datos (estructuras de datos) y las operaciones (procedimientos o funciones) que se realizan sobre esos datos. El conjunto de operaciones definidas sobre el TAD debe ser cerrado, es decir, sólo se debe acceder a los datos mediante las operaciones abstractas definidas sobre ellos. La abstracción de datos sólo permite acceder a ellos de manera controlada.
Las estructuras de los TAD se componen de dos partes: la interfaz y la implementación. Esto se debe a que las estructuras de datos reales que utilizamos para almacenar la representación de un tipo abstracto de datos son invisibles para los usuarios o clientes. Mientras que en la interfaz se declaran las operaciones y los datos, la implementación contiene el código fuente de las operaciones y lo mantiene oculto al usuario.
Las principales ventajas que nos aportan los TAD son las siguientes:
1. Mejoran la conceptualización y hacen más claro y comprensible el código.
2. Hacen que el sistema sea más robusto.
3. Reducen el tiempo de compilación.
4. Permiten modificar la implementación sin que afecte al interfaz público.
5. Facilitan la extensibilidad.
1. Mejoran la conceptualización y hacen más claro y comprensible el código.
2. Hacen que el sistema sea más robusto.
3. Reducen el tiempo de compilación.
4. Permiten modificar la implementación sin que afecte al interfaz público.
5. Facilitan la extensibilidad.
La construcción de un TAD consta de dos fases bien diferenciadas entre ellas: la especificación (formal e informal) y la implementación.
Las características de un TAD no deben depender de su realización concreta, sino solamente de cómo queremos que sea su comportamiento, lo cual llamamos especificación. Para la especificación de un tipo abstracto de datos en lenguaje natural (especificación informal) hemos de seguir el siguiente esquema:
TIPO DE DATOS Nombre del tipo (Lista de operaciones)
VALORES: Descripción de los posibles valores
OPERACIONES: Descripción de cada operación
VALORES: Descripción de los posibles valores
OPERACIONES: Descripción de cada operación
Primero indicaremos el nombre del TAD y citaremos todas las operaciones definidas. En el apartado valores describiremos los posibles valores de los datos de este tipo, pero lo haremos desde un punto de vista abstracto, sin pensar en la posible realización concreta. Finalmente en el apartado operaciones haremos una descripción de cada una de las operaciones definidas sobre el TAD. En la especificación informal, habitualmente hacemos referencia a conceptos con los cuales el lector está familiarizado (como por ejemplo conceptos matemáticos). El problema surge cuando estos datos auxiliares no están definidos tan precisamente.
La especificación formal nos permite definir conceptos de manera mucho más precisa. Para ello utilizaremos este esquema:
Tipo: Nombre del tipo de datos
Sintaxis: Forma de las operaciones
Semántica: Significado de las operaciones
Sintaxis: Forma de las operaciones
Semántica: Significado de las operaciones
En el apartado sintaxis proporcionamos el tipo de datos de entrada y de salida de cada una de las funciones definidas sobre el TAD, mientras que en semántica describiremos sus comportamientos. Sin embargo, ésta vez lo haremos siguiendo unas normas algebraicas básicas.
En la implementación del TAD lo que hacemos es elegir la forma en que se van a representar los distintos valores que tomarán los datos. También seleccionaremos la manera en que se realizarán las operaciones. Para esta elección debemos tener en cuenta que todas las operaciones se realicen de la forma más eficiente posible, aunque con la práctica veremos que la mayoría de las veces una implementación facilita mucho algunas operaciones mientras que complica otras.
La programación modular descompone un programa en un pequeño número de abstracciones independientes unas de otras pero fáciles de conectar entre sí. Como hemos visto anteriormente, un módulo se caracteriza principalmente por su interfaz y su implementación. La programación modular sigue el criterio de ocultación de información: si no se necesita algún tipo de información, no se debe tener acceso a ella.
La modularidad es un aspecto muy importante en los TAD, ya que es el reflejo de la independencia de la especificación y la implementación. Es la demostración de que un TAD puede funcionar con diferentes implementaciones.
Además de esto, la programación modular ofrece otras ventajas, como por ejemplo un mejor reparto del trabajo y una detección de fallos mucho mejor.


Comentarios
Publicar un comentario