Estructura Datos

Posted on Mar 27, 2020 | Updated on Feb 15, 2022 | 3 min read

“El estudio de estructura de datos y algoritmos que los manipulan es el corazón de la ciencia de la computación”

– Clifford A. Shaffer

Siguiendo la reflexión de Shaffer, la estructura de datos es el elemento fundamental de la ciencia de computación, pero qué realmente es una estructura de dato, para definirlo tenemos que descomponerlo aún más, partiendo desde su componente más básico, un tipo.

Un tipo es un conjunto de valores que puede poseer una variable, por ejemplo el tipo booleano con dos posibles valores, de falso o verdadero o bien los números enteros.

Se dice que son tipos simples o primitivos cuando se definen sobre sí mismos, mientras que aquellos datos que se definen en función a otros se denominan compuestos o agregados, por ejemplo si deseamos definir el tipo Persona, este tipo podría estar formado por tipos primitivos para representar cada una de sus característica; su nombre, su apellido, edad y así sucesivamente.

Cada lenguaje de programación dispone de su propio conjunto de tipos primitivos, a continuación los tipos primitivos presentes en el lenguaje programación Python y Java.

Tipos primitivosDespliegaEjemplos/Rango
intnúmeros enteros42
floatnúmeros de punto flotante1.0
complejosnúmeros complejos2 + 3j
booleanvalores lógicosTRUE o FALSE
cadenastexto‘Bienvenido a Python’
listacolección de objetos[1, 2, 3, 4]
tuplacolección de objetos de distinto tipo(“A”, 1.2, 0, -2)
diccionariocolección de objetos del tipo clave-valor{“mantisa”:5.81, “exponente”:1.4}

Tipos de datos primitivos en Python

Tipos primitivosDespliegaEjemplos/Rango
bytenúmeros enteros de 8-bit–128 a 127
shortnúmeros enteros de 16-bit–32,768 a 32,767
intnúmeros enteros de 32-bit–2,147,483,648 a 2,147,483,647
longnúmeros enteros de 64 bit–2 63 a 263 – 1
floatnúmeros de punto flotante10 -46 a 1038
doublecolección de objetos10 -324 a 10308
charcaracteres Unicode“A”, “c”, “P”
booleanvalores lógicosTRUE o FALSE

Tipos de datos primitivos en JAVA

Si bien existen tipos compartidos por varios lenguajes de programación estos pueden variar acorde la orientación y el propósito del lenguaje, como es el caso de Python y Java.

Un tipo de dato es un tipo junto a todas las operaciones elementales que manipulan dicho tipo, un conjunto de funciones básicas que uno puede aplicar a estos valores, por ejemplo para los números enteros se pueden aplicar las operaciones básicas de la aritmética (suma, resta, multiplicación y división).

Mientras que un tipo de dato abstracto (TDA) es la definición de un tipo de dato como un componente que está definido en términos de su tipo y el conjunto de operaciones sobre ese tipo, en donde las operaciones no se encuentran implementadas, solo su comportamiento, es decir, se define qué debe hacer y no el cómo hacer.

Y finalmente la estructura de dato es la implementación de un TDA en algún lenguaje de programación, es decir, la representación de algún tipo de dato y de sus operaciones asociadas.

Un TDA define la forma lógica de un tipo de dato, mientras que una estructura de dato implementa la forma física del tipo de dato.

TDA

Cuando se desea resolver un problema es importante seleccionar una estructura de datos adecuada, para dicho efecto se debe analizar los recursos disponibles y utilizar la que mejor se adecua a las necesidades del problema.

Referencias:

  • Shaffer, Clifford A. (2010). A Practical Introduction to Data Structures and Algorithm. (3rd ed. Java Version).
  • Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2009). Introduction to Algorithms, Third Edition (3rd ed.). The MIT Press