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