Summary: Introductory lecture on the use of the "processing" language and environment for teaching media processing and interaction design (in Italian).
Nota: You are viewing an old version of this document. The latest version is available here.
Processing è un linguaggio ed un ambiente di sviluppo orientato all' interaction design . Nel corso Media Processing in Processing (MPP) processing è uno degli strumenti principali utilizzati per introdurre elementi di elaborazione di suoni e immagini. Processing è una estensione di Java e che supporta molta delle strutture Java con una sintassi semplificata.
Processing può essere utilizzato in tre:
| applet senza naso |
|
| applet con naso |
|
| applet con naso colorato |
|
I programmi processing possono essere convertiti in applet Java. Per fare ciò è sufficiente andare nel menu File e scegliere Export to web. Il risultato finale sarà dunque la creazione di tre file, i primi due generati automaticamente:
Una variabile è un
puntatore a una locazione di memoria, e può riferirsi a valori
primitivi (int, double, ecc.)oppure
ad oggetti o array (tabelle di elementi di un tipo primitivo).
L'operazione di assegnamento b = a produce
a in
b.int[] arrayDiInteri = new int[10];
if (i == NMAX) {
println("finito");
}
else {
i++;
}
int i = 0; //contatore intero
while (i < 10) { //scrivi i numeri da 0 a 9
println("i = "+ i);
i++;
}
for (int i = 0; i < 10; i++) { //scrivi i numeri da 0 a 9
println("i = "+ i);
}
int MAX = 10;
float[] tabella = new float[MAX];
for (int i = 0; i < MAX; i++)
tabella[i] = random(1); //random numbers between 0 and 1
println(tabella.length + " elementi:");
println(tabella);
Le funzioni consentono un approccio modulare alla
programmazione. In Processing, in modalità di programmazione
intermediate, si possono definire
funzioni oltre alla setup() e
draw(), usabili all'interno della
setup() e della draw().
int raddoppia(int i) {
return 2*i;
}
Una funzione è caratterizzata dalle seguenti entità (con riferimento all'esempio) :
int)raddoppia)i)return 2*i)Una classe è definita da un insieme di dati e funzioni. Un oggetto è una istanza di una classe. Viceversa, una classe è una descrizione astratta di un insieme di oggetti.
Dot myDot;
void setup() {
size(300,20);
colorMode(RGB,255,255,255,100);
color tempcolor = color(255,0,0);
myDot = new Dot(tempcolor,0);
}
void draw() {
background(0);
myDot.draw(10);
}
class Dot
{
color colore;
int posizione;
//****CONSTRUCTOR*****//
Dot(color c_, int xp) {
colore = c_;
posizione = xp;
}
void draw (int ypos) {
rectMode(CENTER);
fill(colore);
rect(posizione,ypos,20,10);
}
}
Una classe è caratterizzata dalle seguenti entità (con riferimento all'esempio) :
Dot)colore, posizione)Dot())draw())Un oggetto (istanza di una classe) è dichiarato nello stesso modo in cui si dichiara una variabile, ma ad esso va poi allocato uno spazio (come si è visto per gli array) tramite il suo costruttore (con riferimento all'esempio).
Dot myDot;)myDot = new Dot(tempcolor,0))myDot.draw(10);) Con il metodo draw()
seguente si vuole dipingere lo sfondo della finestra di un
grigio la cui intensità dipenda dalla posizione orizzontale
del puntatore del mouse.
void draw() {
background((mouseX/100)*255);
}
Il codice però non fa quello che ci
si aspetta. Perché?
La variabile mouseX è di
tipo int, e quindi la divisione a cui è
sottoposta è di tipo intero. E' necessario fare un type
casting da int a float
mediante (float)mouseX.
Cosa stampa il seguente frammento di codice?
int[] a = new int[10];
a[7] = 7;
int[] b = a;
println(b[7]);
b[7] = 8;
println(a[7]);
int c = 7;
int d = c;
println(d);
d = 8;
println(c);
7
8
7
7