
Variabili in Processing: dichiarazione, tipi e utilizzo
Una variabile è uno spazio di memoria con un nome, in cui possiamo memorizzare dati da usare e modificare nel corso del nostro programma. In Processing, le variabili sono fondamentali per personalizzare il comportamento degli oggetti grafici, mantenere lo stato del programma, contare, animare, verificare condizioni e molto altro.
1. Cos’è una variabile?
Potete immaginare una variabile come una scatola etichettata in cui potete inserire (e cambiare) un valore. Ogni scatola ha:
- un nome
- un tipo di dato
- un valore (che può cambiare)
Sintassi base:
tipo nome = valore;
Esempio:
int lato = 50; // dichiara una variabile intera chiamata "lato" e le assegna il valore 50
2. Tipi principali di variabili in Processing
Numeri interi – int
Valori numerici senza decimali.
int x = 100;
Numeri con virgola – float
Numeri decimali.
float trasparenza = 127.5;
Valori logici – boolean
Può essere solo true (vero) o false (falso).
boolean attivo = true;
Testi – String
Sequenze di caratteri tra virgolette.
String saluto = "Ciao mondo!";
3. Usare variabili per disegnare
Possiamo usare le variabili per controllare dimensioni, posizione, colore, e altri aspetti grafici.
Esempio: dimensione variabile per un cerchio
int diametro = 100;
void setup() {
size(400, 400);
background(255);
fill(0, 150, 255);
ellipse(width/2, height/2, diametro, diametro);
}
Modifica il valore di diametro per vedere come cambia il disegno.

4. Variabili e animazioni
Le variabili possono essere aggiornate nel tempo per creare un movimento.
Esempio: far muovere un cerchio
float x = 0;
void setup() {
size(400, 400);
}
void draw() {
background(255);
fill(255, 0, 0);
ellipse(x, 200, 50, 50);
x = x + 2; // ogni frame aumenta la posizione
}

5. Variabili booleane
Le variabili boolean sono utilissime per gestire condizioni, stati on/off, pulsanti, visibilità, ecc.
Esempio: mostrare o nascondere un oggetto con un clic
boolean visibile = true;
void setup() {
size(400, 400);
}
void draw() {
background(255);
if (visibile) {
fill(0, 255, 0);
rect(150, 150, 100, 100);
}
}
void mousePressed() {
visibile = !visibile; // inverte il valore: true -> false -> true ...
}

6. Ambito delle variabili (scope)
In Processing (come in altri linguaggi), una variabile può essere:
- Globale: dichiarata fuori da tutte le funzioni: visibile ovunque.
- Locale: dichiarata dentro una funzione: esiste solo lì dentro.
Esempio:
int x = 100; // variabile globale
void setup() {
int y = 200; // variabile locale
println(x); // OK
println(y); // OK
}
void draw() {
println(x); // OK
// println(y); // Errore! "y" non esiste qui
}

Le variabili locali sono più sicure (non rischi conflitti),
ma le globali sono utili per memorizzare valori tra i frame (es. posizione, stato, punteggi…).
Se nel programma togliamo il commento a:
// println(y); // Errore! "y" non esiste qui
Si otterrà un messaggio di errore:

La variabile y non esiste.
Esempio:
int raggio = 50; // Variabile globale: visibile ovunque nel programma
void setup() {
size(400, 400);
background(255);
// Possiamo usare raggio anche qui
ellipse(width/2, height/2, raggio<em>2, raggio</em>2); // Disegna un cerchio iniziale
}
void draw() {
// Definiamo una variabile locale all'interno di draw()
int bordo = 10; // Questa variabile esiste solo dentro draw()
// Usiamo sia la variabile globale che quella locale
strokeWeight(bordo);
stroke(0);
noFill();
ellipse(mouseX, mouseY, raggio<em>2, raggio</em>2); // Cerchio che segue il mouse
}
void mousePressed() {
// Qui possiamo usare raggio, ma NON possiamo usare "bordo" perché era locale a draw()
raggio = raggio + 5; // Ogni clic aumenta il raggio del cerchio
// Errore se scriviamo:
// println(bordo); // NON FUNZIONA: bordo esiste solo dentro draw()
}
raggio è dichiarata fuori da tutte le funzioni, quindi è globale e può essere usata in setup(), draw(), e mousePressed().
bordo è una variabile locale creata dentro la funzione draw(). Questo significa che:
- è accessibile solo dentro
draw() - non può essere usata in
mousePressed()osetup()— altrimenti il programma darà errore

Analogia semplice per comprendere meglio
Immagina che le funzioni siano stanze chiuse. Una variabile globale è un oggetto nel corridoio comune: tutti possono vederlo.
Una variabile locale, invece, è un oggetto lasciato in una stanza specifica: chi sta fuori da quella stanza non può usarlo né vederlo.
7. Esercizi per approfondire
Esercizio 1: usare due variabili larghezza e altezza per disegnare un rettangolo
// Dichiarazione delle variabili globali
int larghezza = 120;
int altezza = 80;
void setup() {
size(400, 400);
background(240);
fill(0, 100, 255); // Colore blu
noStroke(); // Nessun contorno
// Disegna un rettangolo centrato usando le variabili
rectMode(CENTER);
rect(width/2, height/2, larghezza, altezza);
}

Esercizio 2: usare una variabile boolean per alternare tra un cerchio e un quadrato cliccando
// Variabile globale booleana per decidere la forma
boolean disegnaCerchio = true;
void setup() {
size(400, 400);
background(255);
}
void draw() {
background(255); // Cancella lo sfondo ad ogni frame
fill(255, 0, 0);
noStroke();
// Disegna una forma diversa a seconda della variabile booleana
if (disegnaCerchio) {
ellipse(width/2, height/2, 100, 100);
} else {
rectMode(CENTER);
rect(width/2, height/2, 100, 100);
}
}
void mousePressed() {
// Inverti il valore della variabile: true → false → true...
disegnaCerchio = !disegnaCerchio;
}
Ogni volta che l’utente clicca con il mouse, la variabile booleana disegnaCerchio cambia stato. Questo ci permette di alternare la forma disegnata, creando un comportamento interattivo semplice ma efficace.

Esercizio 3: aumentare gradualmente la trasparenza di un rettangolo usando una float
// Variabile globale per il livello di trasparenza
float alpha = 0;
void setup() {
size(400, 400);
background(255);
noStroke();
}
void draw() {
background(255); // Pulisce lo sfondo ad ogni frame
// Imposta un colore con trasparenza crescente
fill(0, 0, 255, alpha);
rect(100, 100, 200, 200);
// Incrementa gradualmente la trasparenza fino a 255
if (alpha < 255) {
alpha += 1; // puoi provare anche 0.5 per un effetto più lento
}
}
La variabile alpha controlla il livello di trasparenza (da 0 a 255). In ogni fotogramma (draw()), il valore aumenta, rendendo il rettangolo sempre più visibile, come in una fade-in animation.

Buon Coding a tutti 🙂
