Tipos de datos, programación para principiantes.
Después de mostrarles mi experiencia al comenzar esta disciplina (si no lo has leído podían entrar a este link: ¿Hello World sencillo? No lo creo…).
Quizá lo más difícil de entender al iniciar a programar es de que manera se pueden almacenar datos en tiempo de ejecución, que muchas veces al iniciar en éste mundo de la programación pensamos (y me incluyo) que por si solos estos datos que ingresamos al sistema que estamos desarrollando van a persistir en el tiempo, pero no es tan simple.
Debido a que cuanto cerramos el programa y lo volvemos a abrir todo lo que ingresamos anteriormente se habrá ido. Como también lo difícil que puede ser comprender cómo y cuándo usar algunos tipos de datos que nos permiten almacenar información ya sea en tiempo de ejecución como en tiempo de codificación.
No se preocupe si siente que no comprende alguna de las cosas que se están mencionando, el objetivo de este post es aclarar estos puntos, que a mi parecer es sumamente importante tener claro.
Tiempo de ejecución (Runtime).
Cuando se habla de tiempo de ejecución se refiere al espacio de tiempo que el programa está en ejecución, todo lo que suceda en ese período de tiempo de manera dinámica (no persistente) se almacenará en la memoria RAM (Random Access Memory) para aprovechar su uso mientras que el programa esté corriendo en el sistema operativo. Pero en cuanto este se cierre, todo lo que estaba almacenado en la memoria RAM se limpiará de ella, para darle lugar a otros programas que necesiten esos recursos para su funcionamiento.
Persistencia de datos.
Por otro lado, al referirse a persistencia de datos, se está hablando de almacenar físicamente los datos en una base de datos, y cuando se habla de almacenar físicamente quiere decir que se guardará a en el disco duro de la máquina, ya sea en archivos o utilizando un motor de base de datos.
Pero que se almacene directamente en el disco duro del computador no quiere decir que en tiempo de ejecución no se almacene en la RAM, de hecho el programa va a funcionar como un medio para llegar al disco duro, ya sea para insertar, eliminar, actualizar y obtener estos datos que van a seguir existiendo a pesar de que el programa se cierre. Se podría ilustrar como un repartidor de comidas:
Cuando alguien tiene hambre, este llama a un restaurante que tenga el servicio de entrega en el hogar tipo Uber y le hace una solicitud, el restaurante prepara la comida y se la entrega al repartidor que llevará los alimentos por el camino correcto y con el objetivo de llevar la comida en el mejor estado posible hasta su destino.
Tipos de datos
El repartidor de comidas tomaría el rol de intermediario, que entrando en contexto en el tema de esta publicación podríamos verlo como un lugar de almacenamiento donde se guardará la información (comida) y moviéndose el flujo del programa (carreteras) hasta poder llegar a ser preservado en medio de almacenamiento persistente en el disco duro (El hogar del solicitante). Este lugar de almacenamiento se conocerá cómo variable, si investigamos un poco en internet podríamos encontrar algunas definiciones de una variable.
Una variable es como una caja en la cual se puede almacenar artículos, estás cajas por lo general siempre tienen una forma y tamaño. Las personas que quieran almacenar sus artículos en las cajas se verán obligados a respetar los límites de esa caja ingresando solamente artículos (información) que tenga la forma de esa caja, además de no reventar la caja por introducirle muchos artículos.
Entrando más en contexto de lo qué es un tipo de dato, cuando se habla de que estas cajas (Tipos de datos) tienen una forma y ésta hay que respetarla, lo que trato de decir es que existen muchos tipos de datos y cada uno debe ser almacenado en su respectiva caja.
Hablando más en cómo podríamos identificar los tipos de datos primero es necesario conocer que existen dos tipos, de tipos de datos (lo sé, suena muy loco), entre estos tenemos dos, los primitivos (non-object) y no primitivos (objects). Para fines de no complicar este post y no entrar en confusiones, se va a abarcar solamente los primitivos, entre estos tenemos los más básicos:
En este post se va a profundizar un poco para lograr la comprensión de algunos tipos de datos primitivos, como los que están en la imagen anterior, existen algunos más pero para fines de comprensión solo se tomarán estos.
Tipo de dato Int (Entero)
Este tipo de dato ayuda a almacenar números enteros, esto quiere decir que los números con decimales si son asignados una variable de tipo de dato entera básicamente lo que pasará es que se perderán esos decimales por ejemplo:
¿Cuándo deberíamos usarlo?
Si lo que necesitamos es hacer un cálculo matemático no preciso (por que no admite decimales) o almacenar datos como horas, días, minutos, edad entre muchos otros datos que pueden beneficiarnos en el futuro a la hora de hacer cálculos, como saber cuántas horas trabaja por semana, y esto sería multiplicando la cantidad de horas por día, por la cantidad de días de la semana.
Nota: solo acepta números, no caracteres, o bueno los acepta pero toma como dato la representación de ese carácter en un número, pero eso es harina de otro costal.
Tipo de dato bool (booleano o condicional)
Este tipo de variable solo va a aceptar dos valores (true o false), el tipo de datos es meramente condicional, puede ayudar a manejar el flujo de un programa almacenando datos que más adelante en el flujo del programa ayuden para tomar decisiones.
Tipo de dato float ( decimal no preciso o de coma flotante)
Las variables que tengan este tipo de dato tienen la capacidad de almacenar números con decimales, dando un poco de precisión a los cálculos más concretos, como obtener de manera más aproximada la división de números no pares.
Cuando digo que es un tipo de dato no preciso quiere decir que no va a mostrar todos los decimales que podría tener un número, debido a que su alcance (tamaño de la caja) que puede tener las variables con este tipo de dato no es muy grande, pero igual sigue siendo más grande que el int, bool, char entre otros tipos de datos.
Este tipo de datos al igual que el int, no permite el ingreso de caracteres.
Tipo de dato double (decimal preciso o de coma flotante)
Las variables con este tipo de dato funcionan casi por completo igual que las variables de tipo float, con la diferencia que este tipo de dato tiene prácticamente el doble del alcance de una variable de tipo float permitiendo cálculos super más precisos.
Tipo de dato char
Este tipo de dato es lo más cercano que hay en tipos de datos primitivos a la posibilidad de almacenar una oración, pero el alcance de este es de tan solo un carácter por variable, básicamente se podría utilizar para representar el sexo de una persona como los es Hombre(M) o mujer (F), entre muchas cosas más. Por otro lado es valido pensar que podríamos agrupar muchos chars y se podría formar una oración y esto es totalmente posible, a esto se le podría llamar arreglo de caracteres o vector de caracteres que se van a explicar en otro momento.
Para llevar
En este post se ha tratado de introducir a los tipos de datos y cómo estos tiene sus propias formas y tamaños.
Es muy necesario tener en cuenta el tamaño o alcance de las variables que vayamos a utilizar, debido a que ellas consumen recursos, y cada vez que creamos una variable esta reserva un espacio en memoria donde es almacenada temporalmente.
Cabe destacar que esta memoria no es infinita, aunque en comparación con décadas pasadas dónde las computadoras eran de recursos muy limitados era muy necesario aprovechar al máximo los recursos de esos ordenadores.
Gracias a los avances tan gigantescos de la tecnología en la actualidad los ordenadores tienen cientos de veces más recursos que sus antepasados, permitiendo que sea poco probable que este pueda quedar sin recursos.
Pero aún es posible y por eso es necesario siempre tener en cuenta que si vamos a almacenar la edad de una persona, sería un desperdicio de recursos utilizar una variable de tipo double, porque esta tiene un tamaño sumamente grande para la utilidad que se le piensa dar.
Por eso sería preferible usar un tipo de dato int o incluso uno que quizá no se vio en este post que es el short (En C++) o incluso byte que su alcance es incluso más pequeño que el del tipo de dato int, y por ende utiliza los recursos sabiamente…
Sí bien es cierto que no vamos a aprender el alcance de cada tipo de dato, es necesario conocer que existe alguno y de esa manera podemos comparar los tamaños, donde podemos ver que el que consume menos recursos es el boolean y el que consume más es el double.
Evidentemente la optimización de un sistema no es solamente de poner el correcto tipo de dato para cada situación, optimizar un sistema lleva mucho más trabajo, pero al menos se crean buenas practicas para empezar a trabajar.
Despedida
Bueno quería compartir un poco sobre los tipos de datos que considero que entenderlos son indispensables para tener un sano crecimiento en el mundo de la programación. Tengo pensado hacer próximos post hablando de funciones entre otros temas interesantes, como lo son las buenas practicas y más adelante cuando las bases estén bien puestas conversar sobre programación orientada objetos(POO). Muchas gracias por leer, si le gustó el post regálame un clap ;) y compártelo con alguien que creas que le puede ayudar. Por otro lado si tienes algún comentario o duda al respecto de este tema o algún otro tema relacionado que le podría llamar la atención, no dude en ponerlo en los comentarios
Happy Coding…