# Fundamentos de programación/Variables y asignaciones

* Lección 5
* Variables y asignaciones
Los programas son secuencias de instrucciones para realizar una tarea determinada y para ejecutarla deben procesar información y esa información deben almacenarla en la memoria de la computadora. El código en lenguaje máquina usa las direcciones de las celdas de memoria del computador para acceder el lugar donde guarda y posteriormente recupera la información. Para evitar que los programadores deban recordar gran cantidad de direcciones de memoria diferentes, los lenguajes de programación de alto nivel introdujeron el concepto de «variable».
Una variable es una abstracción para las posiciones de memoria donde se almacenan datos y consiste de seis conceptos principales: el nombre, la dirección, el tipo, el valor, el alcance y el tiempo de vida. El nombre es un identificador que permite referirse a la variable a lo largo del programa. La dirección es la posición de memoria donde se almacena el dato. El tipo se refiere al tipo de datos que se almacenará en la variable. El valor es el dato que se encuentra almacenado en la variable. Una característica fundamental de las variables es que los valores o datos que almacenan cambian a lo largo de la ejecución del programa. El alcance de la variable es la sección del programa en la cual se puede usar en expresiones o enunciados. Finalmente, el tiempo de vida es el segmento de tiempo durante la ejecución del programa durante la cual la variable está presente en la memoria del computador. La vida de las variables inicia con su declaración y finaliza cuando la ejecución abandona el alcance de la variable.
Al escribir programas, podemos usar enunciados que nos permiten realizar diversas operaciones con las variables, entre ellas: declararlas, inicializarlas, asignarles valores y transferir valores entre las variables.

### Declarando e inicializadas variables

Una variable se declara para indicarle al programa a partir de qué lugar empieza a existir, qué nombre tendrá y qué tipo de datos almacenará. La asignación de un valor inicial se llama inicialización. Para declarar una variable usaremos una instrucción compuesta del nombre del tipo de datos de la variable, el nombre de la variable y opcionalmente un operador de asignación y un valor inicial. La inicialización puede hacerse en la misma instrucción que la declara o en una instrucción separada. Es importante tener en cuenta que las variables deben recibir un valor inicial antes de poder leer los datos que contienen. Si un programador trata de leer los datos el valor de una variable que no ha sido inicializada, los compiladores normalmente reportan un error y no compilan el programa.
Los tipos de datos que usaremos serán entero, real, carácter, lógico y apuntador. La secuencia de símbolos: := se usará como operador de asignación. Los siguientes son algunos ejemplos de declaración e inicialización de variables:
* Variable de tipo entero llamada edad.
* Variable de tipo real llamada precio.
* Variable de tipo entero llamada artículos_disponibles con 100 como su valor inicial.
* Variable de tipo lógico llamada terminado con falso como su valor inicial.
* Declaración de 3 variables en secuencia de diferentes tipos.
* Declaración de una variable seguida de su inicialización en una instrucción diferente.

### Asignando datos a las variables

Asignarle un dato a una variable consiste en reemplazar el valor anterior o inicial de la variable con un valor nuevo. Una vez que se asigna un nuevo valor, el valor anterior es eliminado de la memoria y no es posible recuperarlo. Estos son algunos ejemplos de asignaciones de valores a variable declaradas e inicializadas previamente:
* Asignando el carácter 'R' a la variable siguiente_letra
* Asignando el valor 24.26 a la variable temperatura
* Asignando diferentes valores a diferentes variables en instrucciones consecutivas.

### Transfiriendo datos entre variables

De la misma forma en que asignamos valores constantes a las variables, podemos asignarles los valores de otras variables. Esta operación copia el dato contenido en una variable a otra variable, de forma que al completarse la operación ambas variables tienen el mismo valor. De ese momento en adelante, ambas variables se comportan de forma independiente, de forma que modificar el valor de la variable original no alterará el valor de la variable a la que se le asignó el dato. Para que la asignación de valores entre variables funcione, estas deben ser del mismo tipo, de lo contrario el compilador reportará un error.
Estos son algunos ejemplos de asignaciones de valores entre variables:
* El valor de una variable se traslada a otra variable.
* El valor de una variable se traslada a otra variable y de esta a una tercera variable.
* Se declaran dos variables, se les asigna un valor inicial, el valor de una de ellas se reemplaza con el valor de la otra y a esta última se le assigna un nuevo valor.

### Recomendaciones para dar nombre a las variables

Los lenguajes de programación tienen restricciones sobre los nombres que se le pueden dar a las variables. La mayoría permite carácteres alfabéticos (tanto mayúsculas como minúsculas) y numéricos, pero no permiten la mayoría de los símbolos ni los espacios en blanco. También tienen restricciones sobre el largo máximo que pueden tener, no permiten usar un conjunto de palabras reservadas que tienen significados especiales en los programas y normalmente no permiten que el primer carácter del nombre sea un número.
Al aprender un lenguaje de programación es indispensable familiarizarse con las reglas de formación de nombres. Esas reglas cambian de un lenguaje a otro, pero las siguientes recomendaciones generales son de utilidad:
* No se deben usar nombres muy largos para no exceder el máximo permitido por el lenguaje.
* Los nombres deben ser significativos para que reflejen la función de la variable.
* Las declaraciones de las variables deberían estar precedidas de un comentario que ayude a identificar su propósito.
* Se debe adoptar una convención de estilo para darle nombres consistentes a todas las variables del programa.

## Resumen de la lección

* Las variables son conceptos abstractos que permiten almacenar y recuperar datos sin tener que recordar los números de las posiciones de memoria.
* Las variable están asociadas con un nombre, una dirección, un tipo, un valor, un alcance y un tiempo de vida.
* A las variables se les puede declarar, inicializar, asignar valores y transferir valores de otras variables.
* Las inicializaciones de las variables pueden ser parte de la misma instrucción que las declara.
* Los nombre de las variables deben ser significativos para mejorar la legibilidad de los programas.

## Términos clave

* Alcance de una variable
* Declaración
* Variable

## Lecturas adicionales

* CCM > Las variables en C++

## Bibliografía

* 1 2 3 Joyanes Aguilar, Luis (2013). Fundamentos generales de programación (1.ª edición). Ciudad de México, México: McGraw Hill. p. 368. ISBN 978-607-15-0818-8.
* 1 2 3 4 Appleby, Doris; Vandekopple, Julius J. (1998). Programming Languages: Paradigm and practice [Lenguages de programación: Paradigma y práctica] (1.ª edición). México D. F., México: McGraw Hill. p. 492. ISBN 970-10-1945-8.
* 1 2 de St. Germain, H. James. «Variables». Jim's Computer Science Topics (en inglés). Utah, Estados Unidos. Consultado el 29 de mayo de 2016.
* Proyecto: Fundamentos de programación
* Anterior: Evaluación de la lección 4 — Variables y asignaciones — Siguiente: Evaluación de la lección 5