Las variables no son mas que un espacio de memoria reservado para nuestro programa, donde podemos guardar un valor de cualquier tipo, o un conjunto de ellos. Imagina que la memoria ram es ahora un gavetero, y una variable es una gaveta. Este gavetero supongamos que tiene 10 gavetas, la primera y la segunda son tuyas, las otras de tu familia (o sea, otros programas que corren en el pc).

En la primera guardas solamente camisetas, y en la segunda solamente pantalones. Si guardas un pantalón en la primera, solo significa que no eres muy organizado (asi como yo), pero en programación, significa ERROR.

Que se puede guardar en memoria RAM?

En la memoria se puede guardar cualquier tipo de dato, pero antes de guardarlo, se le deberá decir al compilador que tipo de dato quieres guardar. Siendo así, no puede guardar números donde hay letras, ni letras donde hay números, como mismo no puedes guardar pantalones donde hay camisetas. Esto aplica solamente para los lenguajes de tipado fuerte como C#, Python, Pascal, y no para los de tipado dinamico como Php, Javascript, Ruby. En este curso introductorio nos centraremos en los lenguajes de tipado fuerte.

Coleccion de basura automatica vs destruir las variables

Las variables tienen nombre, con ese nombre se podrán utilizar los datos que ella guarda durante el transcurso del programa(no necesitas conocer la direccion de memoria que ella usa), pero cuando el programa se cierra, todas las variables que este utilizo, serán eliminadas de la memoria. Todos los programas necesitan memoria, así que no es útil, dejar los datos en la memoria ocupando un espacio innecesario. Algunos lenguajes como C# tienen un sistema de coleccion de basura automatico, que no es mas que un mecanismo para auto-limpiar la memoria que ya contiene datos innecesarios, pero lenguajes como C++ no tienen esto, y hay que tener muy claro que debemos ‘destruir’ la variable cuando ya no la necesitemos.

Para que me sirven las variables?

Así que teóricamente, si queremos hacer un sencillo programa que cuando lo abra, te pida un nombre, y si lo escribes y aprietas ENTER, el programa te mostrara un mensaje diciéndote: “Hola , nombre”

En este caso, nombre, será el nombre que escribiste. De esta forma, si cuando el programa te pide el nombre tu escribes “Ricardo”, el te mostrara un mensaje en pantalla con el siguiente texto “Hola , Ricardo”. Aquí tenemos que el texto se compone de dos partes, una parte variable, y otra invariable.

La parte invariable es “Hola , ”, y la variable es “Ricardo”. Siempre que existan partes variables en un programa, necesitaras utilizar una variable, y no siempre será tan sencillo como un texto, de hecho, nunca lo es. Si analizamos este pequeño programa, nos damos cuenta que hay unos pasos que no pueden variar en su orden, estos pasos son los que conforman el programa, y se les denomina Algoritmo. Un Algoritmo no es mas que un número finito de pasos que convierten los datos de un problema (entrada) en una solución (salida). Es realmente un concepto amplio, y tiene multiples definiciones, pero la anterior creo que describe el concepto perfectamente para los fines de este curso.

Organicemos las ideas, primero mostramos un mensaje al usuario para que sepa que hacer:

  • Mostrar mensaje “Escriba un nombre por favor”

(Supongamos que después de este paso el usuario escribe un nombre)

  • Guardar el nombre en una variable
  • Mostrar el mensaje “Hola , nombre.
  • Salir

Como ves, es una secuencia bien sencilla de pasos que resuelven un problema, o sea un algoritmo. El concepto no tiene por que estar asociado a un lenguaje especifico, basta con que sean «una secuencia de pasos»

Explicacion del algoritmo anterior

Esto es un algoritmo sencillo, y lo mas importante a analizar en este ejemplo, es el orden en el que se realizaran las diferentes operaciones, o sea, no podemos mostrar el texto “Hola, nombre antes de pedirle al usuario que teclee un nombre, todo tiene un orden lógico, y seguramente te parecerá que es muy evidente en este caso, y realmente lo eso, pero no siempre es asi, existen numerosos algoritmos que su nivel de complejidad es todo un reto para los programadores, de los cuales tendrás que enfrentarte a la mayoría si decides aventurarte en el mundo de la programación.

Las variables se usan en cualquier tipo de programa

En la programación podemos hacer programas de muchos tipos, por decirlo de alguna forma, podemos hacer aplicaciones de ventanas, aplicaciones de consola, aplicaciones web, aplicaciones de teléfono, en este blog, nos centraremos principalmente en las aplicaciones de consola, por su complejidad. En las aplicaciones de ventanas, tenemos que tratar con una serie de cuestiones graficas que se salen del contenido central del tema, por tanto las aplicaciones de consola nos interesan mas. Una aplicación de consola, se muestra en una ventana generalmente de fondo negro y letras blancas. Conociendo esto, vamos a mostrar otro ejemplo para comprender de que se tratan las variables, y tambien, porque no, para que se usan.

En este ejemplo, haremos un programa que pida dos números por teclado y muestre el resultado, en la ventana del programa, debería quedar así:

Entre el primer numero: 5                      [ENTER]

Entre el segundo numero: 7                  [ENTER]

El resultado de la suma es : 12

Aquí hay 3 valores que van a variar cada vez que el usuario quiera sumar dos números, el numero1, el numero2, y el resultado de la suma de estos, además, los textos correspondientes a cada operación, sabemos que son invariables “Entre el primer numero”, “Entre el segundo numero”, “El resultado de la suma es”. Siendo así, el algoritmo que sería capaz de hacer estas operaciones, no debería ser muy diferente de este:

  • Mostrar Mensaje “Entre el primer numero”

(Supongamos que después de este paso el usuario escribe un numero)

  • Guardar el numero1 en una variable
  • Mostrar Mensaje “Entre el segundo numero”

(Supongamos que después de este paso el usuario escribe otro numero)

  • Guardar el numero2 en otra variable
  • Procesar la suma y guardarla en la variable resultado
  • Mostrar mensaje “El resultado de la suma es  resultado
  • Salir

Las variables y la memoria

Las variables como explicamos anteriormente, se almacenan en la memoria ram. El sistema operativo es capaz de almacenar una cantidad finita de informacion de forma organizada, conociendo para cada pedazo de la memoria, que valor hay y su direccion. Si, la memoria ram esta estructurada por una serie de casillas donde cada una contiene una direccion numerica. El compilador es capaz de decirle al SO que le guarde cierto valor, y el SO le responde «OK, ya te guarde el valor, esta en esta direccion 0x01B8«. En este caso, el compilador mantiene un alias para esta direccion, que no es mas que el nombre que le pusiste a la variable. Es por esto que no necesitas en la mayoria de los casos conocer la direccion de memoria de la variable para acceder a su valor, solo su nombre.

Ejemplo de variables y memoria

Conslusiones sobre variables

Este es un ejemplo de cómo podría quedar un posible algoritmo que resuelve el problema. Mostramos un mensaje pidiendo un numero, se supone que después de este mensaje, el usuario escribirá un numero, y es ahí cuando lo tenemos que guardar en una variable para que no se pierda, a esta variable le llamaremos numero1, después se repite la operación, pero esta vez con la variable llamada variable2, ya tenemos los 2 valores que el usuario entro por el teclado.

Solo nos queda sumarlos y guardar el resultado de esa suma en la variable resultado, para que sea mostrado al final del programa, y el usuario vea que se sumaron los 2 números que el entró. El objetivo de un programa, en la mayoría de los casos, es recopilar información útil del usuario, procesarla, y mostrársela procesada.