2.5. Estructuras de los programas en Processing

Los programas dentro del entorno Processing pueden estructurarse de dos formas diferentes. Se pueden escribir programas que solamente sean un conjunto de líneas de código, una debajo de la otra, y de esta manera empezar con una acción e ir ejecutando cada línea secuencialmente, lo que se entiende como estructura lineal del programa. Esto no permite realizar repeticiones continuas de determinadas estructuras, o interactuar con el programa mediante, por ejemplo, algún dispositivo de entrada.

Una segunda opción es tener una estructura de programa basada en las funciones setup() y draw(). Estas dos funciones permiten definir algunos parámetros de configuración iniciales (setup, del inglés configuración) y luego realizar un conjunto de acciones de forma de lograr una estructura de repetición (también conocida como loop), válida para la interacción con el programa (draw, del inglés dibujo).

Sin estas funciones sería bastante difícil lograr generar una interacción, ya que de la primera forma el programa correría y se terminaría, y de la segunda forma el programa se iniciaría y siempre estaría esperando algún tipo de cambio, dentro del loop, para responder.

Como se mencionó arriba, la función setup() solo es llamada y ejecutada una sola vez cuando el programa se inicia. Esto se torna sumamente útil para definir características iniciales del programa, como por ejemplo un valor inicial, el tamaño de la ventana, el color de fondo de la ventana, el tipo de motor de render o la carga de determinadas imágenes.

Se debe tener en cuenta que las variables que se definen y crean dentro de la función setup() no estarán disponibles para las otras partes del programa, por lo que hay que predefinir si esas variables no serán utilizadas a posteriori.

La estructura sintáctica de la función setup() es la que se muestra en el siguiente ejemplo:

void setup()
{
//las declaraciones y funciones que deseemos ejecutar inicialmente
}

 

Con respecto a la función draw(), esta es llamada inmediatamente después de la función setup(), para ejecutar las líneas de código que en ella se encuentran, una y otra vez hasta que el programa se detiene o se utiliza la función noLoop() dentro de la misma.

Es importante saber que la función draw() se ejecuta una cantidad de veces por segundo. Esto puede ser controlado mediante la función delay(), la cual detiene la ejecución del programa una cantidad determinada de milisegundos, aunque hay que saber que esto detiene todo el programa, lo que puede afectar la fluidez del mismo. Para sortear este inconveniente se puede utilizar la función frameRate(), la cual establece la cantidad de cuadros por segundos (veces que repite la función draw()), sin detener el programa. Esta función, en general, se ubica desde el setup(), pero puede utilizarse en draw() para cambiar la dinámica del programa.

El valor por defecto de la cantidad de cuadros por segundo es de 60, pero todo depende de las características del procesador, memoria RAM y las capacidades de la placa de video que se está usando.

Para saber exactamente a cuántos cuadros por segundo se está ejecutando el programa, se utiliza la variable interna framerate. En esta variable se guarda durante todo el tiempo de ejecución del programa la cantidad de cuadros por segundo reales que se están ejecutando.

A continuación, un ejemplo del uso de la estructura setup-draw.

//Configuración
void setup()
{
//Opciones de configuración como el tamaño de la ventana
size(200,200);
//o el fondo de la misma
background(255,0,0);
}
//Loop
void draw()
{
//Dibujo una elipse
ellipse(100,100, 50,50);
}

 

Dos funciones muy útiles en Processing son print() y println(). La primera imprime un dato en una misma
línea, mientras que la otra lo hace en líneas separadas. La forma de utilizar estas funciones es generalmente
en el draw(). Un ejemplo de su uso es justamente con la variable frameRate, que se explico arriba:

void draw()
{
print(frameRate);
println(frameRate);
Ir

 

Actividad 6

Crear un programa simple mediante la estructura setup-draw. Utilizar la variable framerate para obtener la cantidad de cuadros por segundos que alcanza la computadora en la que se está trabajando. De ser posible, probar el mismo programa en otras computadoras y anotar los resultados. Tomar como punto de partida el siguiente ejemplo complementario: