Scratch 1 Definitivo formato pdf - Informatica per studenti

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..............................................................................................7
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................................................................................................16
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,
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 problemi
dal punto di vista computazionale e come sviluppare programmi per
computer. In altre parole, impareremo come pensare e su cosa ragionare
prima di iniziare effettivamente a scrivere un programma. Impareremo inoltre
a pensare e ragionare anche mentre codifichiamo un programma.
Inoltre impareremo a che cosa prestare attenzione una volta scritto il nostro
programma, per verificare che effettivamente svolga il compito per cui è stato
progettato e scritto. Non è necessario sapere nulla di tutto questo prima di
iniziare il corso: svilupperemo queste competenze passo passo. 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 di programmi per
computer. Ma si sarà anche in grado di pensare come un ingegnere 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 durante
il quale ci occuperemo di diversi argomenti che sono i principi di
programmazione, e la loro messa in pratica creando dei programmi per
computer.
Per quel che riguarda il materiale avrete il libro di testo, questi appunti, il sito
asaba.altervista.org dove ci saranno anche i codici dei programmi che
scriveremo e, se ne avremo il tempo, dei videomateriali. Ci saranno domande,
quiz per aiutarti a verificare di aver correttamente capito i nuovi concetti.
Il corso degli studi comprende quiz e progetti di programmazione. Si propone
sopratutto di farvi fare una vera esperienza di programmazione. Ci sarà un
quiz ogni 2 o 3 settimane contenente domande a risposta multipla che
possono richiedere anche di scrivere, di testare, o analizzare i programmi.
Oltre ai quiz, vi saranno due progetti di programmazione, uno dopo 4/54
settimane, e uno dopo 7/8 settimane . [da realizzare in futuro] Questi progetti
saranno corretti dai vostri stessi compagni. Una delle risorse più importanti
per questo corso è il forum di discussione, in cui è possibile interagire con il
compagni di classe per discutere gli argomenti che coprono ogni settimana.
Ogni volta che avete una domanda durante questo corso, appena potete
mettetela sul sul forum. Allo stesso modo, è possibile aiutare i vostri
compagni di classe rispondendo alle loro domande lì. Siete fortemente
incoraggiati ad usare il forum di discussione per interagire con i compagni ed
imparare gli uni dagli altri. In questo modo scoprirete che la programmazione
può essere un'attività molto sociale, e come con tutte le attività sociali, ci
aspettiamo che sarete guidati dal rispetto ed educazione.
Lezione 2 - Algoritmi
Ora 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 ti
mostreranno i concetti fondamentali della programmazione.
Diciamo che vogliamo insegnare a qualcuno come fare un panino con
prosciutto e formaggio. Siamo in grado di descrivere i passi di questo compito
come
1.
2.
3.
4.
prendere due fette di pane,
prendere una fetta di prosciutto e metterla su una fetta di pane,
pendere una fetta di formaggio e metterla sopra il prosciutto,
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 di
passi, 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 lampada
da comodino
Potremmo fare quanto segue.
1. Se non si dispone di una nuova lampadina, andare ad acquistare una
nuova lampadina.
2. Staccare la corrente, cioè togliere l'alimentazione al circuito
3. ripeti: ruota la lampadina in senso antiorario fino a quando si rimuove
completamente.
4. Buttare la lampadina fulminata nell'apposito contenitore
5. inserire la nuova lampadina nel portalampada
6. 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 comprendono
anche una decisione e una ripetizione.
Sequenze, decisioni, e le ripetizioni sono i costrutti di base (i mattoncini)
con cui costruiamo i nostri programmi. Abbiamo descritto il processo per fare
un panino e cambiare una lampadina come una procedura passo passo.
Questa sequenza ordinata di passi è chiamato un Algoritmo. Gli Algoritmi
descrivono la procedura per svolgere un compito o risolvere un problema in
un modo passo-passo.
Essi possono includere sequenze, decisioni e ripetizioni, proprio come
abbiamo 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 per
una persona che è attualmente all'Hotel in basso e vuole andare alla stazione.
Vi chiedo: si può giungere alla stazione con diversi percorsi ossia con due
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 altro
isolato. Un'altra opzione potrebbe essere puntare a ovest, passeggiata per
due isolati, puntare nord, a piedi due isolati.
Ci sono ancora più opzioni, forse non sono le più veloci, ma possono
effettivamente risolvere il problema. Come forse avrete notato, questi
NORD
OVEST
EST
algoritmi che abbiamo descritto sinora
SUD
non hanno nulla a che fare con i
computer;
Inoltre
si
può
esprimere
o
rappresentare un algoritmo in tante
forme diverse. Ad esempio, il primo
algoritmo per andare dall'hotel alla
stazione
ferroviaria,
può
essere
rappresentato sulla mappa, quindi
visivamente.
Un altra forma è la descrizione
testuale che abbiamo dato, un'altra
forma è quella del diagramma di
flusso, o ancora come codice per
computer.
Diamo uno sguardo più da vicino a queste varie forme.
L'algoritmo visuale, cioè la mappa che ci descrive visivamente la strada per
giungere alla stazione, cioè il nostro algoritmo. Esso mostra chiaramente che
camminiamo per due isolati verso nord, e poi puntiamo a ovest e quindi
camminiamo per un isolato.
L'algoritmo in italiano, è una descrizione a parole del cammino da
effettuare 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 di
diagrammi chiamato diagrammi di flusso. Il diagramma di flusso che
visivamente illustra il nostro algoritmo è questo.
Inizia
Direzione Nord
Cammina per due isolati
Direzione Ovest
Cammina per un isolato
Fine
Questo diagramma di flusso dimostra il carattere sequenziale di questo
algoritmo, infatti esso si svolge semplicemente con un passo dopo l'altro in
sequenza. In questo algoritmo non ci sono decisioni o ripetizioni come in
quello della lampadina. Volete scoprire di più su algoritmi? Nella prossima
lezione vedremo esempi più interessanti.
Lezione 3 - Algoritmi caratteristiche
Diamo un'occhiata ad altri esempi di algoritmi che usiamo tutti i giorni. Come
si risolverebbero i seguenti problemi? Attraversare la strada, cuocere una
torta, mettersi una camicia, versare un bicchiere di succo di frutta, sommare
due numeri di tre cifre ciascuna, o anche spiegare a un alieno come lavarsi i
denti?
In ogni caso, quando si deve creare un algoritmo, cioè un procedimento passo
passo che risolve un problema, è importante pensare alle ipotesi che
facciamo. Per esempio, che ipotesi stiamo andando a fare per il traffico,
quando si progetta un algoritmo per attraversare la strada? Si guida a
sinistra, come in Scozia, o a destra, come in Italia? Abbiamo bisogno di
prendere in considerazione la direzione dei veicoli al fine di controllare il lato
corrispondente prima di attraversare.
Oppure, diamo un'occhiata a un esempio più estremo. Quali sono le ipotesi
che 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à il
nostro alieno?
Vi invitiamo a scrivere le istruzioni, come abbiamo fatto negli esempi
precedenti, e poi le discutiamo.
Quindi quando dobbiamo scrivere un algoritmo per prima cosa dobbiamo
analizzare un problema e, fatte tutte le ipotesi necessarie, siamo in grado di
andare avanti e descrivere come fare per svolgere un dato compito.
Dobbiamo sottolineare però, che è fondamentale la chiarezza e il dettaglio
con cui diamo le nostre istruzioni, cioè la chiarezza ed il dettagli con cui
descriviamo il nostro algoritmo
Ci potrebbero essere passi che significano qualcosa di diverso per persone
diverse. 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”,
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 delle
istruzioni precise. Prendete una penna e il quaderno di informatica, e provate
ad eseguire le seguenti istruzioni per disegnare un oggetto.
1.
2.
3.
4.
Disegnare una linea diagonale.
Tracciare un'altra linea diagonale collegata alla fine della prima linea
Tracciare una linea verticale che unisce le due linee precedenti
Tracciare una linea orizzontale che parte per il punto di unione delle due
precedenti linee
5. 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 di
descrivere è un aquilone. Eccolo qua: forse
qualcuno di noi è riuscito a descrivere un
qualcosa di simile ma sicuramente non
tutti.
L'algoritmo
fornito
era
volutamente
abbastanza ambiguo cioè non chiaro. A
causa di questa ambiguità ci sono stati
molti modi di interpretarlo. E infatti, mi
sarei aspettato di vedere una vasta
gamma di disegni, la maggioranza dei quali non assomiglia ad un aquilone.
Si può scrivere un algoritmo migliore per disegnare un aquilone? Be potete
provare a dare le istruzioni ai vostri amici (magari via whats app) e vedere se
funziona. Oppure potete pensare ad un altro insieme di istruzioni per
disegnare un altro oggetto e provate a darle ai vostri amici. È possibile
caricare il tuo algoritmo nel gruppo whats app della classe e i tuoi compagni di
classe possono provare adeseguirlo ed indovinare ciò che è.
Che cosa ci ha mostrato questo esperimento? Ci ha mostrato che essere
precisi è molto importante quando diamo delle istruzioni ad una persona.
E in realtà, è ancora più importante durante la programmazione dei
computer. Tutto ciò che i computer fanno è seguire le istruzioni, quindi se
queste non sono chiare, i computer non faranno ciò vogliamo che facciano. Se
ci pensate, i computer non sono poi così intelligenti. Anche se sono molto
bravi in qualche attività, come per esempio, facendo grandi calcoli e giocare a
scacchi, gli esseri umani sono molto meglio in altri campi. Ad esempio, la cura
di un bambino, riconoscimento di oggetti in immagini, avere una
conversazione 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 usare nella vita di tutti i giorni. E 'giunto il
momento di iniziare a realizzare algoritmi in Scratch.
Lezione 4 – Scratch Introduzione ed esempi
Che cosa è Scratch e cosa possiamo fare con esso?
Scratch è un linguaggio di
programmazione, cioè un
mezzo per comunicare con
il
computer
che
ci
permette di dare istruzioni
al computer, cioè fare in
modo che esso esegua i
nostri ordini. E 'molto facile
creare
programmi
in
Scratch,
comprese
animazioni
e
giochi.
Questo strumento è stato
sviluppato dal Media Lab
del MIT. E 'gratuito, e può essere utilizzato on-line sul suo sito web, oppure
può essere scaricato sul proprio computer ed essere utilizzato offline. In
questo corso, useremo Scratch 2.0, che presenta molti miglioramenti rispetto
alla vecchia versione 1.4. Per avere un'idea di cosa si può fare con scratch
vedremo alcuni esempi di programmi scritti in Scratch. Utilizzando il browser
web, andiamo sul sito scratch.mit.edu e vediamo una schermata come questa.
Clicca su Vedi gli esempi e dai un'occhiata ai programmi. Per esempio, è
possibile
visualizzare
l'esempio
biglietto
di
auguri
(link
https://scratch.mit.edu/projects/11806234/). Nella schermata clicca sulla
bandiera verde per eseguire il programma. Siamo in grado di fermare
l'esecuzione del programma premendo il pulsante rosso. Si può anche provare
un gioco, come il popolare Flappy Bird, che è possibile cercare qui (finestra
cerca)
Troverete molte versioni del gioco in una pagina simile a questa ed è possibile
scegliere e provare una qualsiasi di loro. Per esempio, scegliamo questo (link
https://scratch.mit.edu/projects/17341536/). Vai sul link, clicca sulla bandiera
verde, e provate a giocare. L'obiettivo è quello di far volare l'uccelllino tra le
file di tubi verdi senza toccarli e senza toccare il fondo o l'apice. Per spostare
l'uccellino, è necessario premere la barra spaziatrice o cliccare col mouse. Se
non si desidera alcun suono, basta premere M. Questi sono solo alcuni esempi
di 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. Nella
Prossima Lezione Vedremo come utilizzare scratch
Lezione 5 – Scratch Modalità di utilizzo
Per cominciare, diamo uno sguardo alle varie opzioni che abbiamo per
lavorare con Scratch 2.0. È possibile lavorare offline, lavora online loggato, o
lavorare online in forma anonima. Diamo un'occhiata a queste opzioni in modo
più dettagliato. Per lavorare offline, cioè senza l'utilizzo di una connessione ad
internet, avremo bisogno di scaricare Scratch 2.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 tuo
computer (funziona per windows, Mac Os e Linux).Dopo di che sarete in grado
di utilizzare Scratch offline cioè sul computer senza essere connessi a internet.
Al fine di lavorare on line loggati dovrete prima andare a il sito web di Scratch
su questo indirizzo https://scratch.mit.edu/ fare clic su iscriviti a scratch e
compila i tuoi dati, annotandoti la password. La prossima volta che si desidera
utilizzare Scratch basta cliccare su provalo e verrai portato alla pagina dove
fare il login inserendo il tuo username e password. Utilizzando Scratch in
questo modo hai il vantaggio che è possibile salvare il tuo lavoro online e
accedervi da qualsiasi luogo (quindi da casa o da casa di un amico o parente o
a scuola). È inoltre possibile condividere i programmi con altri utenti di
Scratch. La terza opzione prevede lavoro on-line in forma anonima. In questo
caso, si dovrà salvare ogni progetto sul proprio computer se no lo si perde
una volta usciti da scratch. Al fine di iniziare a programmare in linea,effettuato
il login oppure in forma anonima, è sufficiente fare clic su provalo per iniziare.
Lezione 6 – Scratch Struttura ambiente di
programmazione - Sequenze
STAGE
STAGE
O O
PALCOSCENICO
PALCOSCENICO
AREA DEL
ZONA
DEL
PROGRAMA
O
PROGRAMMA
DEGLI SCRIPT
AREA DEI
BLOCCHI
AREA DEGLI
SPRITE
SPRITE
AREA
DEGLI SFONDI
SFONDI
ZONA DEI BLOCCHI
Ora, iniziamo la codifica in Scratch. Quando si avvia Scratch, si otterrà una
schermata come questa. Abbiamo dato nomi ai ciascuna di queste aree. I
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 colore
distintivo. In fondo, abbiamo lo stage, che può avere diversi sfondi. E qui,
abbiamo gli Sprites, che sono i personaggi che puoi programmare dicendo loro
cosa fare. Per eseguire un programma, si fa clic sulla bandiera verde o doppio
clic sullo script: lo script o programma che abbiamo realizzato verrà eseguito
nello stage o palcoscenico che è detta anche area di esecuzione. È possibile
ridimensionare l'area di esecuzione premendo la freccia che compare in basso
a destra dell'area di esecuzione.
Ora, proviamo diversi blocchi in Scratch per avere una idea migliore di quello
che 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. È possibile modificare la quantità
di passi scrivendone il numero. Provate, per esempio, digitando 100 e poi fate
doppio clic su di esso per provarlo. Possiamo anche dire che al gatto di
rimbalzare se colpisce il bordo dello schermo. Per fare questo, è sufficiente
trascinare il blocco “rimbalza quando tocchi il bordo” e metterlo sotto il blocco
precedente. Provate a lanciare il programma con un doppio clic su di esso, per
vedere cosa fa. Se non si desidera che il gatto si posizioni a testa in giù
quando rimbalza, premere la i su Sprite1 e quindi prova selezionando stili
diversi di rotazione, ad eseguire il programma. Ora, cambiamo il colore del
gatto. Vai alla tavolozza aspetto, prendi il blocco cambia effetto di colore di
25 e collegalo al blocco precedente collocandolo subito sotto. Fare doppio clic
sul codice per eseguire il programma. Ogni volta che il gatto si muove, cambia
colore. Per essere più precisi, ogni volta che si esegue il programma, il gatto
prime si muove, e quindi cambia colore. Questo programma viene eseguito
molto velocemente, quindi non possiamo vedere l'ordine di esecuzione ad
occhio nudo. Se volete osservare più da vicino la sequenza di esecuzione, è
possibile per esempio introdurre un'attesa di 1 secondo: andare nella
tavolozza di controllo e scegliere 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 in movimento e il cambiamento di colore. Ora,
rimuoviamo il blocco di attesa per continuare con il nostro script. Possiamo
per esempio fare in modo che il gatto miagoli. Introdurre il blocco produci
suono meow dalla tavolozza sonora suoni sotto gli altri blocchi che abbiamo
già inserito. Fare doppio clic sulla pila di blocchi per eseguire il programma. Il
gatto ora miagola. Grande! Un altro modo per eseguire un programma è
premendo la bandiera verde, che si trova sulla parte superiore destra dell'area
di esecuzione. Per fare questo, cioè per fare in modo che questo funzioni, è
necessario aggiungere il blocco quando si clicca su (disegno della bandiera
verde) in cima al nostro programma, che è presente nella tavolozza
situazioni. Per eseguire il programma, premere la bandiera 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 in quanto ci possono venire nuove
idee per estendere e migliorare i nostri programmi. Se si sta lavorando sulla
versione offline, andare su File e Salva. Se si sta lavorando sulla linea
versione on line e si è loggati, il programma viene automaticamente 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 o download sul tuo
computer. Ti verrà chiesto dove scaricare il file, e che nome dargli. In questo
caso createvi sotto la cartella documenti, la cartella informatica una nuova
cartella chiamata SCRATCH. Si noti che i file di scratch hanno estensione .sb2.
Se avete chiamato il progetto primoEsempio, verrà salvata come
primoEsempio.sb2 nella cartella selezionata. Nella precedente versione di
Scratch, i file avevano estensione .sb. Ma non preoccuparti, i file che sono
stati creati nella precedente versione di Scratch possono essere utilizzati
anche in questa versione. Se si desidera lavorare sul tuo progetto più tardi, si
può semplicemente aprire il file quando si lavora non in linea. Se si lavora in
linea 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 Condizionali
Finora, abbiamo creato un programma in Scratch che fa muovere il gatto di
qualche passo, cambia il suo colore, e poi fa un miagolio. Questo è un
programma di logica sequenziale, dove tutti i compiti sono effettuati in
sequenza, uno dopo l'altro, nello stesso ordine di quello dei blocchi di Scratch
nello script. Ma, cosa succede se vogliamo fare in modo che il gatto miagoli
solo se è stato raggiunto il bordo del palcoscenico? Questo caso è diverso dal
precedente esempio, e implica una decisione.
Per raggiungere questo obiettivo, useremo un costrutto di programmazione di
tipo selezione o decisione. La Selezione implica l'uso di condizioni per
controllare il flusso di un programma e prendere decisioni. Quando si esegue
un programma che contiene una selezione, il computer prende una decisione
su come procedere in base al fatto che una determinata condizione è
soddisfatta o meno. Solo se la condizione è soddisfatta, la parte
corrispondente del programma viene eseguita. Come già accennato, una
selezione è uno dei principali costrutti di programmazione, insieme con la
sequenza e la ripetizione (quest'ultima detta anche iterazione).
La selezione è utilizzata ogni volta che una decisione deve essere presa, o
quando vogliamo aggiungere un percorso alternativo in un algoritmo. Ci sono
molti esempi di vita di tutti i giorni in cui viene utilizzata la selezione. Per
esempio, se piove, prenderò un ombrello con me.
Istruzioni condizionali (altro modo di chiamare le selezioni e decisioni) sono
presenti anche in cucina. Per esempio, possiamo creare diversi tipi di pizze a
seconda degli ingredienti che aggiungiamo a una semplice pizza margherita.
Se vogliamo fare una pizza piccante, usiamo peperoni. Se stiamo puntando ad
una pizza vegetariana, allora possiamo aggiungere i funghi. Se vogliamo
mangiare una pizza gustosa, allora possiamo aggiungere la pancetta.
La medicina è un altro settore in cui selezione svolge un ruolo importante. Se
prendiamo l'influenza il dottore può ordinarci della pillole da prendere per tre
giorni, per esempio, e se il quarto giorno abbiamo ancora la febbre, allora
dobbiamo tornare dal dottore. Riuscite a pensare a qualsiasi altro esempio di
selezione, 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 un blocco SE
per l'attuazione di selezioni nei nostri programmi.
Ma prima di imparare selezione funziona in Scratch, diamo uno sguardo più da
vicino ad alcuni algoritmi che contengono la selezione.
Lezione 8 – Diagrammi di Flusso e Pseudocodice
Ora abbiamo visto in scratch un esempio di selezione. A proposito, torniamo al
nostro algoritmo per cambiare una lampadina.
Questo algoritmo inizia con il controllo della disponibilità di una lampadina in
casa 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
passo
dell'algoritmo.
Ora, diamo un'occhiata a un altro diagramma di flusso
che visualizza un algoritmo per entrare in una
stanza. Secondo questo algoritmo, abbiamo prima
verificare 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 la
porta dietro di noi. Si può vedere che ci sono diversi
diversi percorsi di esecuzione di questo algoritmo, a
seconda dello stato della porta e delle luci. Per
esempio, nel caso in cui la porta è aperta e la stanza
è luminosa, ci è sufficiente entrare nella stanza e
chiudere la porta dietro di noi. Un altro percorso di
esecuzione comporta il caso in cui la porta è chiusa e
la camera è buia. In tal caso, per prima cosa occorre
aprire la porta, dobbiamo poi entra nella stanza e
accendere la luce. E, infine, chiudiamo la porta dietro
di noi.
Andiamo ora a dare un'occhiata allo pseudocodice per questo algoritmo.
Lo Pseudocodice è una descrizione di un algoritmo che utilizza il linguaggio
naturale, ma in una forma più strutturata . Facendo uso dei costrutti di
programmazione come per esempio se ...allora per l'istruzione di selezione
Ecco per esempio un pseudocodice per l'algoritmo per entrare in una stanza.
Se la porta è chiusa allora
apri la porta
entra nella stanza
se la luce è spenta allora
accendi la luce
Chiudi la porta
Si noti l'uso delle parole chiave se e allora. Queste sono le parole esatte
usate 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 far
si che il gatto miagoli solo se è stato raggiunto il
bordo del palco ed inoltre in tal caso rimbalzi.
Come facciamo questo? Prima di tutto, possiamo
sfruttare 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 questa
sequenza. Dovrebbe miagolare solo se tocca il bordo del palcoscenico. Inoltre
in tal caso, dovrebbe anche rimbalzare.
Quindi quello che farò è staccare il blocco
produci suono Meow dal nostro script, e di
introdurre il blocco se allora dalla tavolozza
di controllo. La condizione perché il gatto
inizi a miagolare è che si sta toccando il
bordo. Si introduce allora il blocco sta
toccando bordo della tavolozza sensori e lo
si inserisce nel “buco” a forma di diamante
che si trova nel blocco se allora. Vorrei anche
aggiungere il blocco per far si che il gatto
rimbalzi quando tocca il bordo. Posso trovare
il blocco adatto nella categoria movimento: è il blocco rimbalza quando
tocchi il bordo. Il mio programma rivisto è pronta. Il gatto si muoverà e
cambiare colore e se è a contatto con il bordo, miagola e rimbalza. Nella
prossima lezione vedremo le condizioni, come quella che sta dentro il blocco
se allora in modo più dettagliato.
Lezione 9 – Condizioni e Valori Booleani
Ora, diamo uno sguardo più da vicino alla
condizione presente all'interno di di un
blocco di selezione, il blocco se … allora.
Osserva la sua forma di diamante, questo
significa che non si può inserire qualsiasi tipo
di blocco all'interno di una condizione, come
per esempio il blocco “fai 10 passi”:
all'interno di una condizione possiamo
inserire 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 tipo
booleano 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 forma
di diamante è pensarle nella forma di una domanda a cui si può rispondere
rispondere sì (vero) o no (falso). Alcune domande dal mondo reale che
potrebbero 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 per
un'istruzione SE (if) nel programma.
Ora, Vediamo altre domande e pensiamo se possono essere usate come
condizioni o no, cioè se possono essere inserite nei blocchi a forma di
diamante 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 non
possono essere usate come condizioni per i nostri programmi.
Fantastico. Così avete imparato che cosa è la selezione, e come integrarla nei
programmi. Esprimere condizioni e far prendere decisioni al vostro
programma è un'abilità potente, che è particolarmente utile quando si creano
i giochi per computer.
Ad esempio, per rilevare la collisione tra due oggetti o per decidere quando
cambiare 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 il
suo comportamento: noi vorremmo che il gatto si muova di 25 passi, poi
cambi colore e così via. Come possiamo
fare questo? Bene, un modo per fare
questo sarebbe copiare il programma più
volte, posizionando il nuovo codice giusto
dopo il codice esistente. Potremmo fare
questa operazione, due volte, tre volte,
quattro volte, ma non all'infinito.
C'è un modo per dire che il gatto deve
replicare il suo comportamento sempre?
Per fortuna, c'è.
Siamo in grado di fare questo con un l'uso
della istruzione di iterazione, o di
ripetizione (iterazione o ripetizione sono
sinonimi).
L'iterazione è un processo che permette di ripetere sezioni di un
programma. È uno dei costrutti principali della programmazione insieme alla
sequenza e alla selezione.
Esso è utilizzato quando un determinato comportamento deve essere ripetuto.
Ci sono diversi tipi di iterazione. In questa lezione, ci concentreremo su una
ripetizione infinita, nota anche come loop infinito. Prossimamente avremo la
possibilità di indagare su altri tipi di iterazione. Nel caso di loop infiniti, una
sezione del programma va in esecuzione più e più volte, senza fermarsi mai.
Quindi, i cicli infiniti1 vengono utilizzati ogni volta che un comportamento
specifico ha bisogno di essere ripetuto all'infinito; o quando vogliamo che un
particolare comportamento sia sempre presente. Vi è un'ampia gamma di
esempi tratti dalla vita di tutti i giorni 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 cui
siamo nati, fino alla morte.
Ora, usiamo l'iterazione per modificare un programma in Scratch per far si che
il gatto si sposti continuamente, rimbalzi
se è sul bordo, e cambi il suo colore.
Il nostro codice attuale dice al gatto di
muoversi, rimbalzare se è sul bordo, e
cambiare il suo colore solo una volta.
1
Cicli infiniti, ripetizioni infinite, loop infiniti e iterazioni infinite hanno lo stesso significato
Per ripetere questo comportamento a tempo indeterminato, useremo il blocco
per sempre che troviamo nella categoria Controllo.
Facciamo in modo che il blocco per
sempre racchiuda le precedenti istruzioni.
Il gatto ora continua a muoversi e
rimbalzare se è sul bordo, e cambiare
colore tutto il tempo. È possibile
includere anche più blocchi all'interno del
blocco per sempre, se si vuole.
Per esempio, possiamo introdurre il
blocco passa al successivo costume della
categoria aspetto. In tal modo, si rende
il 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 per
poter agganciare ulteriori blocchi. Come mai? Come si può vedere, una volta
che il gatto fa 10 passi, poi cambia colore e poi rimbalza se tocca il bordo si
torna all'inizio e si ripetono le tre istruzioni. Non c'è fine a questo ciclo infinito.
E, di conseguenza, non possiamo aggiungere qualcosa dopo semplicemente
perché non ha senso avere qualcosa dopo un qualcosa che dura per per
sempre. Nella prossima lezione, impareremo come per cambiare l'aspetto del
gatto 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 tipo
infinito che ci serve quando un pezzo o sezione di codice si deve ripetere
all'infinito. Esistono e sono molto usati altri due tipi di cicli: quelli controllati
da un contatore e quelli controllati da una condizione.
Cicli controllati da un contatore
Iniziamo dai cicli controllati da un contatore.
Un ciclo controllato da un contatore permette di repetere una sezione di
codice un certo numero di volte prefissato (il numero di volte può essere
qualunque ma deve essere definito prima che il ciclo inizi)
Ci sono molti esempi della vita quotidiana in cui si possono usare i cicli
controllati da un contatore. Per esempio ricordate il primo algoritmo che
abbiamo visto su come fare un panino al prosciutto e formaggio? Bene se
invece che un panino volessi fare 5 panini lo pseudocodice di tale algoritmo
sarebbe di questo tipo
ripeti
1.
2.
3.
4.
per 5 volte
prendere due fette di pane,
prendere una fetta di prosciutto e metterla su una fetta di pane,
pendere una fetta di formaggio e metterla sopra il prosciutto,
posizionare la seconda fetta di pane sulla parte superiore del formaggio,
Naturalmente si poteva fare anche un algoritmo che semplicemente prendeva
le istruzioni del primo algoritmo e le copiava per cinque volte come qui di
seguito
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,
ed è più facile commettere errori ed è più difficilmente modificabile. Usando il
ciclo controllato da un contatore è tutto molto più semplice: per esempio se
voglio fare solo tre panini mi basta cambiare la prima istruzione da 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 ripetere
una 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 esso
sarebbe il seguente
Inizio
Stai toccando
la tazza?
SI
NO
Muovi la mano
verso la tazza
Prendi la tazza
Fine
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 condizione
subito soddisfatta si prende direttamente la tazza.
Vediamo un caso opposto; supponiamo che la persona sia lontana e che non
veda bene: in tal caso potrebbe anche accadere che i movimenti della mano
invece di avvicinarsi alla tazza faccia si che si allontani dalla tazza, in questo
caso potremmo ripetere le istruzioni all'infinito senza che la condizione sia mai
soddisfatta. In questo modo abbiamo visto i due casi estremi che possono
capitare con un ciclo controllato da una condizione. In un caso normale
naturalmente la sezione di codice muovi la mano verso la tazza verrà ripetuta
un certo numero di volte sino a che la condizione dentro il rombo viene
soddisfatta ed a quel punto si prende la tazza.
Ora concentriamoci sulla condizione: avete notato che anche nel caso di
questo tipo di ciclo c'è una condizione come nel caso della selezione? In effetti
siamo proprio nello steso caso: ed in particolare il valore che una condizione
può avere è VERO o FALSO proprio come nella selezione ed infatti nel
diagramma di flusso si usa lo stesso simbolo. Attenzione che però le istruzioni
complessivamente sono molto diverse in quanto in un caso c'è una ripetizione
nell'altro no. Sono solo le condizioni che sono dello stesso tipo cioè BOOLEANE
ossia possono valere VERO o FALSO.