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: