martedì 10 febbraio 2026

GDScript - Introduzione ai cicli (loop): istruzioni for e while, istruzioni break e continue

Godot - GDScriptI cicli (o loop) sono costrutti fondamentali di programmazione che servono ad eseguire una parte del codice più volte. Esistono due tipi di loop in GDScript: il ciclo for ed il ciclo while. Sono fondamentali per automatizzare la ripetizione di azioni nel gioco. Il ciclo for serve ad iterare su intervalli numerici o elementi di una struttura dati (array, dizionari ecc.), mentre il ciclo while esegue il codice finché una specifica condizione rimane vera.

Ciclo for

Il ciclo for permette di scorrere collezioni di dati o ripetere un'azione un numero prestabilito di volte. Si usa per iterare su ogni elemento di collezioni di dati (array, liste, dizionari, enumerazioni) o in base ad intervalli numerici precisi definiti tramite la funzione range().

La sintassi generale dell'istruzione è:

for <variabile> in <intevallo_o_struttura_dati>:
# istruzioni eseguite
blocco-istruzioni for
...
istruzioni non appartenenti al blocco for
...

La logica di funzionamento è la seguente: la variabile assume tutti i valori definiti in un intervallo numerico o in una struttra dati, ed il blocco di istruzioni viene eseguito una volta per ciascun valore assunto dalla variabile. La variabile di controllo del ciclo NON DEVE essere stata definita nello stesso intervallo di visibilità del ciclo.

Ciclo for in un intervallo numerico

Il modo più semplice di eseguire iterazioni è usare un intervallo numerico predefinito; gli intervalli numerici possono essere definiti in due modi:

  1. con un numero intero positivo n: in questo caso il valore della variabile di controllo assume i valori da 0 ad n-1 (n deve essere diverso da 0) con incrementi di 1 unità alla volta;
  2. usando la funzione predefinita range().

ESEMPIO 1 (stampa di valori in base ad un intervallo predefinito): la variabile i assume i valori da 0 a 2 (cioè 0, 1, 2), la variabile j assume valori da 0 a 3 (cioè 0, 1, 2, 3).

for

OUTPUT dell'esecuzione (estendi l'area di testo se necessario):


La funzione range()

In GDScript, la funzione range() è una funzione integrata usata principalmente per generare sequenze di numeri interi da scorrere con un ciclo for. Può generare intervalli numerici in tre modi:

  1. range(n) con n>0 (n numero intero): genera numeri interi da 0 a n-1 con incremento di 1 unità alla volta.
    NOTA: n è sempre escluso dai numeri generati;
  2. range(a, b) con a<b (a e b sono numeri interi): genera numeri da a (incluso) a b escluso con incrementi di 1 unità alla volta. In questo caso a e b possono essere negativi (uno o entrambi). Ad esempio range(2, 5) genera 2, 3, 4, range(-9, -6) genera -9, -8, -7,  range(-2, 1) genera -2, -1, 0.
    NOTA: b è sempre escluso dai numeri generati;
  3. range(a, b, k) con a, b e k numeri interi: genera numeri interi da a (incluso) fino a b escluso con incrementi di k unità alla volta. L'incremento k può essere sia positivo che negativo, ma diverso da 0 (se k=0 non viene generato alcun numero).
    NOTA: b è sempre escluso dai numeri generati.

NOTA BENE: nel caso (1) il numero n non è mai generato; analogamente, nei casi (2) e (3) l'estremo b è sempre escluso dai numeri generati.

ESEMPIO 1range(n)

range(n)

OUTPUT dell'esecuzione (estendi l'area di testo se necessario):

ESEMPIO 2range(a, b)

range(a, b)

OUTPUT dell'esecuzione (estendi l'area di testo se necessario):

ESEMPIO 3range(a, b, k)

range(a, b, k)

OUTPUT dell'esecuzione (estendi l'area di testo se necessario):

Per ulteriori informazioni sugli intervalli consultare la documentazione ufficiale: https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_advanced.html#for-while 

NOTA BENE: in GDScript  la funzione range() usata in un ciclo for, si limita a generare uno per uno i numeri dell'intervallo numerico. Tuttavia in generale, se non è usata in un for, range() restituisce un array di numeri interi. Inoltre range() non deve essere confusa con Range, una classe/nodo che serve a tutt'altro scopo.

Fino ad ora abbiamo visto l'uso del ciclo for solo su intervalli numerici, nei prossimi articoli ne vedremo l'uso con strutture dati. Per ulteriori informazioni sul ciclo for riferirsi alla documentazione ufficiale: https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html#for

Ciclo while

Il ciclo while permette di eseguire ripetutamente un blocco di codice finché una specifica condizione rimane vera. È la struttura adatta da usare quando non si conosce a priori il numero esatto di iterazioni necessarie (a differenza del ciclo for dove il numero di iterazioni è noto).

La sintassi generale dell'istruzione è:

while <condizione_booleana>:
# istruzioni eseguite
blocco-istruzioni while
...
istruzioni non appartenenti al blocco while
...

La logica di funzionamento è la seguente: il blocco di istruzioni del while viene eseguito ripetutamente fin quando il valore della <condizione_booleana> rimane vero (true).

Per ulteriori informazioni sul ciclo while riferirsi alla documentazione ufficiale: https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_basics.html#while 

ESEMPIO: stampare i numeri pari da 2 a 10.

while

OUTPUT dell'esecuzione (estendi l'area di testo se necessario):


Istruzione break

L'istruzione break permette di interrompere immediatamente l'esecuzione di un ciclo (while o for) prima che la sua condizione naturale venga soddisfatta. Quando il programma incontra un break, esce istantaneamente dal loop e prosegue con la prima riga di codice successiva al blocco del ciclo. È particolarmente utile in scenari come:

  • ricerche: consente di fermare un ciclo non appena si trova l'elemento desiderato (per esempio in un array o in un dizionario);
  • sicurezza: permette di interrompere forzatamente un'operazione se si verifica un errore o una condizione critica imprevista. 

Nel caso di cicli annidati (cicli contenuti in altri cicli), il break interrompe solo il ciclo più interno in cui è posizionato, lasciando intatta l'esecuzione dei cicli esterni.

ESEMPIO 1: stampa solo i numeri da 1 a 5 con un ciclo infinito

break con while

OUTPUT dell'esecuzione (estendi l'area di testo se necessario):


ESEMPIO 2: stampa i numeri in un intervallo ma si ferma se incontra lo 0

break con for

OUTPUT dell'esecuzione (estendi l'area di testo se necessario):


Istruzione continue

L'istruzione continue nei cicli (while oppure for) serve a saltare il resto del codice nell'iterazione corrente di un ciclo e passare immediatamente all'iterazione successiva.

ESEMPIO (continue nel ciclo for): stampa i multipli di 11 in un intervallo

continue nel for

OUTPUT dell'esecuzione (estendi l'area di testo se necessario):


ESEMPIO (continue nel ciclo while): stampa i numeri dispari minori di 10

continue nel while

OUTPUT dell'esecuzione (estendi l'area di testo se necessario):


Precedente Indice Successivo