Una variable es un contenedor designado para almacenar un dato o un valor, al que damos un nombre para poder acceder, manipular y reusar a lo largo de la ejecución del programa.
Nuestro programa va a tener que gestionar datos. De hecho, esa es su función principal, manipular y gestionar datos. Y, en algún sitio vamos a tener que guardar esos datos. Ese sitio, son las variables.
Normalmente suele usarse el símil de que una variable es “como una caja” donde guardamos datos. Es bastante adecuado, y es útil para explicar el concepto, así ¡que se viene esta caja!
Por ejemplo, podemos tener una variable llamada “edad” que guarda la edad de una persona. Lo primero que vemos es que le hemos puesto un nombre a nuestra caja, para poder acceder encontrarla, y diferenciarla de las demás.
Ahora yo cojo mi caja “edad”, y dentro coloco el número 25. Y tenemos otra propiedad de las variables, que es que sirven para almacenar cosas. Las variables pueden contener diferentes tipos de información, como números, nombres, colores o cualquier cosa que necesitemos en nuestro programa.
Si en algún momento quiero consultar la edad que he guardado, simplemente abro la caja, y obtengo el número 25.
La ventaja de las variables es que su contenido puede cambiar. Pero no es necesario cambiar la caja, nuestra caja “edad” sigue siendo la misma. Simplemente vamos a cambiar lo que contiene.
Así que dentro de un año, cuando la persona cumpla años, podemos abrir la caja “edad”, modificar el número por un 26 y cerrarla de nuevo. Ahora, al preguntar a la caja “edad”, nos dará el número 26 actualizado.
En resumen:
- Las variables contienen cosas (información)
- Tienen un nombre para diferenciarlas de los demás
- El contenido puede cambiar, sin necesidad de cambiar la variable en sí
Contenido de una variable
Una variable se llama así porque su contenido puede variar. Lo sé, es quedarse muy ancho decir que una variable varía, pero es que es así (por contra, los que no pueden variar se llaman constantes).
El valor que podemos almacenar, puede ser cualquier cosa que nos permita el lenguaje. Desde un número, a una cadena de texto, o un objeto más complejo como la lista completa de pedidos de una fábrica
La variable tiene un nombre y un tipo de datos asociado, lo que permite identificarla y acceder a su contenido en tiempo de ejecución.
Por ejemplo, un código
miTexto = "un texto impresionante"
miNumero = 42
Aquí,
miTexto
es una variable que almacena el texto “un texto impresionante”miNumero
es una variable que almacena el número 42
Dependiendo del lenguaje que estemos usando, tendremos disponibles unos tipos u otros de variables. Por otro lado, existen lenguajes con tipado estricto o lenguajes con tipado dinámico.
Declaración de una variable
En la muchos lenguajes de programación se debe declarar una variable antes de usarla. Esto significa avisar al compilador o intérprete de “eh, quiero crear este contenedor con este nombre!”
Adicionalmente, en los lenguajes con tipado deberemos especificar el tipo datos que puede almacenar la variable.
Por ejemplo, en C# (tipado estricto) para crear una variable de tipo texto deberemos hacer.
string miTexto = "un texto impresionante"
En JavaScript (tipado dinámico) necesitamos declarar la variable, pero no es necesario indicar su tipo. Así quedaría.
let miTexto = "un texto impresionante"
Por otro lado, en Python no es necesario ni declarar la variable ni indicar su tipo. Por lo que la sintaxis quedaría así,
miTexto = "un texto impresionante"
Asignación de una variable
Para cambiar el contenido de una variable a lo largo del programa, simplemente tenemos que asignarle un nuevo valor. Aquí si que existe un consenso, y en casi todos los lenguajes se emplea el operador =
Por tanto, cuando la variable ya existe, en C# para cambiar su valor haríamos.
miTexto = "otro texto aún más impresionante"
Que sería idéntico al caso de JavaScript
miTexto = "otro texto aún más impresionante"
E incluso al de Python,
miTexto = "otro texto aún más impresionante"
No obstante, cabe decir que si, por ejemplo, nos equivocamos al escribir el nombre de la variable y pusiéramos miText
, en lugar de miText
miText = "otro texto aún más impresionante"
En C#, JavaScript, y en la mayoría de lenguajes, nos daría un error porque esa variable no existe (no la hemos declarado). Sin embargo, en Python se crearía una variable nueva llamada miText
, sin ningún tipo de aviso.
Como vemos, permitir no declarar las variables puede ser tanto una ventaja, porque resulta muy cómodo, como una fuente posible de errores.
Asignación de una variable a ella misma
Durante la asignación de la variable es posible usar su propio contenido para calcular el nuevo valor. Por ejemplo, es válido y muy frecuente hacer lo siguiente,
contador = contador + 1
Con esa sentencia estamos incrementando el contador en el valor de uno.
Esto es así porque la evaluación de esa expresión se evalúa en dos pasos,
- Se evalúa la expresión de la derecha
- Se asigna el valor resultante a la variable de la izquierda.
No hay ningún problema en que la expresión de la derecha contenta la propia variable. No va a hacer un “yo mi abuelo soy”, ni petarte el ordenador ni nada. Simplemente primero se evalúa lo de la derecha, y a continuación se guarda en la variable de la izquierda.