Qué son los datos y qué son los tipos de datos. Cuáles son los tipos de datos habituales en los lenguajes de programación y las diferencias en su gestión en lenguajes de tipado estático y tipado dinámico.
En este artículo vamos a abordar un tema muy importante en el área de la programación como son los tipos de datos. Hablaremos de tipos de datos de modo general, sin estar refiriéndonos a un lenguaje de programación en particular, porque has de saber que dependiendo del lenguaje puedes encontrar que manejan los tipos de datos de distintas maneras.
Antes de meternos de lleno en los diferentes tipos de datos os paso la descripción de dato para que todo quede claro desde el principio.
Dato
Un dato es cualquier elemento que necesitemos procesar en un programa. Los programas trabajan con datos de entrada, los cuales son manipulados mediante los procesos informáticos para producir unos datos de salida.
El dato está muy ligado a otro concepto que necesitamos conocer que es el de "información". Seguro que has oído comentar que la informática es el tratamiento automatizado de la información. Entonces ¿Qué es información y qué es dato? Para entender esta diferencia podemos acudir a algunos ejemplos.
- Ejemplos de datos: sería el 0, 12, "sHadksdje2so", "madrid", "lunes" y cosas así. Estos datos no sabemos a lo que se refieren, simplemente son números o cadenas de un valor determinado.
- Ejemplos de información: 0 (el número de Ferraris que tengo en el garaje), 12 (los días del mes), "madrid" (capital de España)...
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!
Qué son los tipos de datos
Un tipo de datos es un conjunto de valores que tienen una característica en común y que responden a unas operaciones determinadas.
En un sistema informático trabajamos con datos y los lenguajes de programación necesitan saber cuál es el tipo de ese dato, para saber los valores posibles que podrían tener y las cosas que se permiten hacer con ellos.
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 con otras cadenas, concatenar otras cadenas, etc.
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 decimales como enteros en el mismo saco.
Clasificación de los tipos de datos
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.
En todos los lenguajes de programación encontramos una clasificación de tipos de datos siempre presente, los tipos de datos simples y los tipos de datos compuestos.
Tipos de datos simples
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 descomponer en varios datos independientes.
Aquí tienes una lista de tipos de datos simples comunes en la mayoría de los lenguajes de programación, aunque ya depende de la implementación de ese lenguaje qué tipos de datos manejará:
- Numérico
- Número Entero
- Número Real (con decimales)
- Caracter
- Cadena de caracteres
- Boleano (verdadero o falso)
- Enumerado (un conjunto de valores limitado)
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:
Datos Numéricos: Permiten representar valores forma numérica, ya sean números enteros o números los reales (con decimales). Los datos de tipo numérico permiten realizar operaciones aritméticas como la suma, resta, etc.
Datos lógicos: Son aquellos que solo pueden tener dos valores: cierto (true) o falso (false). Llamamos a estos tipos de datos "boleanos" por la palabra en inglés "Boolean". Este tipo de datos se da muchas veces cuando se producen comparaciones entre valores de otros tipos y cuando queremos tomar decisiones con las estructuras condicionales.
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.
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 programe en C.
Tipos de datos compuestos
Luego tenemos los tipos de datos compuestos, que también se denominan tipos de datos complejos o tipos de datos estructurados. Estos tipos de datos se componen de agrupaciones de tipos de datos simples.
Podemos poner algunos ejemplos de tipos de datos compuestos:
- Array
- Estructuras
- Objetos
Un array es un conjunto de valores que se almacenan en una misma referencia de la memoria y donde en muchos lenguajes todos sus valores son del mismo tipo simple. Una estructura es la unión de varios tipos de datos simples, pero que pueden tener tipos distintos. Un objeto es un tipo de datos en el que podemos tener distintos tipos de datos simples, pero donde además tenemos operaciones asociadas a estos objetos. Es un poco pronto para poder aportar más detalles sobre cómo funcionan.
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.
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 datos manejados en un algoritmo deben llevar asociado un identificador para que nos podamos referir a él cuando haga falta. Ese identificador es el nombre de la variable o constante.
Generalmente esa variable, o constante, tendrá distintas partes:
- El nombre para referirnos a ella, o identificador
- El tipo de datos de los elementos que podrá almacenar
- El valor que contiene en un momento dado.
Se define como variable a una posición de memoria referenciada por un identificador donde se puede almacenar un valor determinado (Tipo de dato).
Se define como constante a un valor que no se modifica a lo largo de toda la ejecución del programa.
Identificadores
Los identificadores sirven para etiquetar y referenciar en el código a los datos de un programa (constantes, variables). 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 dentro.
Técnicamente el identificador es una secuencia de caracteres que sirve para identificar una posición en la memoria de la computadora donde se encuentra un dato en particular. Los identificadores son los que nos permiten acceder a su contenido.
Ejemplos de identificadores:
- Nombre
- operando
- Num_horas
- Calif2
Reglas para formar un identificador
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 algunas reglas que suelen ser comunes en la mayoría de los casos:
- Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben contener espacios en blanco.
- Debe contener letras, dígitos y caracteres como la subrayado (guión bajo "_").
- La longitud de identificadores puede ser de varios caracteres. Aquí cada lenguaje tiene sus límites, pero son generalmente bastante generosos.
Consejos para usar buenos identificadores
Nosotros podemos escoger cualquier nombre para las variables y constantes, pero es importante que los nombres que hayamos elegido sean buenos. Para considerarse buenos nombres podemos seguir unos consejos básicos:
- El nombre del identificador debe dar una idea del significado del valor que contiene
- No se deben usar abreviaciones
- 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 cada letra inicial a partir de la segunda: "facturaOriginal". Generalmente cada lenguaje tiene una notación más usada que conviene respetar
- Ten cuidado con las mayúsculas y minúsculas, porque la mayoría de los lenguajes las tienen en cuenta. No es lo mismo una variable que se llame "ALTURA" que "altura" o "Altura".
- Las variables suelen comenzar en minúscula
- Las constantes se suelen colocar con todas las letras en mayúscula
- Sé consistente, si usas una manera de nombrar las variables, usa siempre la misma en todo el programa
Tipado estático y tipado dinámico
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.
- 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 del tiempo.
- 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.
Lenguajes con tipado estático tenemos a Java, C#, C. Lenguajes con tipado dinámico tenemos a PHP, Javascript, Python.