Presentazione del linguaggio – 2

Istruzione if

Un’istruzione if assume la forma

if (<espressione>) <istruzione>

oppure

if (<espressione>) <istruzione> else <istruzione>

L’istruzione può essere anche un blocco.

L’espressione verrà valutata.
Se il valore (arrotondato) è <=0 (false) viene eseguita l’istruzione dopo else, altrimenti (true) viene eseguita l’altra.

È una buona abitudine racchiudere sempre tra prentesi graffe l’istruzione dopo l’if.
Quindi è meglio utilizzare

if (<espressione>)
{
    <istruzione>
}
else
{
    <istruzione>
}

 

Esempio

Il programma seguente muove l’oggetto verso il centro (x=200) dello schermo.

{
    if (x<200) { x += 4     } else { x -= 4 };
}

Istruzione repeat

Un’istruzione repeat ha la forma

repeat (<espressione>) <istruzione>

L’istruzione è ripetuta il numero di volte specificato dal valore arrotondato dell’espressione.

Esempio

Il programma seguente crea cinque palle in posizioni casuali.

{
    repeat (5) instance_create(random(400), random(400), ball);
}

Istruzione while

Un’istruzione while ha la forma

while (<espressione>) <istruzione>

Finché l’espressione è true, l’istruzione (che può essere anche un blocco) viene eseguita.

Presta cura al tuo ciclo while.
Puoi facilmente realizzare un ciclo infinito, nel qual caso il tuo gioco si bloccherà e non reagirà più ad alcun input.

Esempio

Il programma seguente cerca di sistemare l’oggetto corrente in una posizione libera (si tratta della stessa azione di muovere un oggetto in una posizione casuale).

{
    while (!place_free(x, y))
    {
        x = random(room_width);
        y = random(room_height);
    }
}

Costrutto do

Un’istruzione do ha la forma

do <istruzione> until(<espressione>)

L’istruzione (che può essere anche un blocco) viene eseguita finché l’espressione non è vera.
L’istruzione viene eseguita almeno una volta.

Presta cura al tuo ciclo do.
Puoi facilmente realizzare un ciclo infinito, nel qual caso il tuo gioco si bloccherà e non reagirà più ad alcun input.

Esempio

Il programma seguente cerca di sistemare l’oggetto corrente in una posizione libera (si tratta della stessa azione di muovere un oggetto in una posizione casuale).

{
    do
    {
        x = random(room_width);
        y = random(room_height);
    }
    until (place_free(x, y))
}

Costrutto for

Un’istruzione for ha la forma

for (<istruzione1> ; <espressione> ;<istruzione2>)
    <istruzione3>

Funziona come segue..

  • Prima viene eseguita istruzione1.
  • Poi viene valutata l’espressione.
  • Se è true, viene eseguita l’istruzione3; poi l’istruzione2 e poi viene valutata di nuovo l’espressione.
  • Questo continua finché l’espressione non diventa false.

Sembra abbastanza complicato… interpretalo come segue.

  • L’istruzione1 inizializza il ciclo for.
  • L’espressione controlla se il ciclo deve terminare o meno.
  • istruzione2 è il passo che porta alla prossima valutazione del ciclo.

L’uso più comune è quello di un contatore che percorre un certo intervallo.

Esempio

Il programma seguente inizializza un array di lunghezza 10 con i valori da 1 a 10.

{
    for (i=0; i <= 9; i+=1)
        list[i] = i+1;
}

Istruzione switch

In certe situazioni vuoi che le azioni dipendano da un particolare valore.
Puoi farlo utilizzando un certo numero di if ma è più facile utilizzare l’istruzione switch.
Un’istruzione switch ha la forma seguente:

switch (<espressione>)
{
    case <espressione1>: <istruzione1>; ... ; break;
    case <espressione2>: <istruzione2>; ... ; break;
    ...
    default: <istruzione>; ...
}

Funziona come segue.

  • Prima viene calcolata l’espressione.
  • Poi viene confrontata con i valori delle diverse espressioni dopo le istruzioni case.
  • L’esecuzione continua dopo la prima istruzione case con il valore corretto finché non si incontra un’istruzione break.
  • Se nessuna istruzione case ha il valore giusto, l’esecuzione passa a quella dopo l’istruzione default.

Osserva

  • L’istruzione default non è obbligatoria.
  • Diverse istruzioni case possono essere previste per la stessa istruzione.
  • Anche l’istruzione break non è obbligatoria.
    Se non c’è l’istruzione break l’esecuzione continua semplicemente con il codice della prossima istruzione case.

 

Esempio

Il programma seguente esegue un’azione in funzione del tasto che è stato premuto.

switch (keyboard_key)
{
    case vk_left:
    case vk_numpad4:
        x -= 4; break;
    case vk_right:
    case vk_numpad6:
        x += 4; break;
}

Istruzione break

L’istruzione break assume la forma

break

È utilizzata nei cicli for while repeat e nelle istruzioni switch with e ne interrompe l’esecuzione.
Se invece è utilizzata fuori da queste istruzioni termina il programma (non il gioco).

Istruzione continue

L’istruzione continue assume la forma

continue

Se utilizzata nei cicli for while repeat e nelle istruzioni switch with fa passare l’elaborazione al prossimo valore (del ciclo o della with.

Istruzione exit

L’istruzione exit assume la forma

exit

Semplicemente termina l’esecuzione dello script o porzione di codice.
Non termina l’esecuzione del gioco… per questo ti serve la funzione game_end().

Lascia un commento