Conceptos fundamentales de la programación


Introducción

Actualmente, la programación es una habilidad que te abre las puertas de un mundo laboral basto, interesante y lleno de oportunidades de crecimiento personal e innovación que avanza a un ritmo tan acelerado, que es difícil acostumbrarse.

Todo tiene un comienzo, y la programación no es la excepción. En este tema aprenderás los conceptos fundamentales que te introducirán a este campo del conocimiento, así como las estructuras más elementales para el manejo de la información y las operaciones que se pueden realizar con ellas.


Explicación

Variables, constantes y tipos de datos

Variables

De acuerdo con Boyarsky (2020), una variable es el nombre que se le da a un espacio de memoria que almacena datos. Una variable es la unidad mínima de información dentro de un programa, esta almacenará únicamente un dato y el conjunto de estas, así como su procesamiento dará como resultado información útil para el usuario de la aplicación.

Con base en lo anterior, es importante conocer el funcionamiento de las variables, además de cómo declararlas y alterar sus valores.

La declaración de una variable consiste en el tipo de dato, seguido del nombre de la variable.

String saludo;
double dollar;

Tabla 1. Declaración de variables en Java.

Recuerda que este nombre te permitirá identificar el dato que se almacena, por lo que se recomienda ampliamente usar nombres descriptivos que den una idea clara y rápida a cualquier lector sobre el contenido de esta.

Una vez declaradas las variables, es posible asignarles un valor. La primera vez que se les asigna un valor se llama inicialización.

En Java, para Boyarsky (2020), al asignarle un valor a una variable se debe poner el nombre de la variable seguido del signo "=" (igual), posteriormente un valor que corresponda con el tipo de dato asignado y finalizando la línea con un ";" (punto y coma).

saludo = "hola mundo";
dolar = 19.5;

Tabla 2. Inicialización de variables en Java.

Es importante destacar que el signo "=" (igual) es conocido como operador de asignación y no debe confundirse con el uso que se le da dentro de las matemáticas, donde indica "igualdad" entre los elementos de ambos lados. En el caso de la programación, indica que el valor a la derecha del operador ("=" símbolo de igual) se almacenará en el espacio de memoria identificado con la variable que está al lado izquierdo del mismo.

De esta manera, la expresión "dolar = 19.5" indica que la variable "dolar" almacenará el valor "19.5".

Es importante que sepas que una práctica común consiste en realizar la inicialización de una variable dentro de la misma línea en la que ocurre la declaración.

String saludo = "hola mundo";
double dolar = 19.5;

Tabla 3. Inicialización de variables en la misma línea de declaración en Java.

Identificadores

A los nombres de las variables también se les conoce como identificadores, y existen algunas reglas adicionales que se deben cumplir para nombrar a una variable en Java (Cosmina, 2018):

  • Un identificador no puede ser una de las palabras reservadas de Java.
  • Un identificador puede contener letras [a… z] (solo incluye letras del alfabeto inglés sin importar si estas son mayúsculas o minúsculas), números [0 … 9] o alguno de los siguientes caracteres especiales [ _ , $] (guion bajo o signo de dólar).

Asimismo, es altamente recomendable seguir el estilo camelCase o "escritura de camello" (por su similitud a las jorobas de este animal), que consiste en escribir nombres de más de una palabra, evitando los espacios e iniciando cada palabra con una letra mayúscula.

String saludoHolaMundo = "Hola mundo!";

Tabla 4. Declaración de variable con nombre tipo camelCase.

Constantes

Como su nombre sugiere, las "variables" corresponden con datos cuyos valores pueden ser alterados a lo largo del curso del programa. Sin embargo, existen valores cuyo valor se sabe (y muchas veces se requiere) que permanecerá constante. Para declarar este tipo especial se debe agregar la palabra reservada final que indica al programa, así como al lector del código que dicho valor no podrá alterarse durante el periodo de vida del programa.

final double PI = 3.14;

Tabla 5. Declaración de constantes en Java.

Intentar asignar un nuevo valor a una constante causará que el programa no pueda iniciar debido a un error de compilación.

Imagen 1. Ejemplo de error de compilación al asignar un segundo valor a una constante en Java.
Esta pantalla se obtuvo directamente del software que se está explicando en la computadora, para fines educativos.

Tipos de datos

El tipo de dato de una variable describe el tipo de valor que esta almacenará, estos pueden ser valores numéricos, valores de verdadero o falso y letras, así como tipos definidos por el programador.
En Java existen dos grupos de tipos de datos según Boyarsky (2020): los llamados tipos primitivos y los tipos de referencia.
Los tipos de datos primitivos son ocho y se pueden ver en la siguiente tabla:

Tabla 6. Tipos de datos en Java.

De la tabla anterior se puede resaltar más información:

  • Los valores de tipo float (también conocidos simplemente como números flotantes) deben ir acompañados de una letra "f" (mayúscula o minúscula) que le permita al programa diferenciarla del tipo double.

  • Los tipos byte, short, int y long son tipos usados para representar números sin punto decimal. A estos números se les conoce como enteros.

Formato numérico

En Java es posible separar los dígitos de un número con guion bajo (_) para mayor legibilidad, siempre y cuando el número no comience o termine con dicho guion, o esté junto a un punto decimal.

Los siguientes ejemplos muestran más claramente lo anterior:

double guionInicio = _1;                // error
double guinFinal = 1_;                  // error
double guionPunto = 1_.234              // error
double guionPuntoCorrecto = 1_0.0_32;   // funciona
double guionCentenas = 1_000_000.000_32;// funciona

Tabla 7. Ejemplos de literales numéricos.

Tipos de datos por referencia

El primer tipo que encontramos en esta categoría es String, que se trata de un tipo especial proporcionado por el lenguaje para el manejo de cadenas de caracteres.

Los caracteres pueden ser aquellos disponibles dentro de la tabla de valores Unicode y deben estar encerrados entre comillas dobles. Ver la tabla 4.

Después se encuentra cualquier tipo de dato descrito dentro del Java SE Documentation (2021), aquí encontrarás tipos de datos llamados "clases" y cada uno está descrito junto con el detalle de su funcionalidad.

Diferencias entre tipos primitivos y tipos de referencia

Para entender la diferencia, primero necesitas comprender cómo se almacenan en la memoria.

Existen, de manera general, dos espacios de memoria para un programa de acuerdo con Cosmina (2018). El primero es de fácil acceso y se llama memoria de pila o stack memory (por su nombre en inglés); este tiene la característica de tener espacios contiguos en donde se almacenan los valores de los datos.

Este espacio de memoria tiene un tamaño más reducido, pero es de rápido acceso para el programa. Las variables de tipo primitivo almacenan su valor directamente en este espacio, de manera que su lectura es inmediata.

Se tiene, además, un segundo espacio de memoria al que conocemos por su nombre en inglés heap memory. Cuando se crea un valor para una variable de referencia, dicho valor se almacena en este espacio.

Este espacio tiene como característica que no existen lugares previamente creados como en el stack memory, por lo que para almacenar cada valor se reserva un espacio suficientemente grande para contener dicho valor y posteriormente se asigna la dirección de la memoria del espacio reservado a la variable de referencia, y es finalmente el valor de la dirección de memoria el que se almacena en el stack memory asociado con la variable como se puede observar en la siguiente imagen.

Imagen 2. Representación gráfica de la stack memory y la heap memory.

Así podemos decir, de manera general, que las variables de tipo primitivo son aquellas que almacenan directamente su valor, mientras que las variables de referencia almacenan la dirección de memoria donde se ubica el valor real.

Operaciones aritméticas, lógicas y relacionales

Operaciones

Un operador, según Boyarsky (2020), es un símbolo especial que puede ser aplicado a un grupo de variables (que se conocen como operandos) y que devuelven algún resultado; a esto le llamamos operación.

En Java cuentas con diferentes tipos de operadores según el tipo de dato con el que trabajan (aritméticos, lógicos y relacionales), así como por la cantidad de operandos que soportan (unarios, binarios, terciarios).

Precedencia de operadores

Cuando una expresión contiene más de un operador, se resuelve regularmente de izquierda a derecha, sin embargo, existen algunos operadores que se resuelven primero, lo que puede alterar el resultado de la operación. El orden en el cual se resuelven las diferentes operaciones de una expresión es conocido como precedencia de operadores.

La siguiente tabla muestra los diferentes operadores disponibles, ordenados por la precedencia que tienen dentro del lenguaje:

Operadores unarios

Tabla 8. Operadores unarios en Java.

Operadores binarios

Tabla 9. Operadores binarios en Java.

Operadores ternarios

Tabla 10. Operadores ternarios en Java.

Operadores de asignación

Tabla 11. Operadores de asignación en Java.


Cierre

El almacenamiento y el manejo de los datos son la "piedra angular" de cualquier programa, por lo que es de gran relevancia conocer sus formas más elementales, ya que a partir de esto se construyen los conocimientos más complejos.

¿Te parecen suficientes los tipos de datos mostrados?
¿Qué otra manera de almacenar los datos podrías usar?

Los tipos de datos básicos son solamente el punto de partida, debido a que se pueden expandir y personalizar como tú lo necesites. Este aprendizaje te dará herramientas para mejorar tu desempeño como programador.


Checkpoint

Asegúrate de:

  • Comprender en qué consiste una variable para poder almacenar datos en un programa.
  • Conocer que es un tipo de dato para saber elegir el adecuado al almacenar uno.
  • Identificar las diferencias entre tipo primitivo y tipo de referencia para darles un uso adecuado.
  • Identificar las diferentes operaciones que se pueden realizar dentro de un programa para procesar los diferentes datos y producir información en un programa.

Bibliografía

  • Boyarsky, J. (2020). OCP Oracle Certified Professional Java SE 11 Developer Complete Study Guide. Estados Unidos: Sybex.
  • Cosmina, L. (2018). Java for Absolute Beginners: Learn to Program the Fundamentals the Java 9+ Way. Estados Unidos: Apress
  • Java SE Documentation. (2021). Java® Platform, Standard Edition & Java Development KitVersion 11 API Specification. Recuperado de https://docs.oracle.com/en/java/javase/11/docs/api/

La obra presentada es propiedad de ENSEÑANZA E INVESTIGACIÓN SUPERIOR A.C. (UNIVERSIDAD TECMILENIO), protegida por la Ley Federal de Derecho de Autor; la alteración o deformación de una obra, así como su reproducción, exhibición o ejecución pública sin el consentimiento de su autor y titular de los derechos correspondientes es constitutivo de un delito tipificado en la Ley Federal de Derechos de Autor, así como en las Leyes Internacionales de Derecho de Autor.

El uso de imágenes, fragmentos de videos, fragmentos de eventos culturales, programas y demás material que sea objeto de protección de los derechos de autor, es exclusivamente para fines educativos e informativos, y cualquier uso distinto como el lucro, reproducción, edición o modificación, será perseguido y sancionado por UNIVERSIDAD TECMILENIO.

Queda prohibido copiar, reproducir, distribuir, publicar, transmitir, difundir, o en cualquier modo explotar cualquier parte de esta obra sin la autorización previa por escrito de UNIVERSIDAD TECMILENIO. Sin embargo, usted podrá bajar material a su computadora personal para uso exclusivamente personal o educacional y no comercial limitado a una copia por página. No se podrá remover o alterar de la copia ninguna leyenda de Derechos de Autor o la que manifieste la autoría del material.