* Depuración. Permite activar y configurar el depurador, que es una importante herramienta de diagnóstico de errores. Si lo activa, se podrá controlar el avance de la ejecución del código línea a línea, o detenerlo en los puntos de interrupción que determine. Una vez parado el programa, mostrará los valores de las variables en un panel separado.
* Herramientas. Contiene utilidades de diferente naturaleza necesarias para, por ejemplo, crear fuentes, encontrar el código de un determinado color, etc.
* Ayuda. Como su nombre indica, contiene todo tipo de recursos que ayudarán tanto en el aprendizaje como en el uso del IDE. Tiene enlaces a páginas web que ofrecen una explicación detallada del entorno, así como la resolución de errores, preguntas frecuentes, tutoriales, etc.
Las opciones de dichos menús se irán estudiando a lo largo del libro según se vayan utilizando. Ahora únicamente verá las correspondientes al menú Archivo, ya que serán imprescindibles para empezar a trabajar con Processing.
* Nuevo. Crea un programa en una nueva ventana, a la que nombrará con la fecha actual usando el formato «sketch_YYMMDDa».
* Abrir. Abre el archivo que contiene un programa en una nueva ventana. Los archivos Processing tienen la extensión . pde . Dichos programas o sketchs deberán estar contenidos obligatoriamente dentro de un sketch folder , que es una carpeta con el mismo nombre del archivo del programa (sin la extensión).
* Reciente. Muestra la lista de archivos cerrados recientemente.
* Sketchbook . Este término, que podría traducirse como cuaderno de bocetos ( sketchs o programas Processing), hace referencia a la carpeta donde se almacenan los sketch folders.
* Ejemplos. Abre una nueva ventana para mostrar la lista de programas de ejemplos de todas las librerías que tenga instaladas, sean nativas o importadas. Os animo a que ejecutéis algunos de dichos ejemplos para daros cuenta del enorme potencial de este lenguaje.
* Cerrar. Cierra el sketch que está visualizando. Si este es el último que está abierto, le preguntará si desea salir. Para evitarlo, utilice directamente la opción de Salir.
* Guardar. Guarda el archivo.
* Guardar como. Guarda el programa, dándole la opción de poner un nombre diferente al archivo que lo contenga. No reemplazará la versión anterior de dicho programa.
* Exportar aplicación. Exporta una aplicación Java como un archivo ejecutable.
* Configurar página. Define las opciones de impresión del código.
* Imprimir. Imprime el código del editor de texto.
* Preferencias. Configura aspectos de funcionamiento del entorno, como la ubicación predeterminada del sketchbook , el tamaño de la fuente utilizada en el texto o, muy importante, el idioma.
* Salir. Sale del IDE Processing cerrando todas las ventanas.
3
PROGRAMACIÓN CON PROCESSING
Aunque se hable de la programación de Arduino como si de un lenguaje específico se tratara, eso realmente no es así, ya que esta se hace en C++. Lo que sucede es que Arduino incorpora dentro de su IDE un conjunto de librerías que facilitan la programación de los pines de entrada y salida asociados a sus puertos analógicos y digitales. En Processing sucede algo similar, solo que ahora se programa en Java y el foco es el diseño gráfico, no el manejo de puertos. Además, tal como apunté anteriormente, Arduino no deja de ser un proyecto escindido de Processing, por lo que su filosofía de trabajo es similar.
Aunque Java y C++ son lenguajes diferentes, el uso de variables, estructuras de control, operadores o manejo de funciones tienen una sintaxis similar, por lo que podrá reutilizar los conocimientos de programación ya adquiridos con Arduino. Lo que sea específico de Processing se irá explicando a lo largo del libro según se vaya necesitando.
Finalmente, indicar que la referencia del lenguaje Processing se localiza en https://processing.org/reference/ . Este será el sitio al que deberá acudir para conocer los detalles de cualquiera de las funciones que lo componen.
3.1 FUNCIONES SETUP() Y DRAW()
Un programa Processing se llama sketch , algo que podría traducirse como boceto o borrador. Los sketchs se almacenan en carpetas que se llaman sketch folders y, estos a su vez, en lo que se conoce como sketchbook , otra carpeta a nivel superior que se usa como ubicación predeterminada para guardar todos sus proyectos. Se puede acceder a los sketchs almacenados en el cuaderno de bocetos desde Archivo
sketchbook . Naturalmente, desde Archivo
Abrir... se permite abrir un sketch ubicado en cualquier otra carpeta del sistema.
Al igual que sucedía con Arduino, los sketchs o programas Processing se componen de dos grandes bloques de código: setup()y draw(). Ambos bloques, en realidad, son funciones que agrupan un conjunto de instrucciones capaces de realizar una tarea específica. En general, una función toma como entrada una serie de argumentos, que son los datos que necesita para realizar dicha tarea, y devuelve un resultado. En el caso que ocupa, setup()y draw()no toman argumentos de entrada ni tampoco devuelven ninguna salida. Por eso, se declaran de esta forma:
La palabra reservada void indica que estas funciones no devuelven ningún resultado tras su ejecución. Los paréntesis vacíos indican que no tienen argumentos de entrada, es decir, no necesitan que les pase ningún dato para poder realizar su tarea. Las instrucciones que componen cada función van enmarcadas entre llaves.
Los nombres de las funciones (igual que el de las variables) son case-sensitive , lo que significa que un carácter en mayúsculas es diferente del mismo en minúsculas. Por ejemplo, la función leeSensor()es diferente de leesensor(). Por supuesto, un nombre nunca puede llevar espacios.
NOTA.En Java existe una serie de convenciones de nomenclatura a la hora de escribir código que, aunque no son de obligado cumplimiento, se recomienda seguir para mejorar su legibilidad. En el caso de los nombres de las funciones (también el de las variables) suele usarse una nomenclatura llamada «camel case» que consiste en nombrar la función empezando por minúsculas y, en vez de utilizar caracteres como «-» o «_» para separar nombres compuestos, cada componente del nombre se empieza por mayúsculas. Por ejemplo, una función que obtiene los datos de un sensor podría llamarse obtieneDatosSensor. Es precisamente el perfil en forma de joroba de camello que muestra una palabra al mezclar mayúsculas y minúsculas lo que da nombre a esta nomenclatura.
Las instrucciones que componen la función setup()se ejecutan una única vez. Por ese motivo, esta función se utilizará para definir las condiciones iniciales del entorno como, por ejemplo, el tamaño de la pantalla. Solo puede haber una función de setup ()en cada programa y no se debe volver a llamar después de su ejecución inicial.
Por el contrario, las instrucciones de la función draw()se ejecutarán una y otra vez de forma repetida. Serán las encargadas de realizar el refresco continuo de la imagen que se muestra en pantalla, al igual que los fotogramas de una película. Cada uno de dichos fotogramas se pintará en un ciclo del bucle, en el que también se atenderán los posibles eventos de teclado, ratón, comunicaciones, etc., que permitirán la interactividad del programa.
Читать дальше