## Istruzioni

Congratulazioni! Hai appena scritto il tuo primo programma! Ora ti sei fatto un idea: programmare non è altro che dare semplici istruzioni al computer che le eseguirà ciecamente. La difficoltà maggiore è spiegare le cose a qualcuno tanto stupido come un computer...

I programmi sono principalmente raccolte di chiamate a metodi, che non sono altro che liste di semplici ordini dati alla macchina. È molto simile ad una ricetta del tipo Sciogliere il pezzo di cioccolata, aggiungere zucchero, raffreddare la mistura e servire. Nei programmi, queste istruzioni sono chiamate funzioni o metodi e bisogna aggiungere le parentesi per invocarle:

    nomeDelMetodo()

[!thelang] necessita di avere le istruzioni separate da un punto e virgola (;)[!python|scala] o da una nuova riga[/!]. Quindi il precedente esempio si scriverebbe nel modo seguente[!python|scala] (si può anche aggiungere un punto e virgola alla fine della riga ma questo non è obbligatorio)[/!]

    sciogliLaCioccolata()[!java|c];[/!]
    aggiungiZucchero()[!java|c];[/!]
    raffreddaLaMistura[!java|c];[/!]
    servire()[!java|c];[/!]

[!python|scala]

Esso può anche essere scritto nel modo seguente ma è generalmente considerato una cattiva pratica raggruppare istruzioni sulla stessa riga poiché ne depreca la leggibilità.

    sciogliLaCioccolata(); aggiungiZucchero(); raffreddaLaMistura(); servire()

[/!]

Of course, these specific methods do not exist by default in [!thelang], but it may be possible to define them by yourself (we'll see later how to define your how methods).

Per ora ci occuperemo semplicemente di istruire il buggle. C'è un metodo per ogni pulsante dell'interactive control panel. Per ottenere lo stesso effetto del pulsante forward (facendo spostare il buggle di un passo in avanti) avete bisogno di scrivere ciò che segue nell'editor:

    [!java|scala|python]forward()[!java];[/!][/!][!c]stepForward();[/!]

In modo simile, per ottenere lo stesso effetto dei pulsanti [!java|scala|python]backward[/!][!c]stepBackward[/!], left e right bisogna usare rispettivamente:

    backward()[!java|c];[/!]
    left()[!java|c];[/!]
    right()[!java|c];[/!]

Il pulsante mark è un poco più particolare perché corrisponde a due metodi: il primo alza la penna ed il secondo la abbassa.

    brushUp()[!java|c];[/!]
    brushDown()[!java|c];[/!]

Il buggle offre altri metodi che sono prospettati dal menu "Help/about this world" e che saranno intodotti all'occorrenza.

### Traguardo dell'esercizio

Il nostro secondo programma sarà un po' più complicato, ma non di molto. L'obiettivo del buggle è semplicemente quello di disegnare una casa (un riquadro) e di nascondersi al suo interno. Controlla l'objective world per vedere esattamente quanto inteso.

Use your brush to mark the ground as you walk. Start marking the ground with `brushDown()`, and stop it with `brushUp()` afterward (e.g., to enter your house without marking its ground). The full list of all instructions understood by your buggle can be found in "Help/About this world".

### After this exercise

Quando passerai al prossimo esercizio nota che ce n'è uno incluso all'interno di quello attuale. Di norma bisogna espandere la voce di menù per poterlo vedere. Al cambio di esercizio molti di questi saranno nascosti perché l'albero è contratto come nella figura seguente:

Dovete cliccare sul piccolo simbolo a sinistra del buggle per espandere/collassare l'albero, come segue: