Variables: Contadores, Acumuladores, Banderas
Podemos utilizar las variables para comportamientos complejos como los descritos a continuación.
1 Contadores
Los “contadores” son variables que utilizamos para contar: ¿qué es “contar”?
Sumarle uno a la cantidad que teníamos antes, y almacenar esa nueva cantidad.
Como en general contamos entidades enteras, conviene usar variables de tipo int
.
Para usar una variable como contador, el primer paso es declararla y asignarle un valor inicial (normalmente 0) :
int contador = 0;
El otro paso es la expresión que “cuenta” cuando sucede lo que deseamos contar:
// suma 1 a la cantidad que tenías antes, y reemplázala
1; contador = contador +
Esta expresión que “cuenta” también puede escribirse de estas dos formas que son un poco más compactas:
1; // súmale 1 al valor del contador contador +=
o
// incrementa en 1 el valor del contador contador++;
2 Acumuladores
Los acumuladores se comportan de manera similar a los contadores, pero en lugar de sumar un “1” entero, pueden sumar o restar otras cantidades.
Solemos usar este tipo de variables para representar posiciones, tamaños, colores, por lo que podemos utilizar puntos decimales (variables de tipo float
).
Al igual que los contadores, los declaramos e inicializamos:
float posicion = 100;
Y después les podemos incrementar o decrementar de cualquiera de estas formas:
// opciones de incremento:
0.5;
posicion = posicion + 0.5;
posicion +=
// opciones de decremento:
0.5;
posicion = posicion - 0.5; posicion -=
3 Banderas (flags)
Las variables “bandera” nos sirven para indicar y almacenar que algún evento o condición se cumplió.
Aquí solemos usar variables de tipo boolean
.
3.1 Activación
Por ejemplo, si queremos que inicialmente nuestro sketch esté estático, y al dar click empiece a moverse, podemos usar una bandera que inicialmente esté desactivada (en false
) y que se active (en true
) cuando demos click. La bandera se quedará así hasta que sea desactivada.
// inicializa la bandera desactivaa
boolean enMovimiento = false;
float posicion = 0;
void setup(){
size(500, 500);
}
void draw(){
// activa la bandera cuando el mouse se presione
if( mousePressed ){
true;
enMovimiento =
}
// consulta el estado de la bandera,
// e incrementa la posición si está activada
if( enMovimiento ){
0.5;
posicion = posicion +
}
// dibuja un rectángulo
rect( posicion, height/2, 100, 100 );
}
3.2 Alternación (toggle)
Este ejemplo es similar al anterior, pero con cada click el estado de la bandera se invierte.
El ejemplo hace uso del operador !
(NOT) para “invertir” el valor de la variable.
[Variables y expresiones booleanas]
También usa la función del evento de mousePressed()
para que la inversión solo suceda una vez por click.
// inicializa la bandera desactivaa
boolean enMovimiento = false;
float posicion = 0;
void setup(){
size(500, 500);
}
void draw(){
// consulta el estado de la bandera,
// e incrementa la posición si está activada
if( enMovimiento ){
0.5;
posicion = posicion +
}
// dibuja un rectángulo
rect( posicion, height/2, 100, 100 );
}
void mousePressed(){
// "togglea" la bandera cuando el mouse se presione
if( mousePressed ){
// asigna a enMovimiento el valor opuesto al que tenía
enMovimiento = !enMovimiento;
} }
4 Banderas numéricas
También podemos usar variables numéricas (normalmente de tipo int
) para indicar y almacenar dos o más posibles opciones a las que como personas programadores asignaremos números.
Por ejemplo, podemos tener una variable llamada direccion
, y definir que si su valor es 1 indica que hay que moverse hacia abajo, y si es 0 hacia arriba:
if( direccion == 1 ){ // abajo
0.5;
y +=
}else if( direccion == 0){ // arriba
0.5;
y -= }
Otro ejemplo, podemos tener una variable llamada estado
que va a definir el color de un círculo (por ejemplo un semáforo).
if ( estado == 1 ){
fill( 0, 255, 0 ); // color verde
}else if ( estado == 2 ){
fill( 255, 255, 0 ); // color amarillo
}else if ( estado == 3 ){
fill( 255, 0, 0 );
}