Storia scelte azioni

Da aptiva.

Indice

Tema

Costruzione di personaggi e di una storia che illustrino il funzionamento dei costrutti condizionali e iterativi: i due differenti procedimenti scelti per la realizzazione prima teorica (struttogramma), poi implementativa (secondo una logica interattiva, utilizzando Alice), di queste strutture di controllo e del loro funzionamento. Il dubbio sull'insegnamento delle iterazioni in presenza di variabili isolate o di strutture dati lineari o bidimensionali.

Questioni principali

  • L'algoritmo come il racconto di una storia - parte prima: quale formalismo teorico utilizzare? La scelta dello struttogramma (diagramma di flusso strutturato, o più noto come diagramma di Nassi-Shneiderman) come strumento maggiormente dialogico per spiegare condizioni di scelta e ripetizioni, al posto del diagramma di flusso tradizionale.
  • L'algoritmo come il racconto di una storia - parte seconda: l'utilità di mostrare le strutture di controllo in forma di azioni determinate e ripetute, a seconda delle condizioni esistenti all'interno di un contesto narrativo. La proposta di costruzione di personaggi, interagenti in un ambiente, grazie ad Alice.
  • Dubbio (da individuare i casi contestuali al formalismo implementativo):

È opportuno illustrare i costrutti iterativi prima o dopo aver introdotto le strutture dati?


Alcuni casi specifici (più legati all'aspetto teorico):

  Esempi senza strutture dati di supporto
  - Stampare a video una particolare conformazione di asterischi, determinata in base 
    a valutazioni sul contatore
  - Estrazione casuale di numeri e discrimina
  - MCD secondo Euclide 
  Esempi con strutture dati di supporto
  - Mazzo di Carte (array monodimensionale)
  - Game of Life (array bidimensionale)

Fondamenti psico-pedagogici

Grossa importanza in questo articolato progetto didattico è da ricondurre ai concetti di conoscenza e apprendimento tramite strumenti narrativi e l'uso del linguaggio, caratteristiche proprie del cognitivismo bruneriano, che si compenetrano ad un'altra ottica teorica già enunciata dallo stesso psicologo, ovvero quella di discovery learning non puro. Secondo Bruner, infatti, il discente tende ad apprendere per esperienza personale in maniera molto più persistente rispetto alla trasmissione diretta del docente (come già enunciava Dewey nei primi anni del XX secolo), ma necessita quantomeno di una facilitazione iniziale nel riconoscere le strutture logiche di pensiero e di organizzazione delle informazioni, affinché sia efficace la scoperta autonoma. È quindi fondamentale che il docente strutturi in modo corretto la lezione o il ciclo di lezioni, in modo che siano rispettati parimenti l'individualizzazione del percorso rispetto a comuni obiettivi e la personalizzazione di esso in base all'orientamento di interessi e predisposizioni degli studenti; ciascun alunno, in tal senso, vedrà il proprio processo formativo renderlo capace di affermarsi nella realtà e nella ricerca di una propria identità, anche in presenza di contesti iniziali sfavorevoli, perché assistito nelle fasi di ingresso e di crescita da una persona capace di supportarlo e di incoraggiarlo mediante facilitatori opportuni.

Introduzione: algorimi come storie (per il docente)

Approcciando le problematiche analizzate durante le lezioni, spesso ci ritroviamo a dover delineare esempi utilizzando forme che spazino da richieste dirette, effettuate in maniera concisa, sino a piccoli testi che riccamente descrivano la situazione puntuale del contesto da analizzare. Ci capita a volte perciò di porre quesiti di questa natura

Contare i numeri da 1 a 10 e mostrarli in output

ma la stessa richiesta potrebbe essere rivolta in altre forme, come ad esempio

Marco deve contare i numeri da 1 a 10 e dire passo passo in output sino a quale valore sia giunto a contare.

In entrambi casi, ci attenderemo in risposta un output riconducibile a

  1, 2,  ..., 10

ma nella seconda proposta avremo valutato una richiesta effettuata con metodi più vicini a quelli di un racconto informale, che ci aiuterà a circoscrivere concretamente un plausibile ambito di origine del problema.

Supponiamo di avere più genericamente un qualsiasi quesito posto in tale forma e risolvibile per via algoritmica; da definizione, un algoritmo è un procedimento che risolve un determinato problema attraverso un numero determinato e finito di passi elementari. (come riportano in modo sintetico molti libri di testo e molte fonti). Questa frase sottintende che si possa essere in presenza di una sequenza di azioni più o meno ripetute, formale schematizzazione di cui possiamo ricostruire la corrispondente storia, interpretata dalle entità coinvolte. Esse, come veri e propri personaggi (si pensi al Marco che è protagonista della seconda forma del quesito), interagiscono in un mondo nel quale devono/desiderano raggiungere un obiettivo, finale della propria narrazione.

L'intero itinerario di lezioni può essere diluito oltre i limiti indicati, commisurandosi al livello di partenza della classe e alle indicazioni che via via possano essere tratte durante lo svolgimento, fino a costituire un cammino lungo tutta l'annualità scolastica. Può essere riproposto su differenti indirizzi, tuttavia originariamente, esso è stato pensato per una classe prima o terza di un liceo scientifico ad indirizzo scienze applicate, volendosi inserire in una dinamica dove la riflessione e l'analisi dei problemi debba essere posta dinanzi al solo sviluppo di una metodologia pratica. L'intenzione di questo percorso, infatti, è quella di identificare come si impostino questi percorsi algoritmici in un opportuno formalismo teorico, avvalendosi delle strutture di controllo affinché ne si comprenda il contesto di utilizzo; in seguito, ne si mostra l'implementazione mediante l'interazione di personaggi manipolati da un programma eseguibile su computer, alla stregua del racconto di una fiaba o una favola, focalizzandosi non necessariamente sulla padronanza completa dello strumento e riconoscendo che opportune scelte possano essere accompagnate da formalismi adeguati, senza limitarsi ad un'unica via percorribile nell'affrontare la risoluzione di quesiti anche complessi.

Risolviamo un problema costruendo un racconto

(durata 2-3 ore in classe + 1 ora in laboratorio + lavoro a casa)

Note generali per il docente: Come dettagliato nella premessa a questa unità didattica, l'intento sarà quello di mostrare agli alunni come la scrittura di un algoritmo presupponga che sia analizzata la storia da cui origini il quesito posto, per fornire una narrazione successiva a completamento e a soluzione del problema affrontato.

Obiettivi:

  • individuare il contesto di un problema e le premesse che ne costituiscano i dati di partenza
  • analizzare un problema, riconoscendo quale sia o quali siano le richieste poste all'interno del testo
  • identificare la risoluzione di un problema come una sequenza di operazioni ben definite, da effettuarsi in maniera sequenziale lungo un periodo di tempo
  • costruire un semplice schema, secondo il formalismo dei diagrammi di Nassi-Shneiderman, che traduca la storia in una forma ben strutturata
  • sperimentare l'approccio narrativo dello strumento Alice

Metodologie: Le lezioni di questa prima parte del percorso, avvalendosi di un'iniziale componente di teatralizzazione, porranno le basi per identificare il processo algoritmico come una particolare forma di narrazione. Successivamente si proseguirà in maniera frontale, stimolando la partecipazione degli studenti con un dialogo costruttivo su come dovrà essere realizzata la storia che risolva un problema (il docente fornirà le basi per realizzare lo struttogramma). Al termine delle ore riservate, medianti gli strumenti informatici, saranno presentati l'ambiente di sviluppo di Alice ed alcuni piccoli esempi, per orientare la classe al tipo di lavoro che mostrerà i risvolti pratici del procedimento algoritmico.

Strumenti e luoghi: La prime due o, se necessario, tre lezioni che costituiranno quest'avvio dell'unità didattica, saranno da svolgere possibilmente non in laboratorio o, in ogni caso, a computer spenti, limitandosi all'uso di carta, penna, lavagna e di LIM o videoproiettore collegati al PC della classe o del docente. In ognuno degli incontri, l'insegnante avrà con sé un libro, contenente le favole o le fiabe da cui prendere spunto. Ad una ulteriore lezione specificatamente di laboratorio e, successivamente, in autonomia a casa verrà lasciato il compito di implementare in Alice ciò che è stato visto in aula.

Un libro di favole

(dopo l'ingresso in aula)

Buongiorno a tutti! Benvenuti alla nostra prima lezione di storytelling, una parola inglese che significa "raccontare storie". Vi chiederete cos'abbiano in comune l'informatica e il raccontare storie, ma io vi dico che tutti i giorni, tutti noi, scriviamo storie inconsapevolmente, anche se non su carta. Facciamo qualche esempio... venite tu, C. ... e tu, M. ...

(indicando due alunni tra loro distanti, presi casualmente)

provate a ricordare cos'avete fatto questa mattina, a partire dal vostro risveglio sino a che non siete giunti a scuola, e segnatelo su un foglietto ciascuno.

(il docente consegna dei post-it)

Invece tu, L. ... e tu, S. ...

(indicando altri due alunni)

raggiungeteci qui alla cattedra e pensate alla scorsa serata e a quello che avete fatto prima di recarvi a dormire, scrivendo anche voi ogni evento su un foglietto.

(il docente consegna altri due post-it)

Bene, ora raccontate ai vostri compagni cosa avete ricavato dai vostri ricordi, leggendo i foglietti con le annotazioni appena scritte.

(si lascia il tempo perchè, ordinatamente, condividano il proprio racconto)

Cosa notate dalle parole dei vostri compagni? Ciascuno di loro ha eseguito alcune azioni, una dopo l'altra in sequenza, partendo da una situazione iniziale, riportando la propria storia specifica e differente. Sono brevi racconti, di cui i vostri amici sono stati ottimi narratori - ora potete tornare al posto lasciandomi i foglietti, che ci torneranno utili più avanti, grazie - e di esse sono stati anche gli interpreti ed esecutori, come se ne fossero i personaggi protagonisti. In informatica c'è modo di definire la medesima cosa, con termini specifici: chiameremo algoritmo la sequenza di passi ben definiti e ordinati dall'inizio alla fine, e quindi avremo algoritmo 1 e algoritmo 2, rispettivamente i racconti di C. e M., e algoritmo 3 e algoritmo 4, cioè gli insiemi di avvenimenti di L. e S. .

(l'insegnante scrive sui foglietti i riferimenti così indicati, con il numero corrispondente alla persona che ha raccontato le proprie vicende)

L'antefatto alla nostra storia (studiamo il problema!)

Avremo d'ora in avanti la possibilità di narrare altre storie, alcune più note, alcune meno, ma tutte partiranno da questi presupposti: dovremo capire in che contesto esse si svolgano e da quali premesse esse derivino, così da identificare nello specifico le traversie affrontate per raggiungere la scena finale verso cui ci condurranno.

Per prima cosa, prendiamo in prestito il termine di fabula, che fa parte di un'altra materia (lo studio della letteratura italiana), per indicare l'insieme di tutte le vicende dall'inizio alla fine, divise in:

  1. Situazione iniziale
  2. Rottura dell'equilibrio (o 'esordio', nella fiaba 'complicazione')
  3. Evoluzione della vicenda (nella fiaba 'peripezie dell'eroe')
  4. Scioglimento (o 'ristabilimento dell'equilibrio')
  5. Situazione finale (o coda)

Torniamo allora agli esempi visti: a due a due, essi sono il racconto delle vicende avvenute tra un inizio ed una fine della fabula più o meno comuni ad entrambe, ma con uno sviluppo differente; quello che i vostri compagni hanno fatto è stato narrarvi i punti conseguenti a quella che viene chiamata rottura dell'equilibrio o complicazione, in un caso l'andare a scuola e nell'altro il decidere come passare la serata, ciascuno a proprio modo.

Sapendo quali fossero le premesse iniziali, perciò, essi hanno eseguito una serie di azioni, portando diverse soluzioni ad un problema. La parola non è usata a caso, non soltanto perché complicazione e problema siano termini sinonimi, ma soprattutto perché stabilire la situazione di partenza da cui originare il percorso che vorremo seguire per arrivare alla fine, corrisponde alla definizione del problema di cui trovare una soluzione.

Per noi che studiamo in questo momento informatica, cioè la gestione automatica dell'informazione, la conoscenza dell'antefatto alla storia diventa essenziale, fornendoci i dati di partenza sui quali progettare il procedimento algoritmico per modellare il percorso risolutivo scelto per raggiungere la soluzione. Potremo chiamare le informazioni disponibili in partenza con il termine di input, mentre il risultato finale prenderà nome di output.

La nostra scaletta si trasformerà quindi in:

  1. Dati e contesto iniziali (input)
  2. Problema
  3. Passi dell'algoritmo per la risoluzione.
  4. Risultati finali (output)

in cui vediamo che i vecchi punti 4 e 5 di una storia siano effettivamente l'ottenimento della soluzione, che è il nuovo punto 4.

Scrivere il racconto fino alla fine è risolverne le premesse

Ora prendiamo in esame una breve storia: guardando come l'autore l'abbia composta, potremo individuare il problema in essa contenuto e l'algoritmo risolutivo che conduca al lieto fine.

La famosa statua dei Musicanti, a Brema
 I musicanti di Brema di Jakob Ludwig Karl e Wilhelm Karl Grimm
 Un asino, vecchio e stanco, decise di cambiare vita e di trascorrere gli ultimi anni della sua vita 
 come musicante.
 Partito per Brema, vide un cane che stava scappando dal padrone, deciso ad ammazzarlo perché 
 non più capace di andare a caccia o fare la guardia.
 <<Non c'è problema.>> disse l'asino <<Andremo a fare i musicanti in città: io suonerò il liuto e tu 
 il tamburo.>>
 Continuando il viaggio, incontrarono assieme un gatto, scacciato da casa perché incapace di 
 acchiappare i topi.
 <<Non ti preoccupare.>> gli dissero <<Verrai con noi a far concerti a Brema!>> e il gatto si aggiunse
 a loro.
 Partiti ora in tre, passarono a fianco di una fattoria e si accorsero di un gallo che schiamazzava,
 rincorso da una massaia.
 <<Aiutatemi, mi vuole tirare il collo perché non ha un tacchino da poter mangiare!>> urlava e quelli
 lo portarono con loro correndo via, invitandolo a seguirli come cantante.
 Arrivò la sera e, non sapendo cosa mangiare né dove dormire, vagarono sino a trovare una casa, che 
 scoprirono piena d'ogni bene da poter mangiare. La casa era però abitata da briganti e loro non 
 sapevano come li avrebbero potuti allontanare, per approfittare della situazione.

Questa prima parte della storia ci mostra il contesto iniziale, sino al problema in comune che i quattro musicanti si trovano ad affrontare. Abbiamo quindi

  1. Dati iniziali: i briganti, una casa, alimenti
  2. Problema: come poter cacciare i briganti, entrare in casa, mangiare e riposarsi?

A questo punto gli autori descrivono ciò che è la soluzione individuata dai quattro animali "musicanti"

 Si nascosero dietro ad un cespuglio e decisero che l'unico modo di procedere fosse quello di
 spaventare gli abitanti della casa.
 Si avvicinarono alla finestra e, nel pieno silenzio, l'asino appoggiò le zampe sul davanzale, 
 il cane balzò sul dorso dell'asino, il gatto si arrampicò fin sulla testa del cane e il gallo si
 appollaiò sulle spalle del gatto.
 Quindi ad un cenno dell'asino, diedero inizio al loro primo concerto:
 … e fu tutto un ragliare, abbaiare, miagolare e schiamazzare.
 Terrorizzati, i briganti cercarono la salvezza fuori dalla casa, ma all'uscita furono investiti 
 da un essere che calciava, graffiava, mordeva, beccava!
 Scapparono per non tornare mai più in quel luogo maledetto!
 I quattro animali non ci pensarono due volte: si precipitarono all'interno della casa, senza 
 esitare si sedettero intorno al tavolo e mangiarono... e ancora adesso sono lì, dove hanno preso 
 dimora, da bravi amici.

A questo punto, possiamo ricavare anche il risultato finale e, sopratutto, la sequenza di passi compiuti, cioè il nostro algoritmo!

  1. Algoritmo:
    • Avvicinarsi alla finestra
    • Disporsi uno sull'altro
    • Fare rumore per spaventare
    • Dirigersi contro i briganti per farli fuggire
    • Entrare in casa
  2. Risultato finale: Riposarsi e poter mangiare

Ve lo sareste immaginato? Eppure, avevamo già visto una cosa simile con i racconti dei vostri compagni e adesso abbiamo infine esaminato come anche le fiabe possano descrivere un esempio di problemi di cui progettare l'algoritmo di risoluzione. In informatica, una serie di passi come quelli descritti possono ragionevolmente corrispondere alle operazioni che può compiere in maniera automatizzata un computer, quando esse siano trascritte nella forma di un programma eseguibile. Questi programmi esistono in varia composizione, ognuno utilizzato per una differente funzione e capace di far fronte ad una o più problematiche per le quali sia stato progettato: al posto di fornire lo sviluppo per una narrazione nel modo che abbiamo analizzato, essi vedono luce a seguito dello studio di specifiche necessità avute da chi debba usare un elaboratore elettronico, sia per calcolare complicate formule, che per trascrivere testi, o ancora per gestire la trasmissione di informazioni multimediali o di qualsivoglia altro genere.

ESERCIZIO
Vi affido il compito di leggere un'altra fiaba, quella de "Il lupo e i sette capretti", provando a rielaborare la descrizione della situazione iniziale, del problema e della sequenza di passi verso l'esito finale in una forma simile a quella che abbiamo adesso utilizzato.

(fine della prima lezione)

Un racconto si ricorda bene, ma uno schema può aiutare!

(dopo l'ingresso in aula nella seconda lezione)

Bentornati. Continuiamo a parlare di informatica, sfruttando il tema delle fiabe e delle favole che abbiamo utilizzato sinora. Dalla fine della lezione precedente ad adesso, dovreste aver avuto modo di ragionare sull'esercizio affidatovi. Dovevamo leggere e schematizzare "Il lupo e i sette capretti", perciò vediamo adesso di ricavare assieme lo schema secondo la mia proposta, ma vi invito a fare domande, se abbiate varianti di cui siete interessati a discutere.

(è omessa la copiatura della fiaba, invitandone eventualmente alla lettura su questa pagina)

Ci immedesimiamo in Mamma capra e andremo a vedere il quadro dal suo punto di vista...

  1. Dati iniziali: un lupo, sei capretti mangiati, un capretto nascosto, ambiente della foresta, strumenti da cucito
  2. Problema: il lupo ha mangiato i miei figli e devo liberarli, mettendolo in situazione di non nuocere più
  3. Algoritmo:
    • prendere la borsa da cucito
    • raggiungere il lupo
    • aprirgli la pancia
    • far uscire i capretti
    • mettere alcune pietre nello stomaco del lupo
    • ricucire la pancia del lupo
    • allontanarsi e nascondersi
  4. Risultato finale: il lupo, volendo bere, cade nel fiume e affoga, perché troppo pesante

(si attendono e si suscitano domande sulla forma del procedimento individuato, poi si prosegue)

Ripassato il procedimento per la creazione di una sequenza di passi capaci di risolvere un quesito, il nostro scopo in quanto studiosi della materia (io come professore, voi come alunni) è saper andare oltre e riuscire a ricondurre la nostra narrazione in una forma che il PC che avrete davanti possa comprendere.

Non è un'operazione immediata, dovremo procedere per gradi, ma innanzitutto andremo a vedere come possiamo ottenere - per cominciare - uno schema semplice, ricavato dalla nostra analisi problema-soluzione, che avremo modo di costruire e manipolare graficamente: sarà un primo gradino verso il nostro programma finale che potrà essere eseguito dal computer.

Per fare questo, è necessario procurarsi una matita (oltre che la penna con cui prendete appunti) ed un righello, perché andremo a disegnare dei veri e propri blocchi, contenenti le nostre istruzioni: l'insieme di essi, opportunamente combinati, darà luogo al nostro algoritmo in forma grafica, lo schema o diagramma.

Comando.png

In ogni blocco, identificato da un rettangolo, scriveremo un verbo (o una/due parole significative e rappresentative del concetto principale di un'istruzione) che indicherà come essa interagirà sui dati disponibili nella situazione iniziale o prodotti durante l'esecuzione della sequenza di azioni. Abbiamo infatti incontrato il concetto di input come informazioni iniziali e di output come risultati finali, ma in realtà ad ogni passo specifico potremmo avere nuovi dati da manipolare, prodotti alla fine di ogni comando precedente a quello attualmente in esame: saranno chiamati risultati intermedi. Per l'ultimo esempio visto otterremo

Capretti.png

Questo tipo di diagramma prende il nome di struttogramma e venne ideato da Isaac Nassi e Ben Shneiderman nei primi anni '70 del XX secolo.

ESERCIZIO
Ora che abbiamo imparato come realizzare uno struttogramma a partire da una storia, l'esercizio è quello di tradurre l'algoritmo della fiaba de "I Musicanti di Brema" in un diagramma del medesimo tipo. Per creare il disegno, potete utilizzare un programma di grafica per computer di vostra scelta, ma vi consiglio di scaricare ed aprire sul vostro PC a casa il software Structorizer, che trovate all'indirizzo qui indicato: esso è stato pensato proprio per lo scopo di generare struttogrammi.

E adesso andiamo avanti.

Far interpretare il racconto ad un personaggio: il mondo 3D di Alice

Finora abbiamo appreso come riconoscere le azioni principali che costituiscano un algoritmo e come visualizzarle in uno schema ordinato che si avvicini a ciò che il computer potrebbe eseguire come programma.

Per facilitare questo ultimo passaggio non ci avventureremo in un classico modello di programmazione (cioè di costruzione del programma) che si appoggi sull'utilizzo di un linguaggio di programmazione (una sorta di lingua riservata alla creazione di programmi, o meglio della loro scrittura e codifica, come l'italiano per le opere letterarie usate negli esempi ed i testi che scriviamo ogni giorno), ma sfrutteremo uno strumento particolare. Infatti, se abbiamo letto e analizzato storie, perché non costruirle o ricostruirle noi stessi?

Andremo a creare personaggi in un ambiente tridimensionale, dando a ciascuno di loro istruzioni opportune in sequenza, in modo da formare uno o più procedimenti algoritmici con mosse che li faranno agire ed, eventualmente, interagire. Ciò che ci renderà possibile intraprendere questa soluzione è un programma, realizzato dalla Carnegie Mellon University, il cui nome è "Alice" (come l'omonimo romanzo di Lewis Carroll): con esso potremo non solo riprodurre le serie di azioni, ma anche visualizzare il risultato finale sotto forma di un video animato, programmando in modo originale.

L'interfaccia di Alice, l'ambiente che utilizzeremo per far agire i nostri personaggi

Aperto il programma, ci troviamo diverse sezioni a comporre la finestra. In alto, sopra a tutto, abbiamo i menu e alcuni pulsanti (tra cui "Play" per far riprodurre la nostra scena, che utilizzeremo alla fine di tutto il nostro lavoro). Ci concentreremo invece sulle finestrelle interne su cui è costruita la nostra interfaccia - interfaccia è l'insieme degli elementi mediante i quali l'utente riesce a comunicare ed interagire con il computer, nel nostro caso le componenti visibili di Alice - ed in particolare noteremo alcune sezioni:

  • a sinistra, in alto abbiamo l'elenco dei personaggi e degli oggetti di scena (come in un teatro di posa per i film, le luci, la telecamera e la scenografia);
  • sempre a sinistra, in basso, abbiamo le azioni esistenti che il personaggio o l'oggetto al momento selezionato possono compiere, tra cui scegliere quelle che vorremo far eseguire ai nostri "attori", o la possibilità di definire nuove altre azioni o contenitori per sequenze complesse da noi definite;
  • subito più a destra, per completare la parte in basso della finestra, ci sono invece le azioni che i nostri personaggi compiranno veramente, che potremo inserire con il trascinamento dalla finestra a fianco (compariranno delle indicazioni per completare le istruzioni, da seguire per ottenere il risultato desiderato). Potremo anche combinare proprietà e azioni tra loro, per modellare i nostri algoritmi;
  • sopra la zona dedicata ai comandi, abbiamo le condizioni di esecuzione delle nostre azioni, cioè gli eventi che scatenano l'avvio delle sequenze algoritmiche e che permettono di coordinare i nostri personaggi nell'esecuzione di procedimenti ben definiti, sia in fase iniziale, sia in base alla possibilità che vi sia la modifica di qualche dato o un intervento dall'esterno durante lo svolgimento della storia;
  • al centro di tutto vi è invece la rappresentazione del nostro mondo tridimensionale, dove inseriremo i personaggi (attraverso il pulsante "Add objects", che ci aprirà un elenco di figure da potervi trascinare)

Lo struttogramma

Passo.png

dove abbiamo definito un'istruzione che faccia fare un passo a destra al personaggio, si tradurrà in

Commands1.png

ovvero l'azione del passo a destra nel mondo tridimensionale, richiamata tramite l'interfaccia. Aggiungendo un'altra istruzione allo struttogramma, come l'alzata di un braccio

Passo alza.png

dovremo di conseguenza inserire la corrispondente istruzione nell'algoritmo rappresentato nel mondo di Alice.

(fine lezione)

ATTIVITA' DI LABORATORIO
(l'insegnante attende in laboratorio gli alunni, o li accompagna personalmente, prima di cominciare, predisponendo affinché si sistemi ognuno ad un differente PC) Oggi ci troviamo direttamente in laboratorio, invece che in classe, perché vi invito a sperimentare e a provare a tradurre in autonomia all'interno del programma ciò che vi ho spiegato ed abbiamo visto assieme alla LIM. Avete un computer per ciascuno, ma questo non vi impedisce di scambiare opinioni e di discutere su cosa fare assieme ai vostri vicini di banco. L'importante è che si mantenga un volume di voce che permetta a tutti di sentire la mia voce e a voi di sentire eventualmente i vostri compagni più prossimi, senza che si debba urlare. Se desiderate, siete liberi di usare gli altri personaggi diversi da quello che vi ho mostrato, nonché di vedere il risultato del vostro lavoro premendo il tasto "Play", che aprirà una finestrella con il video risultante dalle azioni assegnate ai personaggi. A fine lezione potete anche mandarmi il file contenente il vostro lavoro, salvandolo dal menù "File -> Save World" e spedendolo tramite posta elettronica.

Io rimarrò qui e girerò tra i banchi, seguendo attentamente ciò che farete e restando a disposizione di chiunque volesse farmi una domanda o chiamarmi per mostrarmi come stia procedendo la vostra esplorazione. E ricordate che potete sbagliare e riprovare tutte le volte che desideriate: così fanno anche i migliori ricercatori, quando tentano di conoscere appieno cos'abbiano davanti.

Chi volesse o ritenesse di non aver finito, può pure proseguire a casa.

Buon lavoro!

(il docente sorveglia e sostiene l'operato degli studenti sino a fine lezione)

Semplici azioni non bastano: dobbiamo compiere delle decisioni!

(durata 1-2 ore in classe + 1 ora in laboratorio + lavoro a casa)

Note generali per il docente: a partire dalle premesse enunciate e dagli strumenti introdotti, si vorrà focalizzare l'analisi e la soluzione di un problema come un susseguirsi di scelte e di operazioni da esse condizionate, fornendo ulteriori mezzi per inserire queste meccaniche nella narrazione delle azioni degli attori coinvolti.

Obiettivi:

  • definire il concetto di azione determinata dalla valutazione del contesto
  • costruire un percorso risolutivo che includa decisioni riferite al prosieguo dell'esecuzione e ai dati inseriti in input e/o manipolati
  • illustrare ed applicare la rappresentazione grafica definita per i costrutti condizionali nel formalismo degli struttogrammi
  • tradurre la soluzione narrativa del problema sfruttando le operazioni corrispondenti in Alice, in particolare per l'esecuzione di azioni a partire da scelte sui dati in input iniziale
  • introdurre le variabili come proprietà di scena

Metodologie: Durante la prima lezione di questa sezione, dopo aver condotto gli studenti a riflettere sulle differenti scelte che avrebbero potuto effettuare a partire dai problemi esaminati nel primo ciclo di ore (se si fosse variata una richiesta, se si fosse lasciata più libertà o, al contrario, se vi fossero stati vincoli più stretti), si analizzerà la risoluzione di un quesito e la corrispondente costruzione della narrazione che non possano essere modellate senza coinvolgere decisioni e categorizzazioni a partire da scelte. L'algoritmo così individuato sarà prima tradotto in struttogramma, poi prenderà la forma di uno script graficamente definibile nell'interfaccia di Alice, e si porrà a spunto per una breve esercitazione esplorativa autonoma, che potrà avvenire alla seconda o terza lezione.

Strumenti: Per questo secondo argomento, diviso anch'esso in massimo due o tre lezioni, il lavoro introduttivo dovrebbe essere effettuato in aula tramite il dialogo con gli alunni, con l'ausilio di una lavagna tradizionale su cui scrivere nelle fasi di brainstorming, oppure possibilmente la medesima LIM o il videoproiettore collegati al PC. Anche in ognuno di questi incontri, l'insegnante avrà con sé il libro contenente gli spunti d'esempio. L'uso del laboratorio sarà invece proprio della parte riguardante la traduzione come programma eseguibile in Alice, in cui sarà consentito di sperimentare l'uso della gestione delle reazioni del personaggio in base all'interazione con mouse e tastiera (che potrà essere proseguita a casa).


(la classe inizierà la lezione in aula)

Benvenuti a tutti! Sono felice di aver ricevuto buona parte dei vostri tentativi con Alice, alcuni realizzati in maniera originale.

Oggi andremo avanti tornando agli aspetti della nostra narrazione, per questo vi chiederò di tornare con la mente agli esempi.

Prendiamo ad esempio i passi descritti sul foglietto che abbiamo contrassegnato con l'identificativo di algoritmo 2:

(l'insegnante prende fuori il post-it conservato con gli altri tre)

oltre a differire dall'algoritmo 1 nelle premesse della situazione iniziale, proviamo a domandarci se la stessa sequenza possa valere per gli altri giorni... Idealmente, dovrebbe essere così, e il vostro compagno ha in particolare raccontato che, dopo la colazione, corra a prendere l'autobus. Ma se quel giorno ci fosse sciopero? Dovrebbe chiedersi prima se l'autobus possa passare o meno dalla fermata e decidere piuttosto di chiedere un passaggio ai genitori in caso contrario. E se fosse in ritardo per qualche motivo e dovesse non poter prendere il mezzo pubblico a causa di ciò?

(a questo punto il docente annota sulla lavagna le idee degli studenti, poi richiama all'attenzione e prosegue)

In entrambe le occasioni abbiamo la necessità di dover effettuare delle scelte prima di eseguire un'azione, in maniera tale da scegliere quella opportuna: nel primo caso, la scelta dipenderà dai dati forniti in input come condizioni iniziali (lo sciopero dipende dal contesto di partenza); nel secondo caso, la decisione è condizionata dai risultati intermedi, ma anch'essa condizionerá lo svolgimento dell'algoritmo secondo molteplici sviluppi conseguenti ad essa.

Negli algoritmi che costituiscono il nucleo dei programmi potremo altrettanto avere azioni eseguite direttamente ed altre condizionate a scelte, così come avviene nella narrazione delle nostre storie. Seguendo l'esempio di una breve fiaba, come fatto anche nelle lezioni passate, ricaveremo adesso l'algoritmo che corrisponda all'insieme di eventi ordinati consequenzialmente, poi vedremo se sia possibile creare uno schema che includa la possibilità di gestire la selezione tra più vie differenti.

Determiniamo il percorso della storia quando dobbiamo effettuare delle scelte

Seguiamo una storia, quella di Fido, il preziosissimo esemplare di tartaruga posseduto da un re.

Fido, la tartaruga
Fido era una tartaruga da compagnia maschio, tanto preziosa e cara a Re Fredrick, che la viziava 
facendo sì che vivesse una vita da sogno.
L'animale trascorreva le sue giornate presso l'enorme fontana del giardino, nuotando e riposando, 
riposando e nuotando: non aveva alcuna abilità speciale, eccetto la capacità di occupare i propri 
pensieri per almeno un'ora semplicemente fissando i ciottoli, ma il Re gli era molto affezionato.
I servitori del castello si prendevano cura della tartaruga, facendo costante attenzione che la
fontana fosse sempre pulita, sebbene Fido adorasse anche il fondale limaccioso che occasionalmente 
vi si formava.
La tartaruga aveva un insieme di semplici regole di vita: infatti, dato che il suo cervello 
raggiungeva a malapena le dimensioni di un sassolino, esse erano incredibilmente elementari ed 
espresse secondo una logica che potremmo definire "SE-ALLORA-ALTRIMENTI". Tali regole 
occupavano e conformavano l'intera routine della vita di Fido, tanto che, ad esempio, aveva una 
logica semplicissima per capire se fosse ora di mangiare:
SE sono affamato ALLORA mangerò
Questa tipologia di pensiero funzionava ottimamente per l'animale, che sapeva che avrebbe sempre potuto mangiare ogni volta che avesse avuto fame, o non mangiare altrimenti, come conseguenza naturale, se non fosse stato affamato. Per alcuni altri aspetti della propria vita, i ragionamenti di Fido legati ai SE potevano condurre a due differenti tipi di azioni a seconda delle condizioni contestuali. Ad esempio, ogni qualvolta fosse impegnato in una nuotata, esso si poneva un quesito:
SE il getto della fontana è funzionante ALLORA giocherò con lo zampillo ALTRIMENTI nuoterò attorno alla roccia più grande
Ovviamente, questo avveniva perché a Fido piacesse molto di più il getto d'acqua che la roccia (ma a seconda dell'orario del giorno, non era sempre possibile). Altre volte la decisione era talmente complessa da richiedere una serie di asserzioni "SE-ALLORA- ALTRIMENTI" tra loro dipendenti e concatenate:
SE il tempo è soleggiato ALLORA mi sdraierò sull'erba ALTRIMENTI SE è molto caldo ed è nuvoloso ALLORA mi metterò a nuotare ALTRIMENTI dormirò
Il giardiniere responsabile della maggior parte delle attenzioni riservate a Fido spesso scherzava su questo fatto, dicendo che tutto ciò che la tartaruga facesse fosse mangiare, dormire e nuotare (e non era lontano dalla verità). In totale, comunque, l'attività dell'animale era racchiusa in circa una cinquantina di regole tra loro connesse da catene e annidamenti di "SE-ALLORA- ALTRIMENTI", tant'è vero che un volta uno studioso, trascorrendo una settimana a studiare Fido, si accorse di poter ridurre tutti i procedimenti di pensiero della tartaruga in un'unico foglio di pergamena: se Fido fosse stato intelligente a sufficienza per capire la constatazione, forse si sarebbe offeso, ma invece, dato che il tempo era soleggiato, si era fatto un pisolino.

Sino a qui abbiamo definito le premesse della storia che ci fa da esempio e, come avete visto, abbiamo introdotto un nuovo tipo di azione, il ragionamento sulle condizioni durante il procedere degli eventi. Per comodità, anche noi utilizzeremo d'ora in avanti questo schema "SE-ALLORA-ALTRIMENTI", sia per determinare le azioni da compiere a partire da condizioni iniziali, sia per decidere come comportarci durante l'evolvere delle vicende delle narrazioni che costruiremo (così come la tartaruga aveva le proprie regole consuete). Come sappiamo, però, una fiaba introduce un problema per il protagonista, di cui ora leggeremo con attenzione:

Un giorno accadde l'impensabile. Il giardiniere, supponendo che Fido si annoiasse, aggiunse alla
fontana una seconda roccia, grande pressappoco come quella già presente. Quest'aggiunta creò 
confusione nella tartaruga, che vide stravolta la propria routine.

Quindi, cambiato il contesto, creando una situazione di difficoltà, l'animale ebbe necessità di trovare una soluzione. Cosa farà? Continuiamo a seguire il racconto.

Ci volle almeno una settimana a Fido per venire a capo della situazione, ma alla fine produsse
una nuova regola, che si sarebbe adattata perfettamente all'ambiente nella sua nuova disposizione.
Ciò che fece, fu aggiungere un'ulteriore constatazione del tipo "SE-ALLORA-ALTRIMENTI":
SE mi trovo vicino alla grande roccia a destra ALLORA nuoterò attorno alla roccia a destra ALTRIMENTI nuoterò attorno alla roccia a sinistra
Fu grazie a tale intuizione che non venne più creduto così stupido e venne tenuto in considerazione ancor più grande dal Re e da tutta la sua corte, tanto che... No, caro, amico, quelle sono altre storie, per altri momenti: per ora ti basti sapere che Fido visse felice e contento.

La tartaruga, come abbiamo sentito, ha impostato una nuova regola nella modalità "SE-ALLORA-ALTRIMENTI", per avere uno strumento in più grazie al quale risolvere il proprio problema! Azioni di questo tipo vengono allo stesso modo frequentemente utilizzate nella gestione di situazioni all'interno di storie, ed in particolare in molti di quei casi che noi potremo vedere sotto forma di algoritmi. Nello specifico, ad esse viene fatto corrispondere un tipo di istruzione particolare, che chiameremo costrutti condizionali, perché delineano la costruzione di una decisione rispetto ad una condizione stabilita; questa farà riferimento alla situazione contingente (che sarà quella iniziale, se posta prima della prima mossa del nostro procedimento, o più genericamente quella attuale, in cui dovremo considerare eventuali risultati intermedi) e porterà a seguire un determinato percorso di azioni oppure un itinerario differente, a seconda del fatto che sia o meno verificata la condizione. Davanti alle premesse che abbiamo perciò esaminato, possiamo provare a modificare l'algoritmo che segue il vostro compagno quando viene a scuola.

Volendo mantenere l'ispirazione dataci da Fido, il nucleo dei passi da eseguire diventerà

...
faccio colazione
SE non sono in ritardo
ALLORA SE c'é sciopero dell'autobus
       ALLORA chiedo un passaggio ai genitori
       ALTRIMENTI provo a prendere l'autobus
ALTRIMENTI chiedo scusa ai genitori e chiedo un passaggio
...

Costruendo in questo modo la nostra sequenza, vediamo come sia adesso evidente la possibilità di scegliere di eseguire l'una o l'altra strada, in base alla presenza di una complicazione valutata dopo la prima azione.

ESERCIZIO
Sono sicuro che non vi dispiacerà aiutare Fido, ora che sapete come fare. Per questo motivo, ora vi dirò che nella sua fontana è stato installato un altro getto, che viene acceso alternativamente al principale; tale zampillo è però troppo potente, pertanto il caro animaletto non ha piacere di giocarci. Vi chiedo allora di scrivere la serie di istruzioni che interpretano questa necessità, risolvendo il ragionamento per conto della tartaruga (tenendo ben presente le condizioni e le mosse già definite nel nostro esempio).

I costrutti condizionali in forma di struttogramma

Vediamo adesso come ci sia consentito di modellare nel nostro diagramma la particolare situazione che si ha in presenza di un costrutto condizionale.

Sappiamo che lo struttogramma viene costruito blocco per blocco: ebbene, anche le istruzioni "SE-ALLORA-ALTRIMENTI" hanno un corrispettivo in forma grafica, che si presenta nella struttura

Condizionale.png

capace di incastrarsi perfettamente in un blocco delle nostre istruzioni. Come si può ben notare, al di sotto del triangolo che esprime il nostro interrogativo, si aprono due cammini (detti anche rami dell'istruzione), nel caso che la condizione si verifichi o meno: nella prima eventualità, diremo che l'esito della valutazione della condizione posta sia VERO (cioè che essa sia vera/verificata), altrimenti avremo che tale valore non possa che essere FALSO (cioè che la condizione sia falsa/non verificata).

Prendiamo nuovamente l'algoritmo 2 dei foglietti tenuti da parte. Traducendo nel diagramma a blocchi la rielaborazione che abbiamo effettuato in maniera da includere la valutazione di condizioni riguardo lo spostamento verso scuola, otterremo

Viaggio scuola.png

che ci schematizza la nostra serie di comandi, che - se notate bene - potremo a questo punto già considerare un piccolo programma. La prossima lezione ci vedrà pertanto impegnati nel trasportare all'interno del mondo dell'interfaccia di Alice le meccaniche che abbiamo visto fino a questo punto.

ESERCIZIO
Come ci è stato possibile trasformare la narrazione della storia dello spostamento da casa a scuola del vostro compagno, così vi chiedo di convertire in struttogramma la soluzione al problema di Fido con il nuovo getto d'acqua. Se avrete domande o se vorrete mostrarmi il compito terminato, potete scrivermi all'indirizzo e-mail che conoscete, allegando il vostro elaborato ad una missiva elettronica contenente l'eventuale chiarimento di cui abbiate bisogno.

(fine lezione in aula)

Diamo a un personaggio animato la capacità di decidere in base alla scena

(la classe viene accompagnata o attesa in laboratorio ad inizio ora)

In classe abbiamo visto come costruire un diagramma con costrutti condizionali studiando un esempio legato alla quotidianità, ma abbiamo avuto anche a che fare con un esercizio (da fare a casa) con protagonista la tartaruga Fido.

Adesso, partendo dal lavoro che avete fatto, proviamo assieme a portarne in scena la vita all'interno della fontana e nei dintorni di essa, utilizzando uno strumento che abbiamo imparato a conoscere qualche lezione fa, il programma Alice per la realizzazione di scene animate tridimensionali.

Ora apriamo il programma e scegliamo come ambiente quello del prato erboso, in cui già avevamo inserito il personaggio del primo esempio di uso dell'interfaccia.

Qualcuno di voi, sperimentando, aveva già trovato e usato la tartaruga come attore delle proprie prove, quindi ora mi può suggerire dove si trovi...

(un alunno suggerisce)

Perfetto! Allora, clicchiamo sul tasto "Add Objects" ed inseriamo la tartaruga, la fontana del parco (in fondo, Fido dimorava vicino alla fontana del parco del palazzo del Re) ed una roccia. Dovremmo avere un ambiente pressappoco così disposto

Fount turtle.png

al cui interno andremo a riprodurre la prima delle regole algoritmiche del protagonista della fiaba. Per avere chiaro il nostro intento, riportiamo qui l'istruzione

  • SE il getto della fontana è funzionante
    ALLORA giocherò con lo zampillo
    ALTRIMENTI nuoterò attorno alla roccia più grande

Lavorando con le azioni disponibili per il modello della tartaruga, dovremo soltanto avere qualche ulteriore accorgimento. Per fare prima, infatti, ho già predisposto le azioni complesse del nostro caro Fido, in modo che potremo utilizzarle senza preccuparci dei singoli dettagli (sappiamo che muoversi attorno alla roccia presupponga non esserle sopra e spostarsi a distanza costante da essa, quindi daremo per scontate questi passi affinché si veda che la tartaruga sia in movimento). Assieme a tali azioni, ho creato un piccolo meccanismo che si occupa di far finta che sia accesa o meno la fontana: ci basterà interrogarlo per sapere se sarà il caso che il getto d'acqua stia zampillando oppure no.

Le azioni per la tartaruga Fido
Il ciclo di funzionamento della fontana

Se andiamo a vedere nel dettaglio il movimento di Fido, scopriremo riprodotto il suo comportamento, che abbiamo visto essere quello di nuotare attorno allo zampillo se la fontana è accesa o altrimenti attorno alla roccia.

Il movimento di Fido

Come vedete, per realizzare la scelta del movimento da compiere, abbiamo utilizzato un nuovo blocchetto di istruzione, il SE-ALTRIMENTI visto già nel racconto e nello struttogramma, che in inglese possiamo tradurre con la coppia di parole IF-ELSE: grazie alla domanda posta sulla condizione attuale della fontana, l'algoritmo condurrà nel ramo del nuoto attorno all'apertura del getto d'acqua nel caso sia vero che essa sia in funzione, invece porterà al pigro incedere dell'animale attorno al sasso.

A questo punto, potremmo introdurre nuove condizioni ambientali, dalla presenza del sole coperto o meno da nuvole ad altri aspetti (acqua fredda o calda, ulteriori animali presenti, ecc...), utilizzando le finestrelle dei dettagli a sinistra: selezionando dall'elenco in alto il mondo della nostra scena (world), potremo modificare le proprietà esistenti o aggiungere nuovi dati da far considerare al personaggio, creando contenitori di valori da verificare, che possiamo identificare con il termine tecnico di variabili.

Le variabili di ambiente

Anche lo stato di accensione o meno dello zampillo è una variabile, come avete potuto notare, ma è legato direttamente alle variabili proprie della fontana ed è quindi una proprietà specifica di quest'ultima e non dell'intero mondo.

ESERCIZIO 1 Come primo esercizio, da provare adesso in classe, vi domando di sperimentare cosa accada cambiando le proprietà di scena o dei singoli oggetti: provate a variare il colore, la posizione o altre caratteristiche? Se la tartaruga avrà un'opacity del 50%, invece del 100% attuale, come sarà visualizzata?

ESERCIZIO 2 Per casa, invece, vi lascio la storia di Anna, la piccola principessa disubbidiente.

Anna, la figlia del re di un reame lontano lontano, aveva imparato sin da piccola l'importanza di 
decifrare le condizioni secondo cui potersi esprimere liberamente. Quando aveva solamente tre anni, 
le fu spiegata dall'istitutrice l'importanza di regolarsi in base a condizioni SE-ALTRIMENTI; in 
particolare, seguendo le indicazioni del capocuoco di corte, le fu ribadito che non avrebbe mai 
dovuto mangiare cibo a caso nella cucina, come spesso faceva intrufolandosi di soppiatto. 
Specificamente, le fu detto:
SE il cibo è sulla tavola dei pasti 'pronti' ALLORA puoi mangiarlo ALTRIMENTI non devi mangiarlo.
Chiaramente, come molti bambini di tre anni sono abituati tuttora a fare, Anna ignorò queste istruzioni: ella continuava a strisciare in cucina per mangiare pezzi di frutta dal tavolo di preparazione dello chef che, ogni volta che l'acchiappava, la portava dalla governante, la quale la tratteneva almeno una decina di minuti per ribadirle quanto fosse sbagliato comportarsi in quel modo ed ammonirla con un commento finale circa quello che le sarebbe potuto capitare se il cuoco non avesse più voluto limitarsi a reagire così. "SE scherzerai ancora nei prossimi giorni, chissà cosa ti capiterà!" le diceva e la bambina amava ascoltare la logica serie di SE-ALTRIMENTI tanto quanto rubacchiare la frutta, sicché sempre più spesso sperava di essere catturata per sentire la ramanzina.
Un giorno, lo chef stava preparando per cena la zuppa agli otto peperoncini rossi che, come implica il nome, aveva tra gli ingredienti otto tipi diversi di peperoncino, incluso il piccantissimo peperoncino rosso di Dragonia. Sfortunatamente per Anna, il peperoncino rosso di Dragonia aveva un aspetto molto simile a quello di una fragola: lei ne afferrò due e li gettò nella propria bocca. Sentì subito un dolore intenso e un bruciore indescrivibile, tant'è che gli occhi non le smisero di lacrimare per tre settimane. Successivamente a ciò, Anna non disubbidì mai più alle regole SE-ALTRIMENTI che le venivano date. Crescendo e divenendo più responsabile, le furono aggiunte condizioni SE-ALTRIMENTI concatenate, per permetterle di avere accesso ad una varietà più larga di cibi:
SE il cibo è sulla tavola dei pasti 'pronti' ALLORA puoi mangiarlo ALTRIMENTI SE il cibo è sulla tavola dei 'prodotti crudi' E, chiedendo, lo chef dà il permesso ALLORA puoi mangiarlo ALTRIMENTI non devi mangiarlo.
Avendo imparato la lezione dall'incidente del peperoncino, Anna rispettò senza fiatare questa nuova regola meno restrittiva: d'altronde, se il cibo sulla tavola dei pasti pronti si poteva sempre mangiare e se, altrimenti, il cibo sul tavolo dei prodotti crudi era consumabile previa richiesta al capocuoco, la logica era semplice e ricopriva tutti i principali ed importanti casi. Ahimé quelle regole non fermarono chiaramente Anna nel tentare di imbrogliare suo fratello più giovane, che lei convinse a consumare il peperoncino di Dragonia per ben due volte, fino a che... Be', fino a che punto, lo dirà un'altra storia.

Il compito che vi lascio per casa è quello di modellare le due principali regole SE-ALTRIMENTI che sono presentate nel testo, inviandomi poi i vostri elaborati affinché li corregga: mi basterà che descriviate l'algoritmo e che scriviate lo struttogramma, ma se volete poi provare a fare un esempio usando i personaggi disponibili all'interno di Alice, potete mandarmi anche quello.

Non c'è due due senza tre (e quattro, e cinque, e...)

(durata 2 ore in classe + 1 ora in laboratorio + lavoro a casa)

Note generali per il docente: avendo illustrato le potenzialità del concetto di scelta e di percorsi alternativi in base al contesto, sarà premura di questa parte dell'unità didattica completare la disamina delle basi della programmazione, aggiungendo alla costruzione degli algoritmi sinora studiata l'utilizzo delle iterazioni e, quindi, la possibilità di ripetere azioni a seconda che la valutazione dei dati manipolabili rispetti condizioni fissate.

Obiettivi:

  • identificare il susseguirsi di operazioni tra loro uguali come una ripetizione della medesima azione
  • utilizzare in modo corretto le ripetizioni ad ingresso controllato, ad uscita controllata o con un predeterminato numero di iterazioni, a seconda del problema da risolvere
  • trasformare le istruzioni iterative nella corrispondente visualizzazione grafica del formalismo strutturato
  • utilizzare variabili di appoggio o contatori
  • consentire al personaggio modellato in Alice di ripetere la medesima azione o di compiere sequenze di movimenti continue nel tempo

Metodologie: La serie di lezioni si articolerà in più fasi, su almeno due appuntamenti, durante cui gli alunni saranno guidati nel ragionare se sia sufficiente ciò che si sia già visto al fine di modellare compiti ed operazioni ripetitive. Inizialmente, nella prima lezione, lanciando un dado a sei facce e stabilendo di interrompersi all'uscita di un determinato numero, si mostrerà il semplice meccanismo della ripetizione. Richiamandosi poi ad ulteriori esempi narrativi, la classe divisa in gruppi sarà stimolata a proporne l'analisi e lo studio (che possiamo identificare con la strutturazione e la risoluzione del problema), da completare a casa. A partire da questi esempi, il più rappresentativo sarà utilizzato per introdurre durante la seconda lezione la categoria di istruzioni iterative, proponendole come potente mezzo per rappresentare il susseguirsi di sequenze di operazioni tra loro identiche (o differenti soltanto per il contenuto da manipolare) e sarà fornita la caratterizzazione grafica per la costruzione di sequenze cicliche mediante struttogrammi, studiando la prima delle tre varianti esistenti in letteratura (lasciando ad eventuali approfondimenti la presentazione degli altri due costrutti iterativi). Sarà poi presentata la storia della lepre e della tartaruga, che verrà tradotta nel programma da applicare ai corrispondenti personaggi animabili nel contesto dell'interfaccia di Alice durante la terza lezione, in cui si completerà l'argomento, favorendo l'applicazione dei concetti visti a partire da proposte autonome degli studenti.

Strumenti: Durante il primo incontro, che avverrà in aula, verrà mostrato un semplice esempio di ciclo, con l'uso del dado e della lavagna; sarà poi lasciato il tempo agli studenti di riflettere sulle varianti delle possibili soluzioni di altri esempi/esercizi, che dovranno essere concretizzate su carta a partire dalla traccia iniziale (la prima metà della storia, fornita dall'insegnante, che questa volta non avrà con sé il libro, ma i fogli stampati con le tracce e quelli con le rispettive soluzioni offerte dai testi originali). La riflessione seguente, iniziata dall'osservazione degli elaborati, condurrà nella seconda lezione (anch'essa in aula) all'introduzione teorica e grafica dei concetti, utilizzando il pc collegato al videoproiettore o alla LIM e prevedendo una terza parte separata in laboratorio, oppure in laboratorio a computer spenti. La terza lezione avverrà in laboratorio, con l'uso del computer consentito agli alunni, affinché - dopo una breve spiegazione dei comandi dell'interfaccia - possano realizzare la semplice storia con iterazioni vista nel precedente appuntamento, sino all'implementazione delle istruzioni in uno o più script a blocchi in Alice.


(la classe inizierà la lezione in aula)

Buongiorno a tutti! Quest'oggi cominceremo la lezione con l'aiuto di questo

(viene tirato fuori un dado)

È un dado, un semplice dado a sei facce, ma ci aiuterà a comprendere qualcosa che ci tornerà utile anche in presenza di dadi con più facce (eh sì, ne esistono e a fine lezione magari ve ne mostrerò qualcuno). Pensate che questo oggetto può permetterci di controllare cosa andremo a fare, con un meccanismo simile a quello che abbiamo esaminato nelle passate lezioni. Se tiro il dado e segno sulla lavagna cosa esca, ma al contempo mi chiedo

SE non esce 6
ALLORA tiro di nuovo il dado
ALTRIMENTI mi fermo

sto usando un meccanismo SE-ALTRIMENTI per fare un'azione in relazione a quanto esca dal tiro di dado, che è il nostro risultato intermedio (ricordate? Un risultato ottenuto durante l'esecuzione, ma che non è il nostro obiettivo finale).

(dopo qualche tiro di dado, arriva 6 e ci si ferma)

Vi siete accorti che non abbiamo fatto soltanto una scelta su come proseguire? In realtà, nel momento che abbiamo esaminato il valore uscito, l'azione compiuta è stata quella di tirare di nuovo il dado, che ci ha portato ancora a chiedere lumi sul risultato uscito, e così via fino all'arrivo di un 6. Abbiamo ripetuto il tiro del dado finché non è uscita la faccia desiderata. Se ripensiamo agli esempi delle prime lezioni, quelli in particolare che raccontavano l'arrivo a scuola dei vostri compagni che usano il bus, potete facilmente pensare che il mezzo pubblico non si limiti a passare vicino a casa e giungere presso la scuola, ma che nel viaggiare tocchi diverse fermate. Quello che i vostri compagni fanno è quindi chiedersi

SE non è la fermata vicino a scuola
ALLORA rimani sull'autobus
ALTRIMENTI scendi dall'autobus

finché non siano arrivati. La necessità di riprodurre più volte la valutazione delle condizioni è via via evidente man mano che proceda il racconto del viaggio verso la scuola, ma non accade solo in questo contesto: quante volte si rivela durante la nostra giornata il bisogno di ripetere più volte un'azione o una sequenza di azioni, ad esempio nel momento del cambio della lezione, quando bisogna mettere via i libri dell'ora precedente e tirar fuori quelli della sequente, o agire altrimenti, oppure quando a casa si vuole mettere in ordine la propria camera, disponendo gli oggetti al posto giusto quando se ne abbia l'occasione.

Come posso fare ripetere le stesse sequenze di azioni?

(l'insegnante mette via il dado ed estrae alcuni fogli, contenenti fiabe)

Adesso divideremo la classe in maniera che formiate gruppi di al massimo tre persone. A ciascun gruppo consegnerò una di queste storie brevi, ma che ci torneranno utili per vedere alcuni casi in cui si debbano ripetere delle azioni.

ESERCIZIO

Il foglio che avete contiene una fiaba il cui svolgimento preveda la presenza di una qualche azione ripetuta: il compito è quello di provare a scrivere l'algoritmo della storia, in particolare individuando l'istruzione soggetta ad essere eseguita più volte e la condizione valutata che permetta tale operazione. Mi raccomando, non sono tutti testi diversi, ma vi invito a lavorare solo tra i membri del gruppo per una decina di minuti, prima di scambiare opinioni con il resto della classe; invece, se avete bisogno, potete alzare la mano e verrò a darvi delucidazioni.

(si lascia il resto dell'ora di lezione per l'esercizio sui brani, prima nei gruppi separati, poi stimolando la collaborazione tra i gruppi per lo scambio di idee, controllando che vi sia uno scambio di opinioni che conduca effettivamente al lavoro richiesto; i testi utilizzati sono La rana e il bue, La cornacchia e la brocca, Il corvo e la volpe)

Avete terminato? Chi ha finito, può consegnarmi il foglio, se vuole. Ma nessun problema, vi lascio anche il tempo a casa, aspettando in un elaborato di testo le conclusioni che avrete tratto: dal lavoro che avrete compiuto riprenderemo la prossima lezione.

(fine della prima lezione)

(seconda lezione in aula o in laboratorio con i computer tali da non costituire distrazioni, quindi al limite utilizzabili per seguire lucidi o presentazione di spiegazioni)

Benvenuti a tutti. Ho visto i vostri lavori (almeno quelli consegnatimi) ed ora iniziamo prendendo esempio dalla favola della cornacchia che voleva bere dalla brocca, per vedere quale sia il passaggio fondamentale da voi individuato - e in questa storia è molto evidente!

L'autore della favola scrive

Le venne un'idea e, preso un sasso, lo gettò nella brocca.
Poi prese un altro sasso e lo gettò nella brocca.
Ne prese un altro e gettò anche questo nella brocca.
Ne prese un altro e gettò anche questo nella brocca.
Ne prese un altro e gettò anche questo nella brocca.
Ne prese un altro e gettò anche questo nella brocca.
Piano piano vide l'acqua salire verso di sé, e dopo aver gettati altri sassi riuscì a bere 
e a salvare la sua vita.

Come vedete, l'azione della cornacchia può riassumersi in una valutazione effettuata più volte, fino a che non si verifichi la condizione di avere l'acqua traboccante per poterla bere.

In informatica esiste un insieme di istruzioni particolari che riescono a racchiudere in loro la capacità di controllare la situazione attuale, decidendo la prossima azione da compiere, e la possibilità di ripetere il controllo più volte, rieseguendo eventualmente l'azione fintanto che si verifichi la condizione in esame. Questo tipo di operazione prende il nome tecnico di iterazione e parleremo in questo caso di costrutti o comandi iterativi. La forma di queste istruzioni è molto simile a quella vista per i costrutti condizionali e corrisponde alla coppia di termini FINCHÉ-FAI: nel dettaglio, viene esplicitata a fianco del FINCHÉ una condizione che, sino a quando abbia valore VERO, debba consentire la ripetizione dell'azione o della sequenza di passi esplicitata dopo la parola FAI; in caso di valore FALSO è invece previsto che il ciclo di ripetizioni termini e si vada oltre.

La nostra cornacchia si è perciò comportata secondo la seguente porzione di algoritmo

FINCHÉ l'acqua nella brocca è troppo in basso
FAI
   prendi un sasso
   getta il sasso nella brocca

Se osservate bene, abbiamo ridotto in poche righe la ripetizione scritta per esteso, seguendo la nostra nuova forma di scrittura: oltre ad essere più breve, è anche più facile da leggere. È un fattore importante questo, oltre alla comodità, perché l'uso dell'istruzione in maniera corretta rende facile anche la scrittura del futuro programma.

Alla medesima maniera, potremmo ricavare gli algoritmi per gli altri esempi...

(a discrezione del docente, si prendono anche le altre due favole; è bene notare come la storia della rana e del bue consenta l'introduzione del concetto di ciclo infinito)

Inoltre non ci si limita ad usare azioni semplici o sequenze di azioni singole: all'interno del ciclo di istruzioni ripetute possiamo inserire anche delle selezioni, annidandole come visto in presenza di selezioni dipendenti dalla scelta del ramo di altre precedenti, oppure addirittura altre iterazioni, rendendo il meccanismo capace di risolvere problemi più complessi.

I costrutti iterativi in forma di struttogramma

Come abbiamo però visto nel caso del SE-ALLORA-ALTRIMENTI, può esserci d'aiuto rappresentare graficamente l'algoritmo che abbiamo ricavato.

Secondo il formalismo degli struttogrammi, l'istruzione FINCHÉ-FAI può essere visualizzata con il blocco di diagramma costituito una forma ad L rovesciata al cui interno vi sia un sotto-blocco, contenente l'istruzione o la serie di azioni da compiere fin quando si verifichi la condizione.

Iterazione.png

Se controllate con attenzione, vedrete che il blocco interno non superi mai la massima dimensione della parte più esterna: questo indica che, nel caso la situazione veda mutare in falsa la condizione valutata, l'algoritmo debba proseguire oltre, non ripetendo più le istruzioni e passando subito alla prima azione che segua dopo l'iterazione. È importante quindi notare che l'esecuzione del ciclo sia ben visibile come terminante in tale occasione.

Ma abbiamo anche accennato al fatto che il contenuto del blocco interno possa essere non soltanto una sequenza di istruzioni semplici, bensì anche uno o più comandi di selezione oppure anche ulteriori costruzioni iterative che vadano qui ad annidarsi. Prendiamo ad esempio il gioco del tiro del dado visto nella passata lezione: se volessimo non soltanto proseguire finché il numero uscito non sia 6, ma volessimo anche dire ad alta voce se il valore sia minore di 4, potremmo scrivere un algoritmo piu o meno simile a questo

FINCHÉ il numero uscito non sia uguale a 6
FAI
   tira il dado
   SE il numero uscito è più piccolo di 4
   ALLORA dì "il numero è più piccolo di 4"
   ALTRIMENTI dì "il numero è più grande di 4 o uguale a 4"

che potremmo tradurre nello struttogramma

Ciclo se.png

La valutazione della condizione del SE-ALTRIMENTI innestato sarà perciò valutata solo se si potrà ripetere il blocco in base alla valutazione d'ingresso esterna che fa parte del FINCHÉ-FAI, cosa ben visibile dal disegno, altrimenti si andrà avanti nell'esecuzione.

Una corsetta di animali nel mondo circostante

Introdurremo adesso un esempio che porteremo avanti sino all'intera prossima lezione. Grazie alla storia che andremo ad analizzare e ricostruire assieme, potremo vedere come sia possibile far disputare una gara tra due personaggi, la lepre e la tartaruga, vedendo le azioni compiute passo passo. Per raggungere il nostro scopo andremo a utilizzare il blocco di ripetizione, prima come algoritmo, poi nello struttogramma ed infine anche all'interno della scena di Alice, cosa che nella pratica proveremo effettivamente in laboratorio nella prossima lezione.

Innanzitutto, leggiamo la favola che ci dara' lo spunto, cioè La lepre e la tartaruga.

La lepre un giorno si vantava con gli altri animali: "Nessuno può battermi in velocità!" 
diceva "Sfido chiunque a correre come me."
La tartaruga, con la sua solita calma, disse: "Accetto la sfida."
"Questa è buona!" esclamò la lepre; e scoppiò a ridere.
"Non vantarti prima di aver vinto..." replicò la tartaruga e aggiunse "Vuoi fare questa gara?" 
Così fu stabilito un percorso e dato il via.
La lepre partì come un fulmine: quasi non si vedeva più, tanto era già lontana. Poi si fermò, e per mostrare il suo disprezzo verso la tartaruga si sdraiò a fare un sonnellino. La tartaruga intanto camminava con fatica, un passo dopo l'altro, e quando la lepre si svegliò, la vide vicina al traguardo. Allora si mise a correre con tutte le sue forze, ma ormai era troppo tardi per vincere la gara.
La tartaruga sorridendo disse: "Non serve correre, bisogna partire in tempo."

Come dicevamo, i personaggi coinvolti sono due, entrambi impegnati a fare gara di corsa lungo un tragitto. Dobbiamo quindi identificare l'algoritmo che faccia muovere la lepre e quello che modelli la modalità di spostamento della tartaruga.

La lepre arriverà poco oltre la metà del tragitto, poi si fermerà un po' di tempo, per riposare. Possiamo definire il suo algoritmo come

FINCHÉ mi trovo prima della metà del tragitto
FAI
   compio un passo
controllo la tartaruga
FINCHÉ la tartaruga è lontana
FAI
   SE la tartaruga non è vicina al traguardo
   ALLORA dormo un po' di secondi
   ALTRIMENTI mi sveglio
   controllo la tartaruga
FINCHÉ non arrivo al traguardo
FAI
   compio un passo 

Il problema della lepre sta nel fatto che abbia aspettato troppo a lungo prima di ripartire, cosa che abbiamo ben definito nell'istruzione FINCHÉ centrale. Al contrario il movimento della tartaruga risulta espresso con una logica semplice e racchiusa in un solo ed unico comando

FINCHÉ non arrivo al traguardo
FAI
   compio un passo

Il passo della tartaruga è più lento, come ci racconta l'autore, ma il fatto che sia costante e non spezzato fa sì che non vi siano attese e che la condizione da valutare non cambi, non obbligandoci a spezzare la ripetizione come avvenuto per la lepre. Guardate come la realizzazione sia così semplice e di facile lettura.

ESERCIZIO
Oltre a ripassare la teoria che abbiamo introdotto, vi lascio come compito la costruzione dei blocchi del diagramma Nassi-Shneiderman, sia per quanto riguardi la lepre che per quanto concerne la tartaruga: saranno fondamentali per creare la rappresentazione in Alice. In vista di questo, provate a pensare a come potrà essere la scena che andremo a mostrare, di quali oggetti ulteriori avremo bisogno oltre ai personaggi, a quali saranno i dati variabili nell'ambiente.

(la lezione finisce assegnando l'esercizio)

(la lezione viene cominciata e svolta interamente in laboratorio)

Salve a tutti! Oggi ci siamo trovati in laboratorio, per mettere in pratica effettivamente l'uso del costrutto visto sinora per l'iterazione. Per raggiungere il nostro scopo, apriamo tutti l'interfaccia di Alice e guardiamo la sezione in basso a destra, dove viene costruito lo script.

I costrutti ciclici in Alice.

In basso, potete vedere diversi termini: oltre a quelli da noi già conosciuti per far eseguire comandi o valutare condizioni, vi sono quattro voci ed ognuna di esse identifica un differente tipo di iterazione consentita dal programma; quella da noi definita con la parola FINCHÉ corrisponde in inglese all'operazione WHILE e sarà l'istruzione che useremo per valutare e ripetere in modo da far correre o fermare per qualche periodo i nostri personaggi. Aggiungeremo alla scena allora la tartaruga e la lepre dall'aspetto cartoonesco: non ci serve siano realistiche, in fondo la nostra è una favola con animali umanizzati!

La scena prima della gara.

La tartaruga potrà gareggiare e controllerà soltanto di essere arrivata alla fine: come abbiamo visto, il suo algoritmo sarà costruito in questa maniera

Algo tarta.png

La lepre, invece, avrà un comportamento più complesso, dovendo fermarsi a metà prima di ricominciare, pensando di battere la tartaruga sullo sprint finale. Ipotizzando che la metà sia all'incirca sulla seconda staccionata alla propria destra, essa si fermerà e riprenderà ad andare solo quando la tartaruga sarà in prossimità dell'arrivo, perdendo la gara come racconta la favola.

Algo lepre.png

Adesso quindi siete liberi sino a fine lezione nel completare la scena ed aggiungere eventuali altre complicazioni alla gara, allungando il percorso o cambiando le variabili esistenti, o ancora aggiungendo personaggi di contorno. In ogni momento, sarò qui pronto per assistervi o discutere i cambiamenti assieme.

(si lascia proseguire gli studenti nell'esplorazione avanzata, fino a 5 minuti dalla fine, poi il docente riprende l'attenzione della classe)

Ricapitolando, abbiamo visto le diverse fasi di costruzione di un programma, quale racconto di una storia fatto secondo strumenti informatici e forme specifiche. Abbiamo scoperto come far agire i personaggi, ripetendo operazioni o effettuando scelte. Nel prossimo appuntamento delle ore di Informatica tireremo le somme di tutto il procedimento, facendo una breve verifica da terminare a casa, un po' più complessa degli esercizi visti sinora.

(si chiudono lezione e la parte principale di spiegazione degli argomenti)

Esercitazione conclusiva: la cicala e la formica.

(lezione di due ore con inizio del compito + lavoro a casa; un'ora per consegna e correzione comune successiva, con discussione finale sul senso del percorso fatto)

Note generali per il docente: ci ispireremo alla classica fiaba de La cicala e la formica, che viene riproposta anche dal blog da cui questa trattazione prende spunto (a questa pagina). In tale risorsa, essa viene utilizzata per accennare all'importanza del processo algoritmico; noi invece, tramite le due sezioni seguenti, vorremo anche mostrare in particolare l'uso di iterazioni senza presenza di strutture dati o, al contrario, in presenza di esse almeno in forma lineare, favorendone l'apprendimento tramite la strutturazione algoritmica e l'implementazione della storia secondo il formalismo multimediale sinora impiegato.

Obiettivi:

  • costruire l'intero algoritmo che modella una storia, combinando istruzioni semplici, costrutti condizionali ed iterativi nel modo corretto
  • riprodurre l'algoritmo esistente in forma narrativa combinando opportunamente i blocchi di uno struttogramma
  • applicare l'algoritmo costruito agli attori dell'interfaccia di Alice, ricostruendo la storia e le interazioni dei personaggi
  • utilizzare in maniera elementare le collezioni di elementi, sotto forma di liste indicizzate

Metodologie: L'introduzione prevederà il breve racconto della favola di riferimento che porrà le basi dell'esercitazione conseguente, con accenni a come delineare i personaggi e le loro caratteristiche quali interpreti di una parte della narrazione. L'insegnante, dopo aver suddiviso la classe in coppie o gruppi di tre studenti ciascuno ed aver indirizzato la costruzione del più semplice esempio della cicala, porrà l'accento sulla necessità di trovare una via per rappresentare un esempio di contenitore per una serie di oggetti della stessa natura, come particolare visione legata al comportamento della formica. Tuttavia non obbligherà all'utilizzo di tale espediente ma, consentirà agli studenti di scegliere come operare nella definizione della sequenza del racconto, con la richiesta di descrivere un procedimento suddiviso in azioni atomiche, che dovrà poter essere trasposto graficamente in blocchi strutturati. Questo compito, che potrà essere portato a termine anche con il lavoro a casa, condurrà ad una seconda lezione, durante la quale ogni gruppo avrà il compito di tradurre in una scena su Alice le dinamiche della favola (usando anche sprite differenti dai personaggi citati). Sul lavoro di progettazione e sulla successiva implementazione sarà dovere del docente esprimere una valutazione formativa, che potrà avere valenza sommativa in caso di necessità.

Strumenti: Il luogo dell'intera fase conclusiva di questo percorso sarà il laboratorio, sia dal punto di vista fisico che nelle dinamiche di una concezione virtuale costituita dall'area di lavoro su cui operare da casa. Effettuata un'introduzione iniziale utilizzando l'unico PC del professore, collegato a videoproiettore o LIM, i gruppi potranno lavorare sia su carta, che utilizzando un computer per ciascuno, sperimentando in prima persona gli effetti della combinazione di ogni blocco già visto rispetto all'esecuzione da parte dei personaggi di Alice. Su un'area di memoria condivisa, sarà premura degli studenti memorizzare il lavoro in corso, sia nella relazione descrittiva (per gli struttogrammi basterà la versione a matita e penna su foglio, da conservare in buono stato) che nel file contenente la scena con gli script annessi, in modo da poter proseguire a casa e mantenere la consegna dell'elaborato entro le tempistiche della lezione seguente compresa, all'interno di un supporto liberamente consultabile dall'insegnante.


(la lezione è in laboratorio)

Ben arrivati ragazzi! Oggi vi divido io per coppie e passeremo a fare una piccola verifica sulla quale vi darò voto. In realtà, prima di iniziare, vi devo specificare alcuni dettagli: innanzitutto leggeremo assieme la traccia del problema che vi darò da risolvere, costituita dalla favola de "La cicala e la formica".

(si legge la storia assieme, prima di proseguire)

Abbiamo due personaggi, una cicala ed una formica, e di entrambi vorrei che ne definiste gli algoritmi, dopo aver predisposto la scena in maniera corretta.

Esiste già un prototipo (ovvero un modello semplificato e ancora in fase di sviluppo) che vi ho messo nello spazio riservato ai materiali delle lezioni

(si suppone l'esistenza di uno spazio comune, come il registro elettronico, dove caricare file liberamente accedibili dagli studenti)

In esso ho già inserito alcuni elementi, come il cibo da raccogliere sparso sul terreno e il meccanismo che ci farà trascorrere la stagione calda fino all'arrivo del freddo (quando invece di raccogliere, consumeremo le scorte). Per ogni richiesta ho dettagliato i punteggi e alla fine della prova, che potete portare a compimento al massimo entro l'inizio della prossima lezione, dovrete consegnarmi un breve testo di descrizione degli algoritmo, gli struttogrammi e il file con il mondo della scena da voi completato con gli script sui personaggi. La consegna va fatta preferibilmente nello spazio predisposto nel servizio di condivisione che la scuola mette a disposizione, ma in alternativa potete consegnarmi tutto tramite e-mail.

Creiamo la scena!

Per prima cosa, quindi, vi invito ad aprire Alice e caricare il file che vi ho reso disponibile. Ora nella scena potrete disporre oggetti di vario tipo, a vostro piacere, ma non vi consiglio di dilungarvi troppo: vorrei soltanto che prendeste confidenza con l'ambiente in cui posizionerete i protagonisti. Se andate a vedere tra le operazioni definite sull'intero mondo, ve n'è una che ho creato appositamente per aiutarvi: si chiama quale_clima e, se interrogata, risponde se sia freddo o caldo, in rapporto al tempo trascorso (il meccanismo, un po' complicato, viene gestito da una variabile su cui agisce un'altra operazione, che si occupa di variare quella caratteristica più il colore dell'ambiente circostante, che da prato verde diventa innevato). Tale funzione vi tornerà utile affinché il comportamento dei nostri personaggi passi dalla raccolta al consumo del cibo: a voi spetterà capire in che modo utilizzarla per stabilire quando e come gestire il passaggio di stagione. Insieme a questo comando aggiuntivo, vi è un'altra istruzione, specifica, che vi ho sempre messo tra quelle relative all'ambiente, ed è la generazione del cibo, indicata come piazza_cibo. Essa si limita a far comparire sul terreno degli oggetti che dovranno essere raccolti dalla cicala e dalla formica toccandoli: a voi spetterà farla eseguire al momento opportuno per popolare il mondo con il cibo. Questa fase, portata a compimento, vi darà fino a 10 punti sul totale della valutazione, 5 per l'utilizzo corretto di ciascuna operazione, costruendo anche l'algoritmo che regola l'ambiente e il relativo struttogramma.

Costruiamo la cicala

Per prima cosa, una volta definito l'ambiente, dovete costruire l'algoritmo della cicala. Vi dò un suggerimento: per memorizzare gli elementi che la cicala raccoglie può bastare una sola variabile, perché, se avete sentito bene, nella storia l'animale raccoglie soltanto ciò che consuma immediatamente, altrimenti dorme o si diverte, pertanto è come se raccogliesse un solo prodotto per volta. Questo, purtroppo, la farà morire all'arrivo della stagione fredda: a voi lascio il compito di scoprire come farla scomparire. Realizzato l'algoritmo e il relativo struttogramma (su carta o col programma che vi ho indicato qualche lezione fa), dovrete poi inserire il personaggio in Alice e renderlo vivo con il proprio script di comandi, che sapete ormai già utilizzare. Questa parte del compito vale 10 punti, 6 per l'algoritmo e 4 per l'implementazione con il programma per riprodurre la storia.

Costruiamo la formica

Prendendo esempio da ciò che è stato fatto per la cicala, avete anche il compito di costruire l'algoritmo della formica, partendo dalla definizione dei passi e, successivamente, creando lo struttogramma usando i blocchi studiati nelle lezioni. Attenzione però ad un piccolo particolare: la formica, invece di consumare subito ciò che raccoglie, deve mantenere da parte il cibo. Per fare questo, in informatica viene definito il concetto di collezione di valori, cioè di una speciale tipologia di variabili che fanno da contenitori per valori dello stesso tipo. Spiegheremo meglio il concetto nelle prossime lezioni, ma già da ora potrete utilizzarlo, creando una variabile definita in Alice come List e aggiungendo il cibo raccolto al suo interno, come se avessimo la riserva del formicaio con le sue piccole cellette, ognuna contenente un elemento consumabile in futuro e tenuto di scorta per la stagione fredda. In questo caso, inoltre, consumare non sarà soltanto svuotare una variabile con un valore singolo, ma utilizzare via via i valori tenuti da parte, accedendo a ciascuno in sequenza. Sono qui per chiarire meglio il concetto, ad ogni modo, perciò vi incoraggio a provarne l'uso nel vostro algoritmo; nel testo e nel diagramma, potrete scrivere semplicemente "inserisci l'oggetto nella lista di riserva" o con parole simili. Anche questa parte vale 10 punti, 6 per la realizzazione dell'algoritmo e del diagramma a blocchi, 4 per gli script che animino la formica.

A questo punto, posso solo dirvi: BUON LAVORO!

Alternative e approfondimenti

La scelta di Alice si confà all'origine di questa piattaforma come strumento per la creazione di programmi che servano a raccontare storie, ma sfruttando le tematiche introdotte, l'implementazione può altresì essere trasportata all'interno di contesti differenti, come l'uso del più diffuso software Scratch (o di Snap!, che vi somiglia per la realizzazione a blocchi categorizzati per colore e forma). Mancando alcuni strumenti ed essendo l'interfaccia pensata per una realizzazione improntata all'uso in un browser, la disposizione ed alcune parti risulteranno differenti, ma non risulterà difficile tradurre gli esempi affinché si adattino alle esigenze.

Durante la serie di lezioni riguardanti il costrutto di selezione, nel momento in cui si introduce la valutazione del valore di verità di una condizione come vero/falso, potrebbe essere il caso di deviare la spiegazione ricollegando i concetti dell'algebra booleana, approfondendo in tal senso le regole e la costruzione delle espressioni di tale tipo (con particolare attenzione ai connettori che vengono adoperati, almeno quelli fondamentali e la negazione). Seguendo la diramazione e strutturando il lavoro, potrebbe nascere quindi una sotto-unità specifica per l'argomento, eventualmente ricollegandosi all'algebra binaria se in una classe di liceo scientifico con indirizzo scienze applicate o se in un istituto tecnico industriale ad indirizzo informatico.

Trattando la selezione, potrebbe anche essere aggiunta la variante della selezione multipla sui valori di un'espressione, nella forma dell'istruzione CASE invece che delle sole IF annidate, sfruttando la modellizzazione esistente peraltro anche in forma di struttogramma. Inoltre, per gli studenti interessati ad approfondire la realizzazione in Alice, può essere introdotta l'opportunità della gestione di input ottenuti dai device hardware durante l'esecuzione, come il click del mouse o la pressione di un tasto della tastiera.

La forma generica del costrutto di selezione multipla.

Allo stesso modo, tale possibilità può essere utilizzata in seguito con i costrutti iterativi, per modellare azioni l'interazione dell'utente con i personaggi e consentire di muoverli in azioni più complesse (l'obiettivo può tradursi in una storia animata con l'intera descrizione della fiaba, oppure nella creazione di un piccolo elaborato ludico multimediale) e, per questo scopo, si potrà parimenti approfondire lo studio delle iterazioni prevedendo l'uso di cicli FOR e REPEAT...UNTIL/DO...WHILE come varianti specifiche e più adatte alla soluzione di particolari classi di problemi.

Gli altri possibili costrutti alternativi: DO...WHILE (A), REPEAT...UNTIL (B) e FOR (C).

Il lavoro visto nella verifica finale potrebbe altresì essere strutturato diversamente, partendo non da una traccia comune a tutti, ma lasciando agli studenti la possibilità di proporre da quale storia ricavare la scena di cui realizzare gli algoritmi: con un lavoro in coppia (parimenti alla metodologia già adoperata) oppure anche da soli, la valutazione potrebbe perciò considerare il piccolo progetto ed il lavoro di cooperazione come elementi per l'espressione del giudizio.

Successivamente a questa visione dei comandi di base e delle proprietà, il lavoro potrebbe evolversi nella direzione dello studio delle funzioni, come sotto-storie che conducano alla storia principale: già gli esempi mostrati si prestano a questo in quanto a contenuti, mentre il formalismo dei diagrammi di Nassi-Shneiderman (che ne prevedono un apposita rappresentazione grafica) e la presenza predominante della logica ad oggetti all'interno di Alice rendono disponibili senza dubbio utili mezzi per la strutturazione dei problemi in logica divide et impera top-down.

Fonti bibliografiche e siti

Strumenti personali
Namespace

Varianti
Azioni
Navigazione
Strumenti