Come iniziare a programmare con ABCLogico

Preambolo:

Manuale per adulto. (Cercasi volontario per scrivere il manuale per bambini)

Il programma si trova qui: https://sourceforge.net/projects/abclogico/files/

 

L’obiettivo è di creare un programma che porta il gattino a casa.

Nel panello a destra ci sono istruzioni che si può trascinare col mouse sulla lista d'istruzioni.

Con drag and drop si trascina gli istruzioni dal elenco dei comandi alla lista del programma. Alcuni bambini trova difficoltà di mantenere premuto il pulsante durante il trascinamento. Quindi è attivato un opzione che consente di cliccare una volta per prendere e di nuovo cliccare per rilasciare il widget nella posizione desiderata nel listato del programma.

 

 

A destra si trova la finestra di visualizzazione del esito dei operazioni svolte nella programma.  Bisogna contare quante volte il gatto deve fare un passo avanti e inserire il corrispondente numero di istruzioni [Avanti] nel listato. Idem per orientare il gatto destra, sinistra su e giù.

 

Il codice potrebbe essere riordinato trascinare i comandi su/giù o al cestino, ultimo rimuove l’istruzione del listato. Con un click sul cestino si svuota la lista.

 

Quando il gatto si trova avanti la ciotola del cibo deve mangiare avendo inserito il comando corrispondente  [Mangia]. 

Per avviare il programma bisogna resettare premendo la casetta. Tale operazione porta il gatto la posizione di start e porta l’esecutore del programma a puntare alla prima istruzione.

Quando si preme il pulsante [Avvia] il gatto esegue le istruzioni una a volta (Step) e si dovrebbe osservare come il gatto si muove secondo il programma. Un doppio click passa all’esecuzione automatica (Run). Il programma termina al ultima istruzione o al raggiungimento della casa o un cane.

Il pulsante punto-domanda serve per dare suggerimento o spiegazioni dei varie elementi.

 

Quando l’alunno deve pianificare il percorso potrebbe (ansi dovrebbe!) servirsi dei coordinati cartesiani riportato nella barra di stato nel finestra del output (console campo). Quando si clicca sul campo viene aggiornato la linea di stato con la posizione del coordinato cliccato.

 

Esempio: se il gatto è al posizione x=3, y=1 e deve andare a posizione x=4, y=3, la bambina dovrebbe fare i calcoli (vettoriali) della distanza tipo: movimento orizzontale  4-3 = 1 e movimento verticale  3 – 2 = 2. Quindi deve inserire 1 elemento [avanti] (dopo aver orientato il gatto a destra), girare in su (elemento [su]) per poi aggiungere 2 istruzioni [avanti].

 


Passando ai livelli più evoluti

Per salvare programmi o cambiare la complessità scegli il pulsante [Strumenti ] che accede ad una finestra di opzioni. Qui si può caricare un programma e/o salvarlo.

Il numero di cibi, cani e ostacoli possono essere cambiati. Si può generare un nuovo scenario (compito) in cui cani etc. vengono posizionati in modo random. Successivamente si potrebbe trascinare gli elementi in altri posizione col mouse direttamente nel finestra campo (bisogna salvare eventuali modifiche col pulsante [Salva] prima di avviare il programma). In tale modo si potrebbe addirittura nascondere cibo o cani dietro i cancelli, e quindi dare motivo per utilizzare l’istruzione condizionali e test (if – then) nel livello 3.

Il livello della complessità determina l’instruction set, ovvero la diversità dei comandi.

 

Level 2 - Ripetizioni

Dopo il primo livello si passa ad utilizzare il ‘for next loop‘. L’istruzione [Ripeti] viene aggiunto al panello dei comandi. Essa potrebbe essere inserito prima dell’istruzione (o gruppo) da ripetere in modo di ridurre il numero di comandi. L’obiettivo del buon programmatore, in spe, diventa la sfida di ridurre il numero di righe del listato con il vantaggio che anche la velocita di scrittura del programma aumenta.

 

Level 3 – Utilizzo delle condizioni

A questo livello introduciamo un elemento importante nella programmazione, la struttura di controllo. Con comandi che controlla la condizione avanti il gatto ([Cane?], [Cibo?], [Ostacolo?]) si controlla il flusso di esecuzione nella sua forma più semplice. Funge come se-allora (if-then) e dà la possibilità del giovane coder di imparare uno dei principi che rende il computer ‘intelligente’.  Se vale la condizione, esegui l’istruzione (o blocco) seguente, altrimenti salta direttamente al’istruzione (blocco) successivo.

 

Esempio: Il gatto sta avanti un cancello e deve decidere se dietro si nasconde cibo (o un cane). Con inserimento delle sequenze tipo [Cibo?][Mangia] non rischia la rissa con un cane oppure di mangiarsi l’erba.


Level 4 – Raggruppando istruzioni

Con i blocchi, parentesi graffe, [] il coder potrebbe cominiciare a pensare astratto (“object oriented”) e raggruppare il codice in procedure, funzioni o subroutine.

 

Per esempio. Quando il gatto controlla se c'è un cane, il [Cane?] potrebbe condizionare un blocco che realizza un ‘metodo’ per fuggire dal pericolo. Un soluzione per salvare il micio  potrebbe essere realizzato così

[Cane?] [Ripeti 4]  [Cane?] [Gira] .

 

 

 

Se un blocco viene aggiunto dopo il blocco chiamato Main diventa una subrutine con un nome (per es. S3). Essa può essere invocato col comando [Call S3]. Al fine del blocco l’esecuzione ritorna a eseguire l’istruzione dopo il [Call]

 

La domanda finale

Carissimo/a supercoder, riesci a scrivere un programma che risolve qualsiasi compito, dato che il problema abbia una soluzione?