domingo, 7 de febrero de 2016

Definir e Inicializar una variable

En esta entrada explicaré la diferencia entre Definir e Inicializar una variable, mucha veces se confunden los conceptos porque ambos se pueden realizar en una misma instrucción:

Ejemplo:
int a = 0; 

Aprendemos a crear variables de forma repetitiva y a veces es necesario saber la diferencia entre ambos conceptos para lograr una programación más limpia (no crear variables en exceso pudiendo reutilizarlas).

Definir una variable
Esto es reservar un espacio en la memoria para almacenar valores de un determinado tipo. Para definir una variable sólo es necesario saber el tipo de la variable y el nombre que queremos asignar.

Ejemplo:
int a; //int es el tipo y "a" es el nombre que he asignado a la variable.

Cuando realizamos esta instrucción, lo que hace el programa es reservar un espacio de memoria para la variable "a" del tamaño que marca el tipo (el tipo int puede ser de 2 bytes o 4 bytes dependiendo del procesador).

La variable "a" tiene un espacio para guardar valores, pero aún no hemos guardado nada en ese espacio.
Podría ser que un anterior programa que utilizara ese mismo espacio de memoria, almacenara algún dato y luego al terminar de ejecutar dejara en ese espacio un valor, es importante que cada programe limpie los espacios reservados para sus variables.

Inicializar una variable
Esto es limpiar los espacios asignados a las variables en la definición para que queden preparados para trabajar con ellos. Para inicializar una variable utilizamos la instrucción de asignación, asignando un valor fijo o el valor de otra variable.

Ejemplo:
a = 0; //inicializamos la variable "a" con un valor fijo
int b; //definimos la variable "b"
b = a; //inicializamos la variable "b" con el valor de la variable "a"

Sabiendo la diferencia entre Definir e Inicializar una variable, ahora si podemos simplificar ambas instrucciones en una sola:

Ejemplo:
int a; //Definir variable "a"
a = 0; //Inicializar variable "a"
int b = a; //Definir e Inicializar la variable "b" en una sola instrucción

¿Cómo podemos reutilizar una variable sabiendo la diferencia entre Definir e Inicializar?
Un ejemplo sencillo es imprimir un sucesión de números de forma creciente y de forma decreciente:
//Definimos una variable
int numero;
//inicializamos el valor de la variable leyendo el valor desde consola
scanf("%d",&numero);
//impresión decreciente
for(int i=numero; i>0;i--) printf("%d",i);
//impresión creciente
for(int i=0; i<=numero;i++) printf("%d",i);

La variable "i" definida en el primer for no es la misma variable definida en el segundo for, cada una existe sólo en el ámbito de cada for, pero podríamos hacer que sea una única variable y reutilizar en ambos bloques de instrucciones:
//Definimos una variable
int numero;
//inicializamos el valor de la variable leyendo el valor desde consola
scanf("%d",&numero);
//definimos e inicializamos la variable "i"
int i = numero;
//impresión decreciente: no hace falta ni definir ni inicializar nuevamente la variable "i"
for(; i>0;i--) printf("%d",i);
//impresión creciente: no hace falta ni definir ni inicializar nuevamente, el for anterior dejó la 
//variable "i" en 0
for(; i<=numero;i++) printf("%d",i);










No hay comentarios:

Publicar un comentario