Vai al contenuto

📣 sulla piattaforma e-learning di Codice Inutile sono disponibili i miei corsi: Introduzione alla programmazione e 🆕 Introduzione all'Arte Generativa

Controlli condizionali: if, else if, else

📬 Per rimanere aggiornato sui prossimi articoli e su altri contenuti di creative coding, puoi iscriverti a questa newsletter. Per farlo è sufficiente inserire il tuo indirizzo e-mail nel campo qui sotto.

Puoi leggere l'archivio qui. Powered by TinyLetter

Abbandoniamo temporaneamente la casualità generata dalla funzione random(), che abbiamo visto la scorsa settimana, per immergerci nel mondo dei controlli condizionali.

Nella vita di tutti i giorni siamo condizionati da scelte: siamo abituati a pensare che se facciamo qualcosa allora accadrà qualcosa di specifico altrimenti (cioè nel caso in cui non si verifichi la condizione iniziale), non succederà nulla.

Il nostro obiettivo di oggi è avere la possibilità di creare una logica simile all’interno dei nostri programmi ovvero far eseguire determinate parti di codice solo al verificarsi di condizioni specifiche. Stiamo cercando di fare qualcosa di simile a quello che abbiamo già visto con mousePressed() e keyPressed() ma, questa volta, vogliamo avere ancora più controllo.

Espressioni e variabili booleane

I computer, purtroppo (o per fortuna), non sono macchine intelligenti e seguono una logica abbastanza semplice: una condizione può essere vera oppure falsa, in inglese true false. Nell’elenco dei tipi di variabili più comuni ho volutamente escluso quelle di tipo booleano: variabili, dunque, che possiamo creare e inizializzare e a cui possiamo assegnare solo uno di questi due valori.

Una cosa molto importante è che non può esistere in nessun programma una variabile che sia contemporaneamente vera falsa.

Operatori di confronto

Dal momento che ci troveremo spesso a lavorare con dei valori numerici, possiamo utilizzare gli operatori di confronto/comparazione:

  • Maggiore: >
  • Minore: <
  • Maggiore o uguale: >=
  • Minore o uguale: <=
  • Uguale: ==
  • Diverso: !=

Controlli condizionali

Per inserire un controllo condizionale è sufficiente tradurre in inglese le parole che ho sottolineato precedentemente e creare dei blocchi di codice con le classiche parentesi graffe: il se diventa, dunque, if mentre l’altrimenti si traduce con else.

if(condizione) {
/* La porzione di codice qui inserita verrà eseguita
* esclusivamente se la condizione sopra indicata
* sarà true, quindi vera.
*/
} else {
/* Nel caso in cui la condizione sopra inserita NON
* sia vera, verrà eseguita questa porzione di codice
*/
}

view raw
sketch_150930a.pde
hosted with ❤ by GitHub

Nel campo condizione dobbiamo inserire la nostra espressione di controllo.

Esempio 1:

/*
 * Controlli condizionali: if, else if, else
 * by Federico Pepe
 * http://blog.federicopepe.com
*/
void setup() {
  size(500, 500);
  stroke(255);
}
void draw() {
  if(mouseX > width/2) {
    background(0);
  } else {
    background(127);
  }
  line(width/2, 0, width/2, height); 
}

Con questo programma verifichiamo se la posizione X del mouse è maggiore della metà della larghezza. In caso positivo (true), lo sfondo della finestra verrà colorato di nero, in caso contrario (false) di un grigio scuro.

Per comodità ho creato una linea bianca che mi segnala esattamente il punto da oltrepassare per vedere lo sfondo cambiare colore. Avendo utilizzato la condizione maggiore se il valore di mouse X è pari a 250, la metà della larghezza, la condizione sarà ancora considerata false.

Esempio 2:

/*
 * Controlli condizionali: if, else if, else
 * by Federico Pepe
 * http://blog.federicopepe.com
 */
void setup() {
  size(500, 500);
  stroke(255);
}
void draw() {
  if (mouseX > 200) {
    background(200);
  } else if (mouseX > 100) {
    background(127);
  } else {
    background(0);
  }
  line(100, 0, 100, height);
  line(200, 0, 200, height);
}

In questo secondo esempio abbiamo due condizioni differenti: se la X del mouse è maggiore di 200 lo sfondo sarà grigio chiaro, altrimenti se (else if) è maggiore di 100 lo sfondo sarà grigio scuro, altrimenti sarà nero. È possibile concatenare molteplici condizioni else if per coprire tutti i casi che ci interessa verificare.

La prossima settimana faremo altri esempi per essere sicuri di aver appreso il funzionamento dei controlli condizionali; nel frattempo sbizzarritevi con i vostri sketch.

Articolo precedente

println() e random()

Articolo successivo

Le novità di Processing 3

Unisciti alla discussione

  1. Ciao, questo è il mio codice. Funziona perfettamente tranne quando schiaccio ”b” (che serve a fare triangoli) perché fa dei triangoli ma non rimangono e cancellano i quadrati e i cerchi che si fanno con il bottone sinistro e destro de mouse. Come posso fare?

    float radius;

    void setup() {
    background(255,255,255);
    size(700,700);

    }

    void draw() {
    if(mousePressed && (mouseButton == RIGHT)) {
    radius = random(10, 50);
    fill(random(255), random(255), random(255));
    ellipse(random(width), random(height), radius, radius);
    }
    if(keyPressed) {
    background(255,255,255); }
    if(mousePressed && (mouseButton == LEFT)) {
    radius = random(10,50);
    fill(random(255), random(255), random(255));
    rect(random(width), random(height), radius, radius);
    }
    if (keyPressed && (key == 'b' || key == 'B')) {
    radius = random(10,50);
    fill(random(255), random(255), random(255));
    triangle(random(width), random(height), random(width), random(height),random(width), random(height));
    }
    }

  2. Ciao Andrea, i triangoli non rimangono perché ogni volta che un tasto viene premuto il background si resetta:

    if (keyPressed) {
    background(255, 255, 255);
    }

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.