Joan Soler-Adillon || Programació: Conceptes
Despatx 234 || 935 421 484
![]()
----------------------------------------------------------------
----------------------------------------------------------------
PROGRAMACIÓN: CONCEPTOS || MASTER EN ARTES DIGITALES
Sessión 1 (03-X-07)
0. Presentaciones
1. ¿Qué es programar?
2. ¿Qué es Processing?
3. ¿Por qué Processing?
4. La interfície de Processing
5. "Hello World!"
6. "Hello World!" gráfico
7. La cuadrícula de pixels
8. Color
9. Funciones de dibujo I
10. Práctica
0.-PRESENTACIONES, HORARIO, CALENDARIO...
Yo soy...
Calendario: Conceptos de Programación consta de 9 sesiones que van del 3 de Octubre al 28 de Noviembre.
Dónde y cuando:
los miércoles de 18 a 20 en el aula 207.
1.-¿QUE ES PROGRAMAR?
En pocas palabras, programar es comunicarse con una máquina. Darle instrucciones para que ejecute las tareas que se le piden. Este proceso se realiza a través de uno de los lenguajes de programación existentes. C, C++, java, html, javascript, actoinscript, lingo, perl, php, phyton… son lenguajes de programación con diferentes características. Un poco como los lenguajes naturales, los de programación comparten estructuras básicas, y algunos se parecen más entre sí que otros.
Cuando programamos, tenemos que seguir una serie de pasos:
La comunicación con la máquina, en nuestro caso con un ordenador, se efectua a través de una seria de instrucciones: el código.
Este código se debe escribir con una sintaxis determinada (diferente en cada lenguaje) para que el ordenador lo entienda. Ha que tener en cuenta que, al fin y al cabo, todo lo que la máquina puede hacer es guardar valores, compararlos, y realizar operaciones aritmtéticas con éstos. Pero esto lo hace con una velocidad altísima, lo que combinado con la posibilidad de entrada y salida de datos (siendo los métodos más comunes para eso el teclado y ratón y el monitor), hace que tengamos nuestras manos una herramienta muy potente y flexible si sabemos comunicarnos con ella.
Aprender a programar es aprender a estableces esta comunicación. Es, en definitiva, aprender a hablar con una máquina. Y esto se hace (si es que se quiere una respuesta) a través de variables, algoritmos, estructuras de repetición, condicionales...
En el caso de esta introducción a la programación lo haremos con uno de los lenguajes más utilizados, flexibles y potentes: Java, aunque lo haremos a través de Processing. Un proyecto de Open-Source que simplifica en gran medida la interfície y la sintaxis para trabajar con este lenguaje, manteniendo prácticamente todas sus capacidades.
Como dicen sus creadores, Casey Reas y Ben Fry en la web del proyecto: Processing is an open source programming language and environment for people who want to program images, animation, and sound. It is used by students, artists, designers, architects, researchers, and hobbyists for learning, prototyping, and production. It is created to teach fundamentals of computer programming within a visual context and to serve as a software sketchbook and professional production tool. Processing is developed by artists and designers as an alternative to proprietary software tools in the same domain. Y para más detalles: Processing FAQ.
Así, Processing es:
Donde está?
Para este curso utilizaremos la versión: 0125.
Instalación:
Para Windows, la instalación és extremadamente fácil.
4.- La Interfície de Processing:
La Interfície de p5 es sencilla. Esto permite que uno pueda familiarizarse con ella muy rapidamente. Si la comparamos con la complejidad de interfícies como las de Flash o Director, la diferencia es muy considerable.
Para empezar, nos fijaremos en el siguiente menú:

6 opciones: run, stop, new, open, save, export.
Hay tres que no hace falta explicar. Sólo saber que cuando creamos un proyecto nuevo en Processing, creamos un Sketch, y el Sketch folder es la carpeta donde éste se guarda. En principio, el Sketch consta tan solo de la misma carpeta y de un archivo .pde que contiene el código. Luego se pueden añadir carpetas para archivos de imagen, video, etc.
RUN: Sirve para ejecutar el código. Con la mágia
de este simple botón nos ahorramos lo que en programación
se conoce como compilación.
Java (y por consiguiente Processing) es un lenguaje compilado. Eso representa que para ejecutar un programa escrito en Java, primero hay que hacer un paso previo (la compilación) que traduce el código que hemos escrito en otro mucho menos inteligible (aún!) para mentes humanas, pero mucho más cercano al ordenador: los famosos ceros y unos. Para poder compilar java hay que hacerlo con la línia de comandos, o bién con un deitor como Eclipse u otros de pago, que no son especialmente fáciles de intalar ni ejecutar. Además hay que instalar java en el ordenador, que siempre es una aventura.... En fin, sólo este botón hace que para empezar a programar con java nos podamos ahorrar aprendernos todos estos passos capaces de desanimar al más motivado.
STOP: Para el programa (of course!)
NEW: Crea un Sketch nuevo
OPEN: Abre un Sketch existente
SAVE: Guarda el Sketch con el que se está trabajando. Hay que utilizarlo mucho, por si acaso, pero aún más utilizar el "Save as" (ctrl+shift+s) para ir guardando versiones mientras trabajamos en nuestros proyectos.
EXPORT: Sirve para preparar el sketch para ser ejecutado a través de un navegador, ya sea en la web o simplemente fuera del entorno Processing.
Otra gran ventaja de trabajar con processing! Con java convencional, para ver el resultado de nuestro código via navegador (que es como funciona p5), hay primero que hacer un tipo de programa java específico: un applet. Eso p5 ya lo hace sólo. Pero después hay que compilar el código y escribir el html que contendrà el fichero y lo ejecutará via navegador. Todo eso, en Processing, es un click.Y además incluye en la página el código fuente del sketch, de acuerdo con la filosofía open-source del proyecto.
Tan sólo conociendo estos botones de la interfície (y el siempre útil “save as”) tenemos bastante como para empezar a trabajar con Processing, y possiblemente no necesitemos nada más durante estas primeras ocho sesiones.
Llegados a este punto, es hora por fin de pasar a la acción y empezar a escribir código!
Processing, como qualquier entorno de programación que se precie, tiene una consola. Un espacio donde, via texto, podemos recibir mensajes del programa y, cuando los haya, ver y descifrar los errores. La consola de p5 se encuentra debajo del todo en la interfície de Processing, con fondo negro.
Aquí es donde veremos los resultados de nuestro programa, lo que en el argot de los programadores se conoce como el “Hello World!”.
Ejecutarlo, en p5, es tan sencillo como escribir:
dentro la interfície de Processing, darle a "run” y… voilà! Habéis creado el primer programa!
Si havéis visto "Hello World!" escrito en blanco en la consola, el primer programa ha sido compilado y executado con éxito.
print es una instrucción que le dice a java que escriba el parámetro (lo que va entre paréntesis) a la consola. Si canviáis "Hello World!" por qualquier otra cosa y ejecutáis el programa veureéis que cambia el resultado..
Notad que hay un punto y coma al final de la línia.
EN JAVA, HAY QUE ACABAR CADA LÍNIA DE CÓDIGO CON PUNTO Y COMA;
Eso significa que hace falta un “;” al final de cada instrucción,
de hecho no necesariamente de cada línia tal y como la escribiremos
a la interfície de Processing. Es un error muy común olvidarse
punto y comas.
También és MUY IMPORTANTE al programar EL ORDEN en el que escribimos la instrucciones.
Así, el código
escribirá primero la frase en inglés y luego en catalán. Òbviamente aquí el ejemplo es trivial, pero la importancia es crucial a medida que el código se torna complejo.
También hauréis visto que en este segundo ejemplo la instrucción es prinln, con “ln”. Esto significa “print line”, y ejecuta un salto de línia después de escribir el parámetro.
Provad el código:
y veréis la diferencia.
Finalmente, habréis notado que cada vez que ejecutábamos el programa se abría una pequeña ventana en blanco (en gris, de hecho). Se trata de la ventana que Processing crea y es donde nos centraremos, sobretodo, a partir de ahora. Sin dejar nunca de tener un ojo a la consola, herramienta esencial para el programador, evidentemente lo que nos interesará es la ventana, ya que allí estará el resultado final de nuestra aplicación. Lo que el público o el visitante verá.
Para empezar a ver de qué estamos hablando, y ya que Processing es un entorno essencialmente gráfico, vamos a realizar otro tipo de "hello world!" haciendo un primer dibujo. Lo primero que vamos a hacer es dibujar una línea con:
Ahora sí que donde hay que mirar es a la ventana gris. Si canviáis éste código por el que sigue
y comparáis los resultados podéis empezar a suponer cómo está respondiendo el programa a nuestras intrucciones en este caso. A esto estará dedicada la segunda sessión de programación en una semana.
Processing, y java, trabajan píxel a píxel. Es decir, para dibuijar con p5 hay que tener en cuenta que trabajamos sobre una cuadrícula de píxels, que puede ser de 100x100 –el tamaño por defecto que vimos con los ejemplos del “Hello World!”– , 200×454, 1008×91… o lo que se quiera mientras la memória RAM de la máquina donde trabajamos lo pueda aguantar.
Para dibujar, por ejemplo, una línea, tenémos que especificar en el código de qué punto a qué otro de la cuadrícula tiene que ir. Para una esfera, el punto central y el radio, etc.
Veréis que trabajando así a veces llegaremos a ciertos dibujos que són muy característicos de entornos como Processing (y muy diferentes por ejemplo que los de Flash).
Cada píxel, pues, tiene su lugar en la cuadrícula. Esta posición se expresa mediante coordenadas X, Y, con el punto 0,0 en la esquina superior izquierda de la ventana.
Para entenderlo rápidamente, podéis mirar esta simulación donde moviendo el ratón veréis las coordenadas del píxel en el que estáis.
Su posición en pixelArray es un concepto avanzado que de momento podéis ignorar.
Lo que sí es interesante en la simulación es utilizar las teclas ‘n’ y ‘m’ para ver la simulación a distintas resoluciones y ver como, al duplicar el tamaño de la cuadrícula, el número total de píxels crece exponencialemente.
También podéis utilitzar el botón izquierdo del mouse para intentar dibujar formas geométricas en la resoluciones simuladas.
Cuando trabajamos con Processing, el ordenador entiende el color así:
AAAAAAAARRRRRRRRGGGGGGGGBBBBBBBB
aunque nosotros en realidad lo veremos así:
Esto significa que cada unos de los cuatro valores (rojo, verde, azul y alfa) ocupa 8 bits (un byte) en memoria.
Un byte tiene 256 valores possibles. Así pues, el color en Processing tendrá un rango de 0 a 255 por cada uno de estos cuatro valores.
El valor de un color en Processing se expressa así: color(255,0,0) pera un rojo puro, por ejemplo, o para un verde con alfa (transparéncia) del 50%: color(0,255,0,127). Si no se especifica el parámetro alfa, se entiende que su valor es máximo, 255, y que por lo tanto no hay transparéncia (la opacidad es total).
Pera ver estos valores de color, el color picker de la interfície de Processing puede ser muy útil.
Cuando un color está en la escala de grises (y por consiguiente sus valores R, G y B son iguales entre sí), se puede expressar con un solo valor: color(127);
Hay varias maneras de utilizar el color. De momento, veremos las funciones background(), stroke() y fill(). Dentro de sus paréntesis (es decir, como parámetros), pondremos el valor de color (en forma de uno, tres, o cuatro números de 0 a 255), para canviar, respectivamente, el colro de fondo de una ventana, el color del trazo en una forma geométrica, o su color de relleno.
Por ejemplo:
stroke(255,0,0); //para un trazo rojo.
fill(255,255,0,32); //para un color de relleno amarillo con muy poco alfa.
Volvemos ahora al “hello world” gráfico:
Escribid
en la interfície de Processing y clicad Run.
Veréis que una línia negra en la ventana gris que Processing ha abierto.
Una línia que va del punto 20,20, al 80,80 en una quadrícula de 100×100 píxels.
Si escribís
veréis, efectivamente, que se crea un rectángulo (quadrado en este caso) a partir del punto 20,20 y de 60 píxels de largo y ancho.
Y así successivamente con las siguientes formas geométricas:
line() pe: line(30, 20, 85, 75);
rect() pe: rect(30, 20, 55, 55);
ellipse() pe: ellipse(56, 46, 55, 55);
triangle() pe: triangle(30, 75, 58, 20, 86, 75);
Recordad que EN JAVA, HAY QUE ACABAR CADA LÍNIA DE CÓDIGO CON UN PUNTO Y COMA. Esto significa que hace falta “;” al final de cada instrucción, no necessàriamente, de hecho, de cada lína tal y como la escribimos en la interfície de Processing. Pero hay que tener esto siempre en cuenta ya que es un error muy común olvidarse algún punto y coma.
La primera práctica consiste en reproducir tres dibujos, combinando dibujo y color.
Los dibujos a reproducir son: s
Uno:
dos:
tres:
