Un poco de teoría: Datos y variables (II)

Volver al índice

¿Qué es una variable?

Básicamente, y sólo para que nos entendamos, una variable es un contenedor de datos, una caja vacía esperando a que la rellenemos. Como existen distintos tipos de datos (ver entrada anterior) cada tipo de dato necesita de una cantidad de memoria específica y por tanto las cajas pueden ser de distintos tamaños, formas y colores. Lo de “formas y colores” es una licencia que me permito para dejar claro que no vale meter un dato de tipo X en una caja que ha sido concebida para albergar datos de tipo y, aunque nos parezca a priori que cabe.
Cada caja va con su tipo de datos, como en los juegos de encajar piezas en huecos con su forma y color a los que hemos jugado todos de pequeños.

20130321-171559.jpg

¿Para que sirve una variable?

Si decidimos que un objeto se va a desplazar 10 píxeles en cada frame, es muy útil almacenar esa cantidad en una variable, para que cada vez que necesitemos utilizarla no tengamos que recordar el valor exacto. Pero es que además, podríamos querer cambiar la velocidad de este objeto más adelante. Aún mejor, podríamos decidir que el objeto tiene una aceleración, que le suma una cierta cantidad, 5 por ejemplo, al número de píxeles que desplazamos nuestro gráfico en cada fotograma.
De hecho, por esta razón se llaman variables, porque una vez definidas e inicializadas a un determinado valor, se puede modificar este.

Como imaginaréis esta es una tarea bastante habitual en la programación de animaciones. Pero la utilización de variables es tan habitual en todas las tareas de programación, sea la aplicación del tipo que sea, que no se puede concebir ésta sin el uso de las mismas.

Son la base de la programación.

Definir o declarar una variable

Las variables se definen o declaran con una sentencia que comienza por la palabra clave var seguida del mombre que le queramos dar a la variable. Depués es obligatorio especificar el tamano, forma y color de la misma, o sea, el tipo de dato que va a albergar. Esto se hace escribiendo : a continuación del nombre y acto seguido el tipo de datos. Por ejemplo:

var velocidad : Number;

Esta sentencia crea una caja de tipo Number (para números decimales), pero no inicializa la variable, no le asigna un valor. Esto significa que el sistema
le va a asignar uno por defecto.

El valor de una variable no inicializada depende del tipo de datos que tenga. En la tabla siguiente se describen los valores predeterminados de las variables, clasificados por tipo de datos:

Tipo de datos Valor predeterminado
Boolean false
int 0
Number NaN
Object null
String null
uint 0
No declarada (equivalente a anotación de tipo *) undefined
Todas las demás clases o tipos null

Aunque de momento no le vamos a encontrar utilidad directa a estos valores por defecto, es importante conocerlos, porque aparecen en algunos de los errores que arroja el compilador cuando algo está mal y esto nos puede dar información valiosa que nos ayudará a corregir nuestros fallos. También hay ocasiones en las que cuando trazamos el valor de una variable, aparecen estos valores por defecto y por lo que necesitamos conocerlos para averiguar que es lo que está pasando.

Además, el valor por defecto de algunos tipos de dato, como por ejemplo Number nos obligan a inicializar las variables antes de poder realizar operaciones con ellas, como veremos en el siguiente apartado.

Inicializar o asignar valor a una variable

Una vez declarada o definida la variable podemos asignarle un valor, lo que se denomina inicializar la variable.

var velocidad : Number;

// ...

velocidad = 10;

Fijáos en que aquí ya no se antepone var a la variable, ni se especifica de nuevo su tipo de datos. No es necesario porque la variable ya ha sido definida.

Pero lo más habitual es definir e inicializar las variables en la misma sentencia:

var velocidad : Number =  10;

Primero, porque nos ahorramos una línea de código y, segundo, porque evitamos errores asociados a que Number tiene como valor por defecto NaN.

Veamos un ejemplo. Si no inicializamos velocidad e intentamos realizar una operación matemática sencila antes de haberle asignado un valor, e intentamos trazar el resultado:

var velocidad : Number;

// ...

velocidad = velocidad + 10;

trace("Incrementando la velocidad, ahora velocidad = ", velocidad);   

obtendremos una respuesta no esperada:

Incrementando la velocidad, ahora velocidad = NaN

Y es que ese valor por defecto NaN significa que inicialmente velocidad no es un número, no hasta que nosotros le demos un valor. Por eso no le podemos sumar 10 hasta que la hayamos inicializado. Así que la forma más correcta y segura de escribir el código anterior sería:

var velocidad : Number = 0;
trace("La velocidad inicial es", velocidad);  
// ...

velocidad = velocidad + 10;

trace("Incrementando la velocidad, ahora velocidad = ", velocidad);   

Lo que aperecerá en la consola ahora sí que es lo que esperábamos

La velocidad inicial es 0
Incrementando la velocidad, ahora velocidad = 10

Así que si quereis evitar errores, sobre todo al principio, no olvidéis inicializar las variables cuando las declaréis.

Volver al índice

Actualización
Os dejo aquí un video que he encontrado que stá bastante bien y que cubre más o menos el mismo tema que este post:

También os dejo este otro, que explica como realizar algunas operaciones con estas variables:

Ejercicios:

  1. Repetir los ejemplos de los videos (Aquellos que me los entreguen recibirán su recompensa en el apartado de actitud de la nota)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *