Tecnologie Innovative per la Didattica
dell'Informatica
Sviluppo e tecnica dei videogiochi
In collabotazione con il Prof. Vittorio Scarano dell’Universita di Salerno
Perché cito Wikipedia in questi appunti?
Perché se fai una domanda ad un allievo dopo averti risposto aggiunge la frase “Professò,
lo dice anche Wikipedia”
E allora “Evviva Wikipedia”, però il videogioco ce lo creiamo noi, grazie alla vostra infinita
creatività ed alle nostre piccole conoscenze.
Introduzione al corso
•
Nativo digitale
–
“persona che è nata quando le tecnologie digitali già erano
–
molto diffuse…
–
ma non per questo ci capisce automaticamente qualcosa”
–
Intervento di Obama sulle
competenze digitali
"Don't just play
your phones,
program it!"
–
Scenario


Informazioni pratiche
Obiettivi
Luoghi
Classe: introduzione agli algoritmi
Fonte:Wikipedia
Algoritmo
Un algoritmo è
un
procedimento
formale
che
risolve
un
determinato problema attraverso un numero finito di passi. Il termine deriva dalla
trascrizione latina del nome del matematico persiano al-Khwarizmi[1], che è
considerato uno dei primi autori ad aver fatto riferimento a questo concetto.
L'algoritmo è un concetto fondamentale dell'informatica, anzitutto perché è alla
base della nozione teorica di calcolabilità: un problema è calcolabile quando è
risolvibile mediante un algoritmo. Inoltre, l'algoritmo è un concetto cardine anche
della fase di programmazione dello sviluppo di un software: preso un problema da
automatizzare, la programmazione costituisce essenzialmente la traduzione di un
algoritmo per tale problema in programma, scritto in un certo linguaggio, che può
essere quindi effettivamente eseguito da un calcolatore.
Un linguaggio di programmazione, in informatica, è un linguaggio formale, dotato
(al pari di un qualsiasi linguaggio naturale) di un lessico, di una sintassi e di
una semantica ben definiti. È utilizzabile per il controllo del comportamento di
una macchina
formale o
di
una
implementazione
di
essa
(tipicamente,
un computer) ovvero in fase di programmazione di questa attraverso la scrittura
del codice sorgente di un programma ad opera di un programmatore. Condizione
sufficiente
per
un
linguaggio
per
essere
programmazione è l'essere Turing completo.
considerato
un
linguaggio
di
Flow chart
Quello dei diagrammi di flusso (in inglese detti anche flow chart) è un linguaggio
di modellazione grafico per rappresentare il flusso di controllo di algoritmi,
procedure, istruzioni operative (in senso lato).
Esso consente di descrivere in modo schematico:

le operazioni da compiere, rappresentate mediante sagome convenzionali (come
rettangoli, rombi, esagoni, parallelogrammi, rettangoli smussati...) all'interno delle
quali un'indicazione testuale descrive l'attività da svolgere

la sequenza nella quale devono essere compiute, rappresentate con frecce di
collegamento.
Per questa loro connotazione topologica i diagrammi di flusso possono essere ricondotti
alla classe più ampia dei diagrammi a blocchi, che a loro volta rientrano nell'ancora più
vasta categoria delle mappe concettuali, utilizzate soprattutto per la descrizione e la
rappresentazione delle informazioni e della conoscenza.
I diagrammi di flusso trovano la loro applicazione in vari ambiti, ma quello in cui
storicamente si sono maggiormente affermati è stato quello informatico dove, solo in tempi
più recenti, sono stati affiancati da altri strumenti metodologici quali lo pseudocodice e
l'UML.
Blocchi elementari
Esistono varie notazioni per la rappresentazione con diagrammi di flusso. Tutte le
notazioni sottendono a un meta-modello molto semplice, caratterizzato da una lettura
sequenziale:
1. si parte dal blocco iniziale
2. si segue la freccia in uscita
3. si giunge al blocco successivo e si effettua l'operazione descritta nel blocco
4. si procede iterando i passi 2 e 3 fino a giungere al blocco finale.
Tra le operazioni si distinguono:

azione, che comportano una attività o un'elaborazione

test, che indicano due o più direzioni in base a un fattore di decisione

ingresso/uscita, che comportano l'immissione di informazioni dall'esterno oppure l'invio
di informazioni verso l'esterno
La notazione più semplice e più frequentemente utilizzata prevede dunque 5 tipi di blocchi
elementari:
blocco iniziale
blocco finale
blocco di I/O
blocco di Elaborazione
blocco di controllo
Una combinazione di blocchi elementari descrive un algoritmo se:

viene usato un numero finito di blocchi

lo schema inizia con un blocco iniziale e termina con un blocco finale

ogni blocco soddisfa le condizioni di validità
Condizioni di validità

condizioni sui blocchi:

blocco azione e blocco lettura/scrittura: ogni blocco di questi due tipi ha una
sola freccia entrante e una sola freccia uscente

blocco di controllo: ogni blocco di questo genere ha una sola freccia entrante e
due frecce uscenti

condizioni sulle frecce:

ogni freccia deve entrare in un blocco

sempre possibile raggiungere il blocco finale
Esempio di algoritmo
Calcolare la somma 3+5
Come può un automa sviluppare una calcolo con una sequenza di istruzioni?
Teniamo sempre bene a mente che una macchina deve essere istruita ad eseguire
delle azioni, che mai potrà eseguire in modo autonomo ed indipendente come il
cervello umano
Per tale scopo un elaboratore di dati è stato dotato di un circuito elettronico
chiamato CPU, che funge da simulatore del cervello
e di un circuito elettronico, chamato R.A.M., che funge da memoria per ricordarsi i
dati da elaborare e che può immaginarsi come una sequenza di celle numerate. In
ogni cella viene memorizzata una informazione
Ogni cella della memoria, che contiene dati, può essere pensata come una scatola
che si apre e si chiude per conservare o prelevare dati
Un programmatore di istruzioni non può, di certo, ricordarsi tutti i numeri delle celle
di memoria in cui vengono conservati i dati, nel nostro caso i numeri 3 e 5 da
sommare, anche perché i dati vengono memorizzati a caso (random) nelle celle
libere.
Per questo motivo, a livello logico, si è pensato di poter assegnare dei nomi
simbolici alle celle, per cui l’algoritmo che programmerà la nostra addizione potrà
sfruttare questi nomi, indicati in programmazione con il termine “Variabile” e che
rappresenteranno in momenti diversi dati diversi.
La nostra addizione, in un qualunque linguaggio di programmazione per macchine
automatiche, nel nostro caso elaboratore di dati o computer, diventa
pippo=luigi+mario
Se chiediamo al programma di visualizzare sul monitor o stampare pippo
leggeremo il numero 8 che potrebbe essere il risultato del totale di uno scontrino
degli acquisti fatti in un supermercato o il voto di condotta sulla pagella di uno
studente o qualsiasi altra cosa. Ricordiamo che lo scopo era quello di evitare di
ricordarsi, cosa non possibile, i numeri delle celle della memoria in cui erano stati
memorizzati la somma e gli addendi dell’addizione, mentre risulta molto più
semplice ricordarci i nomi simbolici pippo, luigi e mario.
Vediamo cosa è successo realmente durante il calcolo dell’addizione
Passo 1:
Passo 2:
Laborartorio: Sviluppo videogioco
Tempi :
Classe :Settembre Ottobre 2014
Laboratorio Novembre 2014 – Maggio 2015
Conclusione:
Affrontiamo, ora, la parte più importante per saper programmare un computer e senza la
quale mai riusciremmo a costruire un videogioco o qualsiasi altro software.
Mettere sotto forma di flow chart il ragionamento che un individuo vuol far compiere ad un
automa, nel nostro caso computer.
Dopo aver capito cosa succede nella CPU e nella memoria RAM e soprattutto perché
assegnare nomi simbolici, variabili informatiche, alle celle di memoria, costruiamo il
diagramma di flusso (flow chart) che programma la nostra addizione 8=3+5 o qualsiasi
altra addizione utilizzando i nomi simbolici pippo=luigi+mario. Perché questa
assegnazione può calcolare qualsiasi addizione? Perché i nomi simbolici possono
contenere, ogni volta che facciamo eseguire il nostro algoritmo, qualsiasi numero ed ogni
volta diverso dai precedenti.
Cosa vuol dire “diverso dai precedenti”?
Vuol dire che ogni volta che eseguiamo l’algoritmo nelle scatole possiamo inserire numeri
diversi, il contenuto delle scatole pippo, luigi e mario può variare, per questo si chiamano
variabili.
Cosa vuol dire inserire un numero in una variabile, ad esempio come facciamo a mettere il
numero 3 nella scatola luigi?
Il gesto materiale dell’inserimento di un numero è quello di digitare sulla tastiera del
computer il numero in questione, ma esso può essere prelevato anche da un archivio
memorizzato nel disco rigido (hard disk), dal pen disk, da un cd o dal nostro cellulare.
Il diagramma di flusso (flow chart) rappresenta lo schema delle azioni di inserimento dati
(Input), prelievo dati (Output), calcoli e decisioni .
Con questo blocco, un parallelepipedo con all’interno il nome simbolico di una variabile
(scatola), con all’esterno la lettera I (Input, immettere, inserire) descriviamo nel nostro
diagramma a blocchi (Flow Chart) il modo in cui tramite tastiera, o prelevando da un
archivio (file) che si trova nel nostro cellulare o pen disk il numero 5 ( o qualsiasi altro
numero) relativo all’addizione pippo=mario + luigi e lo inseriamo nella scatola (variabile)
chiamata simbolicamente mario
Stessa cosa dicasi per la scatola luigi dove inseriremo il numero 3
Iniziamo a costruire il diagramma di flusso corrispondente alla sequenza logica di
istruzione che dobbiamo far eseguire al nostro computer per effettuare un’addizione.
Per definizione sappiamo che un algoritmo deve aver un inizio ed una fine, cioè non può
essere infinito, quindi tra i blocchi di inizio e fine inseriamo l’input prima descritto
Abbiamo inserito i due numeri digitandoli sulla tastiera, non ci resta che far capire
all’algoritmo come fare la somma e conservarla in un’altra scatola (variabile), nel nostro
caso chiamata pippo.
In questo caso si usa il blocco chiamato assegnazione che ha forma di un rettangolo
Ora l’algoritmo funziona ed esegue perfettamente le istruzioni per eseguire la somma di
due numeri.
Il risultato è conservato nella cella (variabile) pippo ma è visibile a nessuno.
Bisogna prelevare il contenuto della scatola pippo ed evidenziarla su qualche dispositivo
di uscita (output), come un monito o una stampante
Il simbolo dell’output è un parallelepipedo identico a quello dell’input, ma siglato all’esterno
con il simbolo O (output), anziché I (input)
Il nostro algoritmo può considerarsi completo
Affrontiamo ora l’istruzione più complessa che connota un linguaggio formale (che segue
rigidamente la forma) di programmazione. I’istruzione condizionale.
Lo scorso anno abbiamo trattato i rudimenti del linguaggio HTML (Hyper Text Markup
Language) sottolineando, più volte, che non è un linguaggio di programmazione ma un
formattatore di testi, nella fattispecie di testi, immagini, link per pagine WEB, proprio
perché non si potevano prendere decisioni né fare calcoli.
Con l’istruzione condizionale (SE accade qualcosa Allora segui una strada ALTRIMENTI
seguine un’altra) possiamo decidere se compiere un determinato tipo di azione o fare
altro, a secondo se si verifica una determinata condizione.
Senza perder tempo, approfondiremo le istruzioni complesse il prossimo anno, vediamo il
funzionamento e gli effetti che essa produce
IF condizione THEN azioni ELSE azioni
X il nome simbolico di una variabile (scatola) ed in questo caso accoppiato all’operatore di
assegnazione = si comporta da Test, che possiamo pensare come un sensore che ci
indica cosa dobbiamo fare.
x=1 è la condizione da testare per percorre la strada indicata da VERO
vera e la strada indicata da FALSO se non risulta vera.
se essa risulta
Se x in un determinato istante dovesse risultare un numero diverso da 1 allora la
condizione risulterà non verificata (falsa)
Un esempio senza numeri
Codificando in un linguaggio di programmazione questo blocco di Flow Chart
avremo come risultato sul nostro monitor:
Affronteremo con maggiore efficacia e profondità queste istruzioni il prossimo anno,
utilizzando il linguaggio Python che abbiamo accennato lo scorso anno con il modulo
Tartaruga (Turtle)
Studiamo ora l’ultimo costrutto . Il CICLO
Lo scorso anno, con il codice che richiamava oò modulo Turtle di Pyton, avevamo
disegnato un quadrato ed una stella a 100 punte.
Questo è il codice utilizzato in laboratorio
from turtle import Turtle
r=Turtle()
r.forward(100)
r.left(90)
r.forward(100)
r.left(90)
r.forward(100)
r.left(90)
r.forward(100)
r.left(90)
Abbiamo scritto 4 coppie di
istruzioni identiche che fanno avanzare di 100 passi la tartaruga e poi girano a sinistra con
un angolo di 90 gradi, costruendo così il nostro quadrato.
Se dovessimo disegnare una figura geometrica con 100 lati dovremmo scrivere per cento
volte la stessa coppia di istruzioni
r.forward(100)
r.left(90)
Il costrutto CICLO ci viene in aiuto scrivendo una sola volta la coppia di istruzioni e
chiedendo di ripeterla per 4 volte. In questo modo l’algortmo è molto più breve e
controllabile. Se volessimo ripetere 100 volte le istruzioni ci basta modificare il numero
delle volte da 4 a 100
from turtle import Turtle
r=Turtle()
for conta in range(1,4):
r.forward(200)
r.left(90)
In questo codice conta è il nome simbolico della variabile che cambierà ad ogni passaggio
diventando prima 1, poi 2, 3 e 4 e si fermerà
Blocco di un Flow Chart
(diagramma di flusso)
corrispondente al CICLO
Cosa ci dice questo Flow Chart?
Prima di questo blocco imponiamo ciclo=1, in modo da inserire nella variabile un valore
iniziale.
Entrati nel blocco si controlla se la variabile conta è minore dei 4. Essendoci, la prima
volta, nella scatola, a cui abbiamo dato il nome simbolico, conta il valore 1 seguirà la
strada indicata da falso, poi aumenterà conta di 1, che passerà a 2 e tornerà (seguendo
le frecce) a controllare se conta è ancora minore di 4, eseguirà la coppia di istruzioni
(secondo lato del quadrato) e aumenterà ancora di uno la variabile conta, che passerà a
3. Torna indietro e disegnerà il terzo lato del quadrato ponendo conta a 4. Tornerà ancora
indietro e risulterà che 4 non è minore di quattro, quindi eseguirà ancora una volta la
coppia di istruzioni disegnando il quarto lato, aumenterà conta di 1 e facendola diventare
5. Tornerà al controllo e questa volta risultando vero che 5 non è minore di 4 percorrerà
la strada indicata con VERO per fare altre cose
Cosa vuol dire conta=conta + 1 ?
Nella cella di memoria indicata con il nome simbolico conta viene incrementato di uno il
valore già contenuto in precedenza. Conta è quindi una variabile
Seconda parte del corso: sviluppo di un videogioco o racconto animato
Collaborazioni: Progetto Knork
Materiali per l’approfondimento
https://sites.google.com/site/tecinndidinf
Il sito raccoglie il materiale didattico ed altre informazioni utili del corso "Tecnologie
Innovative per la Didattica dell'Informatica", tenuto per i Percorsi Abilitanti Speciali
per la classe A042 (Informatica) all'Università di Salerno, nel 2014 da Vittorio
Scarano, del Dipartimento di Informatica dell'Università di Salerno.
Scenario

Informazioni pratiche

Obiettivi
1. la conoscenza teorica e pratica dei linguaggi visuali e degli ambiente di sviluppo
innovativi, utili per insegnare la programmazione e i concetti di base i semplici algoritmi;
2. conoscenza degli strumenti disponibili gratuitamente per offrire una presenza di qualità
sulla rete ad una comunità scolastica, quali siti web, forum di discussione, repository,
condivisione documenti, etc.
Contenuti
•  La
programmazione
•  Ambiente:
visuale
interattiva:
obiettvi
e
tecniche.
Scratch .
•  Utlizzo dell’ ambiente
per
specifici
obiettivi
formatvi
nell’ambito
dell’informatica (programmazione)
•  L’ecosistema
Google
dei
Drive,
prodotti
Google
Google:
Groups,
Google
Calendar
Obiettivi
1.  la
conoscenza
ambienti
di
teorica
sviluppo
programmazione
2.  conoscenza
una
degli
presenza
quali
siti
documenti,
e
di
web,
etc.
i
e
pratica
innovativi,
concetti
strumenti
qualità
forum
utili
di
linguaggi
per
base
disponibili
sulla
di
dei
rete
visuali
insegnare
di
semplici
gratuitamente
ad
discussione,
una
degli
la
algoritmi;
per
comunità
repository,
e
offrire
scolastica,
condivisione
Scenario: competenze digitali
Thinking and Systems Thinking
Coordinare la realizzazione di artefatti con funzionamento complesso
mettendo a Sistema component di base
Problem Solving
Creare sistemi software per risolvere problemi aiuta ad identificare i passi
necessari
Curiosità
Che succede se ?
Pensare in maniera creativa
Comunicare in maniera chiara
Analizzare con sistematicità
Limitazione dei nativi digitali
Abituati a uasre dispositivi “connessi” ignorano le basi e sono alla mercè di
qualsiasi fenomeno di “moda”
Facebook
Wikipedia e relativa qualità di informazioni
Sicurezza ed identità
Controllo da parte delle multinazionali e grandi provider
Il messaggio di Obama nella “Computer Science Education Week”, molto
pubblicizzato sui media Di tutto il mondo:
“Non giocate solo sul vostro
telefonino, programmate voi un gioco! Imparare
queste competenze non è olo importante per il vostro futuro è Importante per Il
futuro dell’America”
Il pensiero computazionale
Processo che appartiene al dominio del problem solving
Fasi principali
-
Formulazione del problema al fine di consentire l’impiego di uno
strumento automatico per la risoluzione
-
Acquisizione, analisi e organizzazione logica dei dati provenienti dal
campo
-
Realizzazione di soluzioni automatiche, ripetibili e sostenibili per lo
sviluppo del pensiero algoritmico
-
Sviluppo di situazioni diverse
-
Generalizzazione e trasferimento della soluzione
Agenda:

Introduzione a Scratch

Creare ed imparare con Scratch

Programmare con Scratch

Conclusioni
Scratch è un linguaggio di programmazione sviluppato
al Media Lab del Mit di Boston, con cui è possibile
diventare progettisti di videogiochi, realizzare storie
interattive, musica e animazioni per il Web.
Grazie a Scratch è possibile programmare le proprie
creazioni (disegni, immagini, storie, ecc) mettendo
assieme blocchi grafici (analogamente ai mattoncini Lego) senza la tradizionale
sintassi della programmazione a codice. È possibile inoltre condividere le proprie
animazioni sul web come su YouTube e partecipare alla grande comunità Scratch.
“Fino ad oggi, solo esperti programmatori avrebbero potuto realizzare storie
interattive” – afferma Mitchel Resnick, Professore di Learning Research al Media
Lab e ideatore e direttore del team di sviluppatori di Scratch – “Scratch può essere
usato da tutti”.
“Un/a bambino/a che usi Scratch impara a pensare creativamente e ad affrontare e
risolvere problemi” sostiene Resnick. Scratch è adatto per bambini e ragazzi dai 6
anni fino ad studenti universitari esperti
Il nome Scratch deriva dalla tecnica usata dai disc jockey, DJ, dell’hip-hop.
La tecnica ha il proposito di accentuare il lavoro del DJ creando un assortimento di
suoni mediante la manipolazione ritmica di un vinile (oggi, con uno strumento come
un CDJ, si può scratchare anche con un CD) da Wikipedia
Ambiente di programmazione
-
Visuale
-
Interattivo
-
Basato sul Web
Scratch è stato progettato avendo come obbiettivo l’apprendimento e la didattica
-
A tutti i livelli scolastici, dall’asilo all’università
Scratch viene usato da un gran numero di discipline
-
Matematica, informatica, arte, studi sociali, discipline umanistiche
Concetti di base del pensiero computazionale
Utilizzando ambienti di programmazione interattiva i progettisti di applicazioni
(utenti Scracth) incontrano
-
Sequenze
-
Cicli
-
Eventi
-
Parallelismo
-
Condizioni
-
Operatori
-
Dati
Un’attività viene espressa da
- Step elementari
- che è possibile far eseguire ad un automa, nel nostro caso computer
Agenda:

Introduzione a Scratch

Creare ed imparare con Scratch

Una presentazione

Programmare con Scratch

Conclusioni
Scratch come fattore abilitante
-
-
Media interattivi esistono e sono utilizzati da noi e dagli studenti
o Spesso, sono, solamente, strumenti per fruire contenuti scelti da altri
o Non è possibile creare, inventare, scoprire
Sctarch permette di creare dei programmi interattivi
o Combinado grafica, foto, musica
o L’utente non è più solo un utente ma un creatore
 Con la responsabilità di essere artefice di un piccolo “mondo”
artificiale in miniatura
 Le cui leggi e la cui struttura sono frutto della sua creatività
Caratteristiche di Scratch
-
-
-
Tecnica dello scratching usata dai disc jockey di musica hip hop
o consiste nel trascinare dischi in vinile con le mani, fondendo brani esistenti in
maniera creativa
Scratch segue lo stesso approccio
o Mescolando diversi tipi di media (grafica, suono, musica, foto)
o Remixando progetti di altri
o Avendo anche una audience che interagisce con l’autore
Condivisione di progetti sul sito di Scratch
Socialità e collaborazione come strumento di sviluppo e non solo come
pericoli da evitare
Imparare con Scratch
-
Idee e concetti di informatica, ma anche di matematica, fisica ecc.
o Coordinate
o Variabili
o Numeri casuali
o Iterazione
o condizioni
Agenda:

Introduzione a Scratch

Creare ed imparare con Scratch

Una presentazione

Programmare con Scratch

Conclusioni
-
I progetti si compongono di oggetti chiamati sprite
o Ogni sprite ha diversi costumi
Uno sprite è un’immagine
o Puoi ad esempio costruire degli sprite
personalizzati
o Disegnando con un programma apposito
o Usando un immagine preesistente
o Scattando una foto
-
Possiamo fornire istruzioni agli sprite
Possiamo indicargli
o Cosa fare, come muoversi o cosa suonare
o Come reagire ad altri eventi
 Interazione con altri sprite
 Interazione con l’utente (click, ecc)
-
Per indicare ad uno sprite cosa fare si deve costruire uno script
o Blocco grafico di istruzioni
Agenda:

Introduzione a Scratch

Creare ed imparare con Scratch

Una presentazione

Programmare con Scratch

Conclusioni
Cosa faremo
- Sequenza di passi:
o Portiamo un blocco dall’area blocchi all’area dello script
Notiamo da:
Che la posizione dello sprite ha la coordinata x=0 e la direzione 90
-
Modifichiamo il numero di passo portandolo a 100
o Si fa click su 10 e si scrive 100
A questo punto facciamo click sul blocco dell’area degli script e lo sprite si muoverà di 100 passi
nella direzione in cui sta guardando.
Lo si può notare anche da
In cui si legge che la direzione dell’asse delle x è cambiata da 10 a 100 e la direzione è rimasta a 90
Cosa sono i blocchi di programmazione:
Un altro
esempio
:
fcciamo
ballare il
gatto
Costruiamo un passo di danza, facendo spostare di 10 passi in avanti, andando a scegliere tra i
blocchi di Movimento
Aggiungiamo lo strumento tamburo scegliendo dai blocchi Suono, incolliamo sotto il blocco
precedente e modifichiamo scegliendo tamburo 48 e battute 0.25
Facciamo tornare il gatto di 10 passi indietro, quindi -10 dalla posizione in cui si trova e scegliamo
un altro tamburo sempre con battute 0.25. Otterremo
Che equivale ad un passo di danza. Ora non ci resta che far ripetere per un certo numero di volte
questo passo. Ricordiamo del CICLO studiato nella parte di introduzione agli algoritmi.
Il CICLO in Scratch lo so trova in Controllo. Trascinando
E posizionandolo sui blocchi già messi, questo incastrerà al suo interno le istruzioni precedento
facendoci ottenere
Ora cliccando sul blocco giallo del CICLO
Faremo eseguire il programma e vedremo in gatto muoversi a tempo di tamburo
Secondo esempio
Facciamo muovere lo sprite a secondo della freccia che preme l’utente
Come si usano i blocchi
o
appresentano un valore, preso dall’ambiente di Scratch
o …. Che può essere utilizzato all’interno di blocchi che hanno aree di input arrotondate
o Ad esempio il sensore
-
Può essere inserito come stringa in
Con questi blocchi chiediamo al programma di
mostrarci ad ogni movimento del mouse la sua
posizione e di farcela dire dallo sprite del gatto
Blocchi di decisione
-
Rappresentano una scelta che viene effettuata dallo script, a seconda del valore di
verità dell’espressione (ricordiamo
l’istruzione se con le strade VERO e FALSO
studiati nella prima parte relativa agli
algoritmi)
-
L’espressione controllata deve essere un rombo
-
Oppure un’espressione di un operatore come
L’interazione
-
Storie interattive con i blocchi di scelta dall’utente
Inserimento dati
-
Utilizzo della risposta in un operatore di test all’interno di un blocco di decisione
Esempio
chiediamo il nome dell’utente.
Giovanni è un nostro amico e lo salutiamo calorosamente,
altrimenti ci manteniamo sul formale.
Agenda:

Introduzione a Scratch

Creare ed imparare con Scratch

Una presentazione

Programmare con Scratch

Conclusioni
Capitolo Due
-
Struttura delle lezioni con Scratch
La prima animazione
Sequenza di movimenti
Inizio da una posizione fissata
Movimento continuo
Sprite Multipli
-
La programmazione si insegna non soltanto utilizzando il libro di testo, ma anche utilizzando
dispense e mettendo in pratica e programmando quello che si impara.
Il libro deve essere composto da capitoli con
o Ognuno uno scopo
o Specifico
o Con passi e compiti da seguire
Ogni capitolo del libro fornisce
o Una o pochi concetti, legati insieme
o Introdotti per risolvere un problema specifico
Ogni capitolo introduce un compito (task) da realizzare e quello successivo
Per ogni compito viene richiesto di apprendere un nuovo concetto di programmazione
o Un nuovo costrutto di Scratch o qualche utilizzo nuovo di un cstrutto già noto
Per
inserire un nuovo concetto di
programmazione useremo
-
-
-
-
Per inserire un nuovo costrutto di Scratch, useremo
-
Struttura delle lezioni con Scratch
La prima animazione
Sequenza di movimenti
Inizio da una posizione fissata
Movimento continuo
Sprite Multipli
Caricare un programma di esempio
Lanciare Scratch, andare su File e “Apri”
Scegliere il file “muovi 10 passi”
In questo momento il programma viene caricato e
visualizzato
Passi successivi
-
Struttura della schermata
Il palcoscenico (dimensione e orientamento)
Area degli sprite
Area dei blocchi che si possono usare
Area degli script dove i blocchi vengono assemblati
Posizione in alto a destra con coordinate
Esecuzione di un Task


Cosa succede se si fa click sulla bandiera verde in alto sopra il gatto ?
o Il gatto si muove verso destra
o Le posizioni sull’asse x sono cambiate, mentre
quelle di y no

Ripetiamo il click, il gatto ripete gli stessi 10 passi a destra
o
Fin a quando il gatto esce fuori
dal stage e non si muove più
Necessario capire cosa succede
Cosa è successo?




L’area di destra contiene lo script per muovere il gatto
Ogni sprite ha il suo insieme di script che ne definiscono il comportamento
Ogni script consiste delle istruzione di cui contiene
Questo script ha due blocchi
- Uno per far partire lo script quando succede
qualcosa (bandiera verde)
- L’altro serve a muovere lo sprite
I concetti
-
Struttura delle lezioni con Scratch
La prima animazione
Sequenza di movimenti
Inizio da una posizione fissata
Movimento continuo
Sprite Multipli
Esecuzione del Task
 Cosa se si fa click sulla bandiera verde in alto sopra al gatto?
o Il gatto si muove a destra di 100 posizioni

Cosa succede se inseriamo il numero -100?
Come cambiare direzione ad uno sprite



Nel pannello dei blocchi a disposizione, c’è un blocco che si chiama
Si può inserire questo blocco nello script facendo
o Un movimento di trascinamento (in inglese drag and drop)
o Inserendo nella posizione corrente
Inserire il valore 90 per denotare i gradi da usare per la rotazione
 Cosa se si fa click sulla bandiera verde in alto sopra al gatto?
o Il gatto si muove verso destra
o E cambia di direzione di 90 gradi
 Quindi tutte le istruzioni, in sequenza vengono eseguite in ordine

Notare che basta fare eseguire 4 volte il programma per tornare al punto di
partenza
-
Struttura delle lezioni con Scratch
La prima animazione
Sequenza di movimenti
Inizio da posizione fissata
Movimento continuo
Sprite Multipli
-
TASK
o
-
Costruire un’animazione che fa muovere il gatto di 100 passi e poi girare di 90 gradi in
senso antiorario. Per ogni esecuzione il gatto deve ripartire dallo stesso punto è
precisamente dal centro dello stage in posizione (0,0)
Far capire che il movimento del gatto è relativo alla posizione attuale: se questa cambia l’effetto
sarà diverso ad ogni esecuzione
Lo scopo è costruire un programma che realizzi sempre lo stesso comportamento
Individuare le istruzioni necessarie tra quelle a disposizione



Vorremmo, anche, che il movimento avvenisse in cui il gatto guarda
In modo da sembrare naturale
Quindi usiamo l’istruzione


Inseriamola dopo l’istruzione di spostamento a (0,0)
Otteniamo come risultato

Notiamo che le prime due istruzioni sono Assolute perché fissano un punto ad inizio
programma e le seconde sono Relative alla posizione in cui si trovano (istruzioni
assolute/relative)
Specifica delle direzioni dello stage
-
Struttura delle lezioni con Scratch
La prima animazione
Sequenza di movimenti
Inizio da posizione fissata
Movimento continuo
Sprite Multipli

Task
- Costruire una animazione che fa muovere il gatto intorno allo stage, partendo
dall’angolo in basso a sinistra e ritornando alla fine

Finora il movimento è stato talmente veloce da non essere apprezzato
- Lo sprite in pratica appariva in posizione finale

Si può usare una istruzione diversa che temporizza il movimento

Domanda per lo studente: è una istruzione assoluta o relativa?
Scriviamo lo pseudocodice del task da eseguire e cioè una descrizione sintetica ma
precise dei movimenti che vogliamo far compiere allo sprite.
In informatica per pseudocodice, pseudolinguaggio o linguaggio di progetto si intende
un linguaggio di programmazione fittizio, non direttamente eseguibile il cui scopo è la
rappresentazione di algoritmi. Lo pseudolinguaggio può essere utilizzato alternativamente al
classico diagramma di flusso e non è soggetto a molte limitazioni intrinseche di quest'ultimo
tipo di rappresentazione (fonte wikipedia)
Molto simile alla codice della tartaruga in Python visto lo scorso anno
Esercizio
Inserire un nuovo sprite
Libreria degli sprite
Compare nell’elenco degli sprite
Facciamolo muovere da sinistra verso destra
Click sul cane e scriviamo il codice, utilizzando i blocchi, per il movimento
Facciamolo muovere dal basso verso l’alto
Se partiamo dallo script del gatto e facciamo drag and drop (trascinamento) sullo script del cane,
viene copiato e poi modifichiamo i valori
Durante l’esecuzione i due sprite si incontreranno e potremmo creare una situazione di gioco che
controlli lo scontro