principi di programmazione con scratch -...

18
Indice generale Lezione 1 – Pensiero computazionale.................................................................................................. 1 Lezione 2 - Algoritmi........................................................................................................................... 2 Lezione 3 - Algoritmi caratteristiche.................................................................................................... 5 Lezione 4 – Scratch Introduzione ed esempi........................................................................................7 Lezione 5 – Scratch Modalità di utilizzo..............................................................................................8 Lezione 6 – Scratch Struttura ambiente di programmazione - Sequenze.............................................8 Lezione 7 – Istruzioni Condizionali................................................................................................... 10 Lezione 8 – Diagrammi di Flusso e Pseudocodice............................................................................. 11 Lezione 9 – Condizioni e Valori Booleani..........................................................................................13 Lezione 10 – Ripetizione infinita (o Iterazione infinita o Ciclo infinito)...........................................14 Lezione 11 – Cicli controllati da un contatore e cicli controllati da una condizione......................... 15 Cicli controllati da un contatore.....................................................................................................15 Cicli controllati da una condizione................................................................................................ 17 Principi di Programmazione con Scratch Lezione 1 – Pensiero computazionale Ciao, e benvenuto al corso di Principi di programmazione con Scratch. Siamo lieti che avete deciso di unirsi a noi in questa avventura sulla programmazione di computer. I programmi per computer sono ovunque, dalle macchine da caffè, lettori MP3, astronavi e robot medici. Ma proprio come l'astronomia è di più che semplicemente usare telescopi, l'informatica è più che semplicemente usare i computer. Si tratta di "dire al computer cosa fare". Il corso si propone di 1. insegnare come programmare 2. contribuire a sviluppare tutte quelle competenze che sono fondamentali per la programmazione di computer. Ciò che noi chiamiamo pensiero computazionale. Quindi vi aiuteremo a sviluppare il pensiero computazionale. Potrai imparare a programmare in Scratch, un linguaggio visuale semplice e divertente che è ideale per i principianti. Dal primo giorno di questo corso, vogliamo creare programmi per computer come animazioni, giochi e storie interattive. Ci si renderà conto di quanto creativo e divertente può essere programmare dei computer. Verrai introdotto alle basi dei concetti di informatica, in particolare della programmazione. Vi aiuteremo ad indagare temi come,

Upload: lybao

Post on 15-Feb-2019

212 views

Category:

Documents


0 download

TRANSCRIPT

Indice generaleLezione 1 – Pensiero computazionale..................................................................................................1Lezione 2 - Algoritmi...........................................................................................................................2Lezione 3 - Algoritmi caratteristiche....................................................................................................5Lezione 4 – Scratch Introduzione ed esempi........................................................................................7Lezione 5 – Scratch Modalità di utilizzo..............................................................................................8Lezione 6 – Scratch Struttura ambiente di programmazione - Sequenze.............................................8Lezione 7 – Istruzioni Condizionali...................................................................................................10Lezione 8 – Diagrammi di Flusso e Pseudocodice.............................................................................11Lezione 9 – Condizioni e Valori Booleani..........................................................................................13Lezione 10 – Ripetizione infinita (o Iterazione infinita o Ciclo infinito)...........................................14Lezione 11 – Cicli controllati da un contatore e cicli controllati da una condizione.........................15

Cicli controllati da un contatore.....................................................................................................15Cicli controllati da una condizione................................................................................................17

Principi di Programmazione conScratch

Lezione 1 – Pensiero computazionaleCiao, e benvenuto al corso di Principi di programmazione con Scratch.Siamo lieti che avete deciso di unirsi a noi in questa avventura sullaprogrammazione di computer. I programmi per computer sono ovunque, dalle macchine da caffè, lettoriMP3, astronavi e robot medici. Ma proprio come l'astronomia è di più chesemplicemente usare telescopi, l'informatica è più che semplicemente usare icomputer. Si tratta di "dire al computer cosa fare". Il corso si propone di

1. insegnare come programmare2. contribuire a sviluppare tutte quelle competenze che sono fondamentali

per la programmazione di computer.

Ciò che noi chiamiamo pensiero computazionale. Quindi vi aiuteremo asviluppare il pensiero computazionale.

Potrai imparare a programmare in Scratch, un linguaggio visuale semplice edivertente che è ideale per i principianti. Dal primo giorno di questo corso,vogliamo creare programmi per computer come animazioni, giochi e storieinterattive. Ci si renderà conto di quanto creativo e divertente può essereprogrammare dei computer. Verrai introdotto alle basi dei concetti diinformatica, in particolare della programmazione. Vi aiuteremo ad indagare temi come,

1. progettazione di algoritmi,2. interazione con l'utente,3. riusabilità del codice (di questo non capirete il significato ora)

Ma ancora più importante, imparerete come affrontare e analizzare i problemidal punto di vista computazionale e come sviluppare programmi percomputer. In altre parole, apprenderemo come pensare e su cosa ragionareprima di iniziare effettivamente a scrivere un programma (analisi eprogettazione). Impareremo inoltre a pensare e ragionare anche mentrecodifichiamo un programma. Inoltre vedremo a “che cosa prestare attenzione” una volta scritto il nostroprogramma, per verificare che effettivamente svolga il compito per cui è statoprogettato e scritto (verifica dei risultati). Non è necessario sapere nulla ditutto questo prima di iniziare il corso: svilupperemo queste competenze passopasso. Questo corso è rivolto a principianti in programmazione e informatica.E noi siamo qui per aiutarvi e vi sosterremo in ogni passo di questo cammino.Entro la fine di questo corso, non solo si saranno creati una vasta gamma diprogrammi per computer. Ma si sarà anche in grado di pensare come uningegnere del software pronto a intraprendere ed avventurarsi in corsi piùavanzati sulla programmazione, se lo desiderate. Quindi, come funziona il corso? Esso ha una durata di circa due mesi duranteil quale ci occuperemo di diversi argomenti che sono i principi diprogrammazione, e la loro messa in pratica creando dei programmi percomputer.Per quel che riguarda il materiale avrete il libro di testo, questi appunti, il sitoasaba.altervista.org dove ci saranno anche i codici dei programmi chescriveremo e, se ne avremo il tempo, dei videomateriali. [non leggere]Cisaranno domande, quiz per aiutarti a verificare di aver correttamente capito inuovi concetti. Il corso degli studi comprende quiz e progetti di programmazione. Si proponesopratutto di farvi fare una vera esperienza di programmazione. Ci sarà unquiz ogni 2 o 3 settimane contenente domande a risposta multipla chepossono richiedere anche di scrivere, di testare, o analizzare i programmi.Oltre ai quiz, vi saranno due progetti di programmazione, uno dopo 4/5settimane, e uno dopo 7/8 settimane . [da realizzare in futuro] Questi progettisaranno corretti dai vostri stessi compagni. Una delle risorse più importantiper questo corso è il forum di discussione, in cui è possibile interagire con ilcompagni di classe per discutere gli argomenti che coprono ogni settimana.Ogni volta che avete una domanda durante questo corso, appena potetemettetela sul sul forum. Allo stesso modo, è possibile aiutare i vostricompagni di classe rispondendo alle loro domande lì. Siete fortementeincoraggiati ad usare il forum di discussione per interagire con i compagni edimparare gli uni dagli altri. In questo modo scoprirete che la programmazionepuò essere un'attività molto sociale, e come con tutte le attività sociali, ciaspettiamo che sarete guidati dal rispetto ed educazione. [/non Leggere]

Lezione 2 - AlgoritmiOra apprenderai come creare il tuo primo programma per computer. Ma prima, alcune domande.

Hai mai dato indicazioni a qualcuno per andare da un luogo ad un altro? Oppure, avete mai insegnato ad un amico come svolgere un compito? Per esempio, come allacciarsi le scarpe. Oppure avete mai seguito una ricetta?Ad esempio, per preparare una torta. Se la risposta a una di queste domande,o a domande simili, è sì, allora hai già familiarità con la programmazione. L'unica cosa che ti manca è che non hai mai realizzato un programma.Cominciamo esplorando diversi esempi dalla vita quotidiana. Questi esempi timostreranno i concetti fondamentali della programmazione. Diciamo che vogliamo insegnare a qualcuno come fare un panino conprosciutto e formaggio. Siamo in grado di descrivere i passi di questo compitocome

1. prendere due fette di pane, 2. prendere una fetta di prosciutto e metterla su una fetta di pane, 3. pendere una fetta di formaggio e metterla sopra il prosciutto, 4. posizionare la seconda fetta di pane sulla parte superiore del formaggio,

e il gioco è fatto. Quindi, se dovessimo descrivere le diverse fasi in italiano, questo è quanto.

Si può vedere che abbiamo descritto questo processo come una sequenza dipassi, eseguiti in ordine, uno dopo l'altro.

Diamo un'occhiata a un altro esempio familiare Vogliamo descrivere come fare per cambiare una lampadina di una lampadada comodinoPotremmo fare quanto segue.

1. Se non si dispone di una nuova lampadina, andare ad acquistare unanuova lampadina.

2. Staccare la corrente, cioè togliere l'alimentazione al circuito3. ripeti: ruota la lampadina in senso antiorario fino a quando si rimuove

completamente. 4. Gettare la lampadina fulminata nell'apposito contenitore 5. inserire la nuova lampadina nel portalampada6. ripeti: ruota la lampadina in senso orario fino a quando questa non è

stretta 7. Accendere l'interruttore per verificare che tutto è OK.

Quindi siamo riusciti a descrivere anche questo processo. Anche qui abbiamo una sequenza di ordinata di passi che comprendonoanche una decisione (SE) e due ripetizioni (RIPETI).

Sequenze, decisioni, e le ripetizioni sono i costrutti di base (i mattoncini)con cui costruiamo i nostri programmi. Abbiamo descritto il processo per fareun panino e cambiare una lampadina come una procedura passo passo.Questa sequenza ordinata di passi è chiamato un Algoritmo. Gli Algoritmidescrivono la procedura per svolgere un compito o risolvere un problema inun modo passo-passo.

Essi possono includere sequenze, decisioni e ripetizioni, proprio comeabbiamo visto con i due esempi precedenti. Molto spesso, vi è più di un algoritmo che risolve effettivamente un problema.Diamo uno sguardo alla seguente mappa e cerchiamo di dare indicazioni peruna persona che è attualmente all'Hotel in basso e vuole andare alla stazione.Vi chiedo: si può giungere alla stazione con diversi percorsi? Ossia: esistonodiversi algoritmi per questo problema? Direi proprio di si: una possibilità sarebbe quella di puntare verso nord,andare avanti per due isolati, puntare verso ovest, camminare per un altroisolato. Un'altra opzione potrebbe essere puntare a ovest, passeggiata perdue isolati, puntare nord, camminare a piedi un altro isolato.Ci sono ancora più opzioni, forse non sono le più veloci, ma possonoeffettivamente risolvere il problema. Come forse avrete notato, questi

algoritmi che abbiamo descritto sinoranon hanno nulla a che fare con icomputer; Inoltre si può esprimere orappresentare un algoritmo in tanteforme diverse. Ad esempio, il primoalgoritmo per andare dall'hotel allastazione ferroviaria, può essererappresentato sulla mappa, quindivisivamente. Un altra forma è la descrizionetestuale che abbiamo dato, un'altraforma è quella del diagramma diflusso, o ancora come codice percomputer.Diamo uno sguardo più da vicino a queste varie forme. L'algoritmo visuale, cioè la mappa che ci descrive visivamente la strada pergiungere alla stazione, cioè il nostro algoritmo. Esso mostra chiaramente checamminiamo per due isolati verso nord, e poi puntiamo a ovest e quindicamminiamo per un isolato. L'algoritmo in italiano, è una descrizione a parole del cammino daeffettuare e potrebbe essere il seguente.

1) Dirigetevi a nord per due isolati,2) voltare verso ovest,3) camminare per un isolato.

Gli algoritmi possono essere rappresentati graficamente con l'uso didiagrammi chiamato diagrammi di flusso. Il diagramma di flusso chevisivamente illustra il nostro algoritmo è questo.

NORDOVEST EST SUD

Questo diagramma di flusso dimostra il carattere sequenziale di questoalgoritmo, infatti esso si svolge semplicemente con un passo dopo l'altro insequenza. In questo algoritmo non ci sono decisioni o ripetizioni come inquello della lampadina. Volete scoprire di più su algoritmi? Nella prossimalezione vedremo esempi più interessanti.

Lezione 3 - Algoritmi caratteristicheDiamo un'occhiata ad altri esempi di algoritmi che usiamo tutti i giorni. Comesi risolverebbero i seguenti problemi? Attraversare la strada, cuocere unatorta, mettersi una camicia, versare un bicchiere di succo di frutta, sommaredue numeri di tre cifre ciascuna, o anche spiegare a un alieno come lavarsi identi? In ogni caso, quando si deve creare un algoritmo, cioè un procedimento passopasso che risolve un problema, è importante pensare alle ipotesi chefacciamo. Per esempio, che ipotesi stiamo andando a fare per il traffico,quando si progetta un algoritmo per attraversare la strada? Si guida asinistra, come in Scozia, o a destra, come in Italia? Abbiamo bisogno diprendere in considerazione la direzione dei veicoli al fine di controllare il latocorrispondente prima di attraversare.Oppure, diamo un'occhiata a un esempio più estremo. Quali sono le ipotesiche possiamo fare quando dobbiamo insegnare un alieno come lavarsi i denti?Lo sa che cosa è uno spazzolino da denti l'alieno? E ancora quanti denti avrà ilnostro alieno? Vi invitiamo a scrivere le istruzioni, come abbiamo fatto negli esempiprecedenti, e poi le discutiamo. Quindi quando dobbiamo scrivere un algoritmo per prima cosa dobbiamoanalizzare un problema e, fatte tutte le ipotesi necessarie, siamo in grado diandare avanti e descrivere come fare per svolgere un dato compito. Dobbiamo sottolineare però, che è fondamentale la chiarezza e il dettagliocon cui diamo le nostre istruzioni, cioè la chiarezza ed il dettaglio con cuidescriviamo il nostro algoritmoCi potrebbero essere passi che significano qualcosa di diverso per personediverse. Per esempio, se quando diciamo a qualcuno come cuocere una torta,gli insegniamo a mettere la torta in forno “per un breve periodo di tempo”,

Direzione Nord

Cammina per due isolati

Direzione Ovest

Cammina per un isolato

Fine

Inizia

potrebbe non sapere a quale temperatura deve essere il forno, o quanto èlungo un “breve periodo di tempo”. Esperimento da fare insieme in classe: Ora, facciamo un esperimento che sottolinea l'importanza di dare delleistruzioni precise. Prendete una penna e il quaderno di informatica, e provatead eseguire le seguenti istruzioni per disegnare un oggetto.

1. Disegnare una linea diagonale.2. Tracciare un'altra linea diagonale collegata alla fine della prima linea3. Tracciare una linea verticale che unisce le due linee precedenti4. Tracciare una linea orizzontale che parte per il punto di unione delle due

precedenti linee5. Disegnare una linea diagonale dal basso della prima diagonale sino alla

linea retta.6. Disegnare una linea diagonale dall'alto della seconda diagonale sino alla

linea retta.7. Disegnare una linea sinuosa, a partire dalla parte inferiore della linea

retta. Ora vediamo cosa è venuto fuori a ciascuno di noi.

L'oggetto originale che abbiamo tentato didescrivere è un aquilone. Eccolo qua: forsequalcuno di noi è riuscito a descrivere unqualcosa di simile ma sicuramente nontutti.L'algoritmo fornito era volutamenteabbastanza ambiguo cioè non chiaro. Acausa di questa ambiguità ci sono statimolti modi di interpretarlo. E infatti, misarei aspettato di vedere una vastagamma di disegni, la maggioranza dei quali non assomiglia ad un aquilone.Si può scrivere un algoritmo migliore per disegnare un aquilone? Be poteteprovare a dare le istruzioni ai vostri amici (magari via whats app) e vedere sefunziona. Oppure potete pensare ad un altro insieme di istruzioni perdisegnare un altro oggetto e provate a darle ai vostri amici. È possibilecaricare il tuo algoritmo nel gruppo whats app della classe e i tuoi compagni diclasse possono provare ad eseguirlo ed indovinare ciò che è. Che cosa ci ha mostrato questo esperimento? Ci ha mostrato che essereprecisi è molto importante quando diamo delle istruzioni ad una persona. E in realtà, è ancora più importante durante la programmazione deicomputer. Tutto ciò che i computer fanno è seguire le istruzioni, quindi sequeste non sono chiare, i computer non faranno ciò vogliamo che facciano. Seci pensate, i computer non sono poi così intelligenti. Anche se sono moltobravi in qualche attività, come per esempio, facendo grandi calcoli e giocare ascacchi, gli esseri umani sono molto meglio in altri campi. Ad esempio, la curadi un bambino, riconoscimento di oggetti in immagini, avere unaconversazione significativa non sono attività facili per un computer. Va bene.Quindi, avete imparato che cosa è un algoritmo e in quali forme si puòpresentare e abbiamo visto alcuni esempi di algoritmi che si possono usarenella vita di tutti i giorni. E 'giunto il momento di iniziare a realizzare algoritmi

Lezione 4 – Scratch Introduzione ed esempiChe cosa è Scratch e cosa possiamo fare con esso?

Scratch è un linguaggio diprogrammazione, cioè unmezzo per comunicare conil computer che cipermette di dare istruzionial computer, ossia fare inmodo che esso esegua inostri ordini. È molto facilecreare programmi inScratch, compresianimazioni e giochi.Questo strumento è statosviluppato dal Media Lab

del MIT. È gratuito, e può essere utilizzato 1) on-line sul suo sito web, 2) oppure può essere scaricato sul proprio computer ed essere utilizzatooffline.In questo corso, useremo Scratch 2.0, che presenta molti miglioramentirispetto alla vecchia versione 1.4. Per avere un'idea di cosa si può fare conscratch vedremo alcuni esempi di programmi scritti in Scratch. Utilizzando ilbrowser web, andiamo sul sito scratch.mit.edu e vediamo una schermatacome questa qui sopra. Clicca su Vedi gli esempi e dai un'occhiata ai programmi. Per esempio, èpossibile visualizzare l'esempio biglietto di auguri (linkhttps://scratch.mit.edu/projects/11806234/). Nella schermata clicca sullabandiera verde per eseguire il programma. Siamo in grado di fermarel'esecuzione del programma premendo il pulsante rosso. Si può anche provareun gioco, come il popolare Flappy Bird, che è possibile cercare qui (finestracerca mostrata qui sotto)

Troverete molte versioni del gioco in una pagina simile a questa ed è possibilescegliere e provare una qualsiasi di loro. Per esempio, scegliamo questo (linkhttps://scratch.mit.edu/projects/17341536/). Vai sul link, clicca sulla bandieraverde, e provate a giocare. L'obiettivo è quello di far volare l'uccelllino tra lefile di tubi verdi senza toccarli e senza toccare il fondo o l'apice. Per spostarel'uccellino, è necessario premere la barra spaziatrice o cliccare col mouse. Senon si desidera alcun suono, basta premere M. Questi sono solo alcuni esempidi ciò che possiamo ottenere in Scratch. Che ve ne pare? Interessante giusto?Un'ultima e importantissima cosa: se cliccate sul pulsante “Guarda Dentro”sulla destra in alto potete vedere il codice che ha creato il gioco. NellaProssima Lezione Vedremo come utilizzare scratch

Lezione 5 – Scratch Modalità di utilizzoPer cominciare, diamo uno sguardo alle varie opzioni che abbiamo perlavorare con Scratch 2.0. È possibile lavorare offline, lavorare onlineregistrato, o lavorare online in forma anonima. Diamo un'occhiata aqueste opzioni in modo più dettagliato. Per lavorare offline, cioè senzal'utilizzo di una connessione ad internet, avremo bisogno di scaricare Scratch2.0 dal sito di Scratch. E più in particolare da questo indirizzo web:https://scratch.mit.edu/scratch2download/ e poi segui le istruzioni per il tuocomputer (funziona per windows, Mac Os e Linux).Dopo di che sarete in gradodi utilizzare Scratch offline cioè sul computer senza essere connessi a internet.Al fine di lavorare on line registrati dovrete prima andare a il sito web diScratch su questo indirizzo https://scratch.mit.edu/ fare clic su iscriviti ascratch e compila i tuoi dati, annotandoti la password. La prossima volta chesi desidera utilizzare Scratch basta cliccare su provalo e verrai portato allapagina dove fare il login inserendo il tuo username e password. UtilizzandoScratch in questo modo hai il vantaggio che è possibile salvare il tuo lavoroonline e accedervi da qualsiasi luogo (quindi da casa, da un amico o parente oa scuola). È inoltre possibile condividere i programmi con altri utenti diScratch. La terza opzione prevede lavoro on-line in forma anonima. In questocaso, si dovrà salvare ogni progetto sul proprio computer se no lo siperde una volta usciti da scratch. Al fine di iniziare a programmare inlinea,effettuato il login oppure in forma anonima, è sufficiente fare clic suprovalo per iniziare.

Lezione 6 – Scratch Struttura ambiente di programmazione - Sequenze

Ora, iniziamo la codifica in Scratch. Quando si avvia Scratch, si otterrà unaschermata come questa. Abbiamo dato nomi ai ciascuna di queste aree. I

AREA DEL PROGRAMA O DEGLI SCRIPT

STAGE O PALCOSCENICO

AREA DEGLI SPRITE

AREA DEGLI SFONDI

AREA DEI BLOCCHI

STAGE O PALCOSCENICO ZONA DEL

PROGRAMMA

ZONA DEI BLOCCHI

SFONDISPRITE

blocchi della zona dei blocchi sono trascinati e rilasciati nella zona Programma,conosciuta anche come la zona degli script. Ogni tipo di blocco ha un coloredistintivo. In fondo, abbiamo lo stage, che può avere diversi sfondi. E qui,abbiamo gli Sprites, che sono i personaggi che puoi programmare dicendo lorocosa fare. Per eseguire un programma, si fa clic sulla bandiera verde o doppioclic sullo script: lo script o programma che abbiamo realizzato verrà eseguitonello stage o palcoscenico che è detta anche area di esecuzione. È possibileridimensionare l'area di esecuzione premendo la freccia che compare in bassoa destra dell'area di esecuzione. Ora, proviamo diversi blocchi in Scratch per avere una idea migliore di quelloche possiamo fare. Prova a trascinare il blocco di movimento “fai 10 passi”nella zona del programma e a fare doppio clic su di esso. Il gatto si muoverànella direzione verso cui punta attualmente di 10 pixel. È possibile modificarela quantità di passi scrivendone il numero. Provate, per esempio, digitando100 e poi fate doppio clic su di esso per provarlo. Possiamo anche dire che algatto di rimbalzare se colpisce il bordo dello schermo. Per fare questo, èsufficiente trascinare il blocco “rimbalza quando tocchi il bordo” e metterlosotto il blocco precedente. Provate a lanciare il programma con un doppio clicsu di esso, per vedere cosa fa. Se non si desidera che il gatto si posizioni atesta in giù quando rimbalza, premere la i su Sprite1 (nella zona degli sprite)e quindi prova selezionando stili diversi di rotazione, ad eseguire ilprogramma. Ora, cambiamo il colore del gatto. Vai alla tavolozza aspetto,prendi il blocco cambia effetto di colore di 25 e collegalo al blocco precedentecollocandolo subito sotto. Fare doppio clic sul codice per eseguire ilprogramma. Ogni volta che il gatto si muove, cambia colore. Per essere piùprecisi, ogni volta che si esegue il programma, il gatto prima si muove, equindi cambia colore. Questo programma viene eseguito molto velocemente,quindi non possiamo vedere l'ordine di esecuzione ad occhio nudo. Se voleteosservare più da vicino la sequenza di esecuzione, è possibile per esempiointrodurre un'attesa di 1 secondo: andare nella tavolozza di controllo escegliere attendi 1 secondi. E posizionarlo in mezzo agli altri due blocchi.Quando si esegue questa volta, c'è una pausa di un secondo tra il gatto inmovimento e il cambiamento di colore. Ora, rimuoviamo il blocco di attesa percontinuare con il nostro script. Possiamo per esempio fare in modo che il gattomiagoli. Introdurre il blocco produci suono meow dalla tavolozza sonora suonisotto gli altri blocchi che abbiamo già inserito. Fare doppio clic sulla pila diblocchi per eseguire il programma. Il gatto ora miagola. Grande! Un altromodo per eseguire un programma è premendo la bandiera verde, che si trovasulla parte superiore destra dell'area di esecuzione. Per fare questo, cioè perfare in modo che questo funzioni, è necessario aggiungere il blocco quando siclicca su (disegno della bandiera verde) in cima al nostro programma, che èpresente nella tavolozza situazioni. Per eseguire il programma, premere labandiera verde. Siccome creeremo diversi programmi in questo corso, èimportante dare loro nomi rappresentativi. Ogni progetto può essere salvato,in modo da poter lavorare su di esso in seguito. Questo è molto utile inquanto ci possono venire nuove idee per estendere e migliorare i nostriprogrammi. Se si sta lavorando sulla versione offline, andare su File e Salva.Se si sta lavorando nella versione on line e si è registrati, il programma vieneautomaticamente salvato con il nome assegnato. Se si sta lavorando on-line in

forma anonima, e si vuole salvare il progetto, andare su File e Scarica odownload sul tuo computer. Ti verrà chiesto dove scaricare il file, e che nomedargli. In questo caso createvi sotto la cartella documenti, la cartellainformatica una nuova cartella chiamata SCRATCH. Si noti che i file di scratchhanno estensione (l’ultima parte del nome non sempre visibile nel sistemaoperativo) .sb2. Se avete chiamato il progetto primoEsempio, verrà salvatacome primoEsempio.sb2 nella cartella selezionata. Nella precedente versionedi Scratch, i file avevano estensione .sb. Ma non preoccuparti, i file che sonostati creati nella precedente versione di Scratch possono essere utilizzatianche in questa versione. Se si desidera lavorare sul tuo progetto più tardi, sipuò semplicemente aprire il file quando si lavora non in linea. Se si lavora inlinea senza essere loggati si può comunque caricare il file dal tuo computer.Ben fatto. Hai creato il tuo primo programma per computer.

Lezione 7 – Istruzioni CondizionaliFinora, abbiamo creato un programma in Scratch che fa muovere il gatto diqualche passo, cambia il suo colore, e poi fa un miagolio. Questo è unprogramma di logica sequenziale, dove tutti i compiti sono effettuati insequenza, uno dopo l'altro, nello stesso ordine di quello dei blocchi di Scratchnello script. Ma, cosa succede se vogliamo fare in modo che il gatto miagolisolo se è stato raggiunto il bordo del palcoscenico? Questo caso è diverso dalprecedente esempio, e implica una decisione. Per raggiungere questo obiettivo, useremo un costrutto di programmazione ditipo selezione (o decisione). La Selezione implica l'uso di condizioni percontrollare il flusso di un programma e prendere decisioni. Quando si esegueun programma che contiene una selezione, il computer prende una decisionesu come procedere in base al fatto che una determinata condizione èsoddisfatta o meno. Solo se la condizione è soddisfatta, la partecorrispondente del programma viene eseguita. Come già accennato, unaselezione è uno dei principali costrutti di programmazione, insieme con lasequenza e la ripetizione (quest'ultima detta anche iterazione). La selezione è utilizzata ogni volta che una decisione deve essere presa, oquando vogliamo aggiungere un percorso alternativo in un algoritmo. Ci sonomolti esempi di vita di tutti i giorni in cui viene utilizzata la selezione. Peresempio, se piove, prenderò un ombrello con me. Istruzioni condizionali (altro modo di chiamare le selezioni e decisioni) sonopresenti anche in cucina. Per esempio, possiamo creare diversi tipi di pizze aseconda degli ingredienti che aggiungiamo a una semplice pizza margherita.Se vogliamo fare una pizza piccante, usiamo peperoncini. Se stiamo puntandoad una pizza vegetariana, allora possiamo aggiungere i funghi. Se vogliamomangiare una pizza gustosa, allora possiamo aggiungere la pancetta. La medicina è un altro settore in cui selezione svolge un ruolo importante. Seprendiamo l'influenza il dottore può ordinarci della pillole da prendere per tregiorni, per esempio, e se il quarto giorno abbiamo ancora la febbre, alloradobbiamo tornare dal dottore. Riuscite a pensare a qualsiasi altro esempio diselezione, ad esempio in diversi giochi da tavolo? Coraggio pensate a degli esempi. Avrete notato che abbiamo usato la parola se un bel po in questi esempi.Questa non è una coincidenza. Le istruzioni SE sono uno dei principali modi

per esprimere le condizioni e attuare la selezione. E Scratch ha (più di) unblocco SE per l'attuazione di selezioni nei nostri programmi. Ma prima di imparare come la selezione funziona in Scratch, diamo unosguardo più da vicino ad alcuni algoritmi che contengono la selezione.

Lezione 8 – Diagrammi di Flusso e PseudocodiceOra abbiamo visto in scratch un esempio di selezione. A proposito, torniamo alnostro algoritmo per cambiare una lampadina. Questo algoritmo inizia con il controllo della disponibilità di una lampadina incasa e se non ho una nuova lampadina, allora vado a comprarla. Dopodiché,continuo con il resto dei passaggi. Se ho una nuova lampadina, poi posso

semplicemente procedere al prossimo passodell'algoritmo. Ora, diamo un'occhiata a un altro diagramma di flussoche visualizza un algoritmo per entrare in unastanza. Secondo questo algoritmo, abbiamo primaverificare se la porta è chiusa, e se lo è, la apriamo.Poi si entra nella stanza e si verifica se la stanza èbuia. Se lo è, accendiamo la luce. Infine, chiudiamo laporta dietro di noi. Si può vedere che ci sono diversidiversi percorsi di esecuzione di questo algoritmo, aseconda dello stato della porta e delle luci. Peresempio, nel caso in cui la porta è aperta e la stanzaè luminosa, ci è sufficiente entrare nella stanza echiudere la porta dietro di noi. Un altro percorso diesecuzione comporta il caso in cui la porta è chiusa ela camera è buia. In tal caso, per prima cosa occorreaprire la porta, dobbiamo poi entra nella stanza eaccendere la luce. E, infine, chiudiamo la porta dietrodi noi.

Andiamo ora a dare un'occhiata allo pseudocodice per questo algoritmo.

Lo Pseudocodice è una descrizione di un algoritmo che utilizza il linguaggionaturale, ma in una forma più strutturata .

Cosa vuol dire più strutturata? Vuol dire per esempio facendo uso dei costruttidi programmazione come se ...allora per l'istruzione di selezione

Ecco per esempio un pseudocodice per l'algoritmo per entrare in una stanza.

Se la porta è chiusa alloraapri la porta

entra nella stanzase la luce è spenta allora

accendi la luceChiudi la porta

Si noti l'uso delle parole chiave se e allora. Queste sono le parole esatteusate nel blocco Scratch per la selezione. Ora, diamo uno sguardo più da

vicino al programma del gatto che si muove,cambia colore e poi miagola.Vogliamo modificare questo programma per farsi che il gatto miagoli solo se è stato raggiunto ilbordo del palco ed inoltre in tal caso rimbalzi.Come facciamo questo? Prima di tutto, possiamosfruttare ancora il nostro programma esistente.

Vogliamo ancora che il gatto si sposti di alcuni passi e poi cambi il suo colore.Ciò che è diverso ora è che non lo facciamo miagolare sempre dopo questasequenza. Dovrebbe miagolare solo se tocca il bordo del palcoscenico. Inoltrein tal caso, dovrebbe anche rimbalzare.

Quindi quello che farò è staccare il bloccoproduci suono Meow dal nostro script, e diintrodurre il blocco se allora dalla tavolozzadi controllo. La condizione perché il gattoinizi a miagolare è che si sta toccando ilbordo. Si introduce allora il blocco statoccando bordo della tavolozza sensori e losi inserisce nel “buco” a forma di diamanteche si trova nel blocco se allora. Vorrei ancheaggiungere il blocco per far si che il gattorimbalzi quando tocca il bordo. Posso trovare

il blocco adatto nella categoria movimento: è il blocco rimbalza quandotocchi il bordo. Il mio programma rivisto è pronta. Il gatto si muoverà ecambiare colore e se è a contatto con il bordo, miagola e rimbalza. Nellaprossima lezione vedremo le condizioni, come quella che sta dentro il bloccose allora in modo più dettagliato.

Lezione 9 – Condizioni e Valori BooleaniOra, diamo uno sguardo più da vicino allacondizione presente all'interno di di unblocco di selezione, il blocco se … allora.Osserva la sua forma di diamante, questosignifica che non si può inserire qualsiasi tipodi blocco all'interno di una condizione, comeper esempio il blocco “fai 10 passi”:all'interno di una condizione possiamoinserire solo i blocchi con forma di diamante(molti di questi blocchi li trovate in sensori,altri in operatori): questi particolari blocchi

possono avere solo due valori: vero o Falso.

In informatica si dice che questi blocchi danno un risultato che è di tipobooleano in quanto possono avere solo due valori possibili, vero o falso.Quindi i blocchi booleani sono i blocchi che possono avere solo due valori:Vero o Falso.

Un modo di pensare a queste condizioni che sono presenti nei blocchi a formadi diamante è pensarle nella forma di una domanda a cui si può rispondererispondere sì (vero) o no (falso). Alcune domande dal mondo reale chepotrebbero funzionare come condizioni sono:

• la porta è chiusa a chiave? • John ha una età superiore a 15 anni? • Franco vive a Cagliari?

E più in particolare, per il programma che abbiamo creato in precedenza,

• il gatto è a contatto con il bordo?

Tutte queste domande possono essere espresse come condizioni perun'istruzione SE (if) nel programma. Ora, Vediamo altre domande e pensiamo se possono essere usate comecondizioni o no, cioè se possono essere inserite nei blocchi a forma didiamante dei nostri programmi.

• Quale è il tuo colore preferito? • Quanti anni ha John? • Perchè Franco vive a Cagliari? • Quando è la tua festa?

No, nessuna di queste può essere usata come condizione.Perché non possono essere utilizzate come condizioni? Queste domande non prevedono come risposta un si o un no e quindi nonpossono essere usate come condizioni per i nostri programmi.

Fantastico. Così avete imparato che cosa è la selezione, e come integrarla neiprogrammi. Esprimere condizioni e far prendere decisioni al vostroprogramma è un'abilità potente, che è particolarmente utile quando si creanoi giochi per computer. Ad esempio, per rilevare la collisione tra due oggetti o per decidere quandocambiare livelli di difficoltà nel vostro gioco si devono usare delle condizioni.Presto utilizzeremo la selezione per creare qualche gioco.

Lezione 10 – Ripetizione infinita (o Iterazione infinita o Ciclo infinito)

Andiamo ora a rivisitare il programma del gatto in quanto vogliamo ripetere ilsuo comportamento: noi vorremmo che il gatto si muova di 25 passi, poi

cambi colore e così via. Come possiamofare questo? Bene, un modo per farequesto sarebbe copiare il programma piùvolte, posizionando il nuovo codice giustodopo il codice esistente. Potremmo farequesta operazione, due volte, tre volte,quattro volte, ma non all'infinito. C'è un modo per dire che il gatto devereplicare il suo comportamentosempre? Per fortuna, SI. Siamo in grado di fare questo con un l'usodella istruzione di iterazione, o diripetizione (iterazione o ripetizione sono

sinonimi).

L'iterazione è un processo che permette di ripetere sezioni di unprogramma. È uno dei costrutti principali della programmazione insieme allasequenza e alla selezione.

Quando è utile l’istruzione di iterazione? Quando un determinatocomportamento deve essere ripetuto. Ci sono diversi tipi di iterazione. Inquesta lezione, ci concentreremo su una ripetizione infinita, nota anche comeloop infinito. Prossimamente avremo la possibilità di indagare su altri tipi diiterazione. Nel caso di loop infiniti, una sezione del programma va inesecuzione più e più volte, senza fermarsi mai. Quindi, i cicli infiniti1 vengonoutilizzati ogni volta che un comportamento specifico ha bisogno di essereripetuto all'infinito; o quando vogliamo che un particolare comportamento siasempre presente. Vi è un'ampia gamma di esempi tratti dalla vita di tutti igiorni in cui abbiamo cicli infiniti.Quando nuotiamo, per esempio, i nostri piedi si muovono per tutto il tempo,senza fermarsi.La Luna orbita intorno alla Terra continuamente, ancora e ancora.Il nostro cuore, è programmato per battere per sempre, dal giorno in cuisiamo nati, fino alla morte.

1 Cicli infiniti, ripetizioni infinite, loop infiniti e iterazioni infinite sono termini diversi ma con lo stesso significato

Ora, usiamo l'iterazione per modificare un programma in Scratch per far si cheil gatto si sposti continuamente, rimbalzise è sul bordo, e cambi il suo colore.Il nostro codice attuale dice al gatto dimuoversi, rimbalzare se è sul bordo, ecambiare il suo colore solo una volta.Per ripetere questo comportamento atempo indeterminato, useremo il bloccoper sempre che troviamo nella categoria Controllo.

Facciamo in modo che il blocco persempre racchiuda le precedenti istruzioni.Il gatto ora continua a muoversi erimbalzare se è sul bordo, e cambiarecolore tutto il tempo. È possibileincludere anche più blocchi all'interno delblocco per sempre, se si vuole.Per esempio, possiamo introdurre ilblocco passa al successivo costume dellacategoria aspetto. In tal modo, si rendeil movimento del gatto più realistico e

sembra che il gatto stia correndo (provatelo). Un'ultima cosa: osservate come il blocco per sempre non abbia un punto perpoter agganciare ulteriori blocchi. Come mai? Come si può vedere, una voltache il gatto fa 10 passi, poi cambia colore e poi rimbalza se tocca il bordo sitorna all'inizio e si ripetono le tre istruzioni. Non c'è fine a questo ciclo infinito.E, di conseguenza, non possiamo aggiungere qualcosa dopo semplicementeperché non ha senso avere qualcosa dopo un qualcosa che dura per persempre. Nella prossima lezione, impareremo come per cambiare l'aspetto delgatto combinando iterazione e selezione.

Lezione 11 – Cicli controllati da un contatore e cicli controllati da una condizione

Sinora abbiamo visto un un tipo di iterazione o ciclo o ripetizione di tipoinfinito che ci serve quando un pezzo o sezione di codice si deve ripetereall'infinito. Esistono e sono molto usati altri due tipi di cicli: quelli controllatida un contatore e quelli controllati da una condizione.

Cicli controllati da un contatoreIniziamo dai cicli controllati da un contatore.

Un ciclo controllato da un contatore permette di ripetere una sezione dicodice un certo numero di volte prefissato (il numero di volte può esserequalunque ma deve essere definito prima che il ciclo inizi)

Ci sono molti esempi della vita quotidiana in cui si possono usare i ciclicontrollati da un contatore. Per esempio ricordate il primo algoritmo cheabbiamo visto su come fare un panino al prosciutto e formaggio? Bene se

invece che un panino volessi fare 5 panini lo pseudocodice di tale algoritmosarebbe di questo tipo

ripeti per 5 volte1. prendere due fette di pane, 2. prendere una fetta di prosciutto e metterla su una fetta di pane, 3. pendere una fetta di formaggio e metterla sopra il prosciutto, 4. posizionare la seconda fetta di pane sulla parte superiore del formaggio,

Naturalmente si poteva fare anche un algoritmo che semplicemente prendevale istruzioni del primo algoritmo e le copiava per cinque volte come qui diseguito

1. prendere due fette di pane, 2. prendere una fetta di prosciutto e metterla su una fetta di pane, 3. pendere una fetta di formaggio e metterla sopra il prosciutto, 4. posizionare la seconda fetta di pane sulla parte superiore del formaggio, 5. prendere due fette di pane, 6. prendere una fetta di prosciutto e metterla su una fetta di pane, 7. pendere una fetta di formaggio e metterla sopra il prosciutto, 8. posizionare la seconda fetta di pane sulla parte superiore del formaggio, 9. prendere due fette di pane, 10. prendere una fetta di prosciutto e metterla su una fetta di pane, 11. pendere una fetta di formaggio e metterla sopra il prosciutto, 12. posizionare la seconda fetta di pane sulla parte superiore del

formaggio, 13. prendere due fette di pane, 14. prendere una fetta di prosciutto e metterla su una fetta di pane, 15. pendere una fetta di formaggio e metterla sopra il prosciutto, 16. posizionare la seconda fetta di pane sulla parte superiore del

formaggio, 17. prendere due fette di pane, 18. prendere una fetta di prosciutto e metterla su una fetta di pane, 19. pendere una fetta di formaggio e metterla sopra il prosciutto, 20. posizionare la seconda fetta di pane sulla parte superiore del

formaggio,

però un tale modo di procedere è

• più noioso, • più difficile da leggere e capire, • è più facile commettere errori • più difficilmente modificabile.

Usando il ciclo controllato da un contatore è tutto molto più semplice: peresempio se voglio fare solo tre panini mi basta cambiare la prima istruzioneda ripeti per 5 volte a ripeti per 3 volte.

Cicli controllati da una condizione

Un ciclo controllato da una condizione è un ciclo che permette di ripetereuna sezione di codice sinché una condizione viene verificata (o finchésuccede qualcosa di specifico)

Esempi di tali cicli sono molto comuni nella vita quotidiana,

• un pedone cammina finché non trova il rosso per i pedoni• un cane mangia dal piatto finché il piatto non è vuoto• se devo prendere una tazza di the dal tavolo muoverò il braccio verso la

tazza finché non tocco la tazza ed a quel punto la prendo

Se volessi rappresentare quest'ultimo caso con un diagramma di flusso essosarebbe il seguente

Osserviamo qui i vari casi che possono capitare.Se per esempio la persona sta già toccando la tazza allora la prenderàdirettamente senza che vi sia nessuna ripetizione: essendo la condizionesubito soddisfatta si prende direttamente la tazza (Caso estremo 1)Vediamo un caso opposto; supponiamo che la persona sia lontana e che nonveda bene: in tal caso potrebbe anche accadere che i movimenti della manoinvece di avvicinarsi alla tazza faccia si che si allontani dalla tazza, in questocaso potremmo ripetere le istruzioni all'infinito senza che la condizione sia mai

Inizio

Stai toccando la tazza?

Muovi la mano verso la tazza

NO

Prendi la tazza

SI

Fine

soddisfatta (Caso estremo 2). In questo modo abbiamo visto i due casiestremi che possono capitare con un ciclo controllato da una condizione. In uncaso normale naturalmente la sezione di codice muovi la mano verso la tazzaverrà ripetuta un certo numero di volte sino a che la condizione dentro ilrombo viene soddisfatta ed a quel punto si prende la tazza.Ora concentriamoci sulla condizione: avete notato che anche nel caso diquesto tipo di ciclo c'è una condizione come nel caso della selezione? In effettisiamo proprio nello steso caso: ed in particolare il valore che una condizionepuò avere è VERO o FALSO proprio come nella selezione ed infatti neldiagramma di flusso si usa lo stesso simbolo. Attenzione che però le istruzionicomplessivamente sono molto diverse in quanto in un caso c'è una ripetizionenell'altro no. Sono solo le condizioni che sono dello stesso tipo cioè BOOLEANEossia possono valere VERO o FALSO.