SlideShare ist ein Scribd-Unternehmen logo
1 von 44
PENSIERO COMPUTAZIONALE
cos’è e come formare gli studenti
Ing. Domenico Barile
d.barile@redflow.it
@dBarile
Chi sono
• Ingegnere Informatico, libero professionista
• Dematerializzazione, non materializzazione (generazione digitale
dei documenti)
• Conservazione digitale
• Fatturazione elettronica
• PDF, PDF-A
• Relatore al 3rd International PDF-A Conference di Berlino- 2009
• Relatore al 4th International PDF-A Conference di Roma - 2010
• Firma digitale, firma elettronica avanzata (firma grafometrica)
• Auditor/Lead Auditor Sistemi di Gestione della Sicurezza delle
Informazioni ISO/IEC 27001:2013
• Appassionato di ‘digitale’ fin da ragazzino
• Papà di un ragazzo di 11 anni
• Digital Champion per Oppeano (VR) nel 2015
• Fondatore e Mentor CoderDojoOppeano (VR)
• Socio fondatore dell’associazione Villaggio Digitale
VIDEO
SOMMARIO
• Perché l’informatica
• Cos’è il Pensiero Computazionale?
• Il “messaggio base” di programmailfuturo.it
• 2 fondamenti “inderogabili”
• I concetti fondamentali della programmazione
• Quali strumenti usare
• Domande & Risposte
Perché l’informatica
Nel ‘recente’ passato la rivoluzione industriale ha provocato
l’introduzione di fisica, biologia e chimica nella secondaria con primi
accenni nella primaria
E’ necessario fornire a tutti i cittadini strumenti di lettura di una società
sempre più tecnologica / digitale.
Necessaria un'educazione ad hoc: si hanno strumenti ma non si
conoscono fondamenti del loro funzionamento.
Gap con resto d’Europa e del mondo è significativo ed esiste rischio
concreto che non si riesca a colmarlo.
Elemento cardine è il pensiero computazionale
Pensiero computazionale
http://programmailfuturo.it/perche/cose-il-pensiero-computazionale
https://youtu.be/vNaNxwATJqY
VIDEO
Il Pensiero Computazionale
Procedura attuata da un esecutore, che opera nell'ambito di un contesto
prefissato, per raggiungere degli obiettivi assegnati.
Il pensiero computazionale è un processo di risoluzione dei problemi
attraverso:
• Analisi, organizzazione e rappresentazione dei dati
• Decomposizione del problema e composizione delle soluzioni
• Definizione procedure algoritmiche in funzione del risolutore
• Test, verifica e valutazione
• Astrazione ed approssimazione
Il messaggio ‘base’ (visione tecnologica)
Non essere soltanto un consumatore di tecnologia, crea la tecnologia:
• Non comprare semplicemente un nuovo videogioco, fanne uno
• Non scaricare l'ultima applicazione e basta. Contribuisci a progettarla
• Non usare il tuo dispositivo solo per giocarci, programmalo.
Soggetto passivo => fruitore attivo
Vale per insegnanti, ragazzi e genitori
(da questo punto di vista siamo sullo stesso livello)
Il messaggio ‘base’ (visione culturale)
Il pensiero computazionale è uno strumento intellettuale utile per tutti i
cittadini di domani: insegnanti, giuristi, medici, ingegneri, agricoltori,
operai,…
Soggetto passivo => Soggetto consapevole, ‘alfabetizzato’
Quasi tutti i dispositivi che usiamo ogni giorno, dalla lavatrice al
telecomando, dal telefono all’automobile, dalle scarpe da running alle
etichette dei nostri abiti sono dispositivi programmati e programmabili e
spesso nemmeno ce ne rendiamo conto.
Nei prossimi 10 anni in Europa si stima servano 800.000 nuovi lavoratori
formati al ‘digitale’ …. anche solo per avere una speranza di lavoro per i
nostri figli.
http://www.techeconomy.it/2016/03/16/contro-il-coding/
L’informatica non è (solo) il codice, ma la comprensione del problema che
ne rende possibile la scrittura.
Prima di arrivare al codice un problema va
compreso,
analizzato,
formalizzato, spesso con tecniche che richiedono anni di studio; dopodiché
occorre cercare come quel problema è già stato risolto da altri, e se parte della
loro soluzione va bene anche per noi, perché non esistono problemi nuovi e
perché nel software copiare è cosa buona.
2 fondamenti ‘inderogabili’
INGLESE
• I linguaggi di programmazione sono stai ideati in inglese
• Sono composti quasi esclusivamente da parole inglesi
• Gli strumenti di sviluppo sono in inglese (anche se vi sono le versioni
localizzate)
• L’inglese è la lingua usata per dialogare tra programmatori
• La letteratura tecnica è esclusivamente in inglese (anche se vi sono le
traduzioni)
PC
Ci sono programmi e lezioni da fare senza PC ma la resa è nettamente
inferiore:
Vedere muoversi un ‘gattino’ sullo schermo perché ho indicato il giusto
comando è tutt’altra cosa che scrivere qualcosa su un foglio…le lezioni
tradizionali possono essere propedeutiche, nulla di più.
I concetti fondamentali della
programmazione
• Cos’è un programma
• Come si scrive un programma (flowchart)
• Operatori booleani – Algebra di Boole
• Sequenza di istruzioni
• Programmazione condizionale
• Programmazione iterative
• Ripetizione
• Ciclo
• Eventi e gestione degli eventi
• Divide et impera
• Funzioni
• Funzioni con parametri
• Variabili
Un programma è una sequenza PRECISA di istruzioni per un ESECUTORE
che le esegue alla lettera anche se sono evidentemente sbagliate.
Istruzione =
• operazione “elementare”
• sequenza di operazioni “elementari”
I dispositivi funzionano seguendo un programma ovvero una lista di
istruzioni che è stato scritta per svolgere un particolare compito.
Fanno esattamente quello che le istruzioni dicono, compreso quando le
istruzioni non hanno alcun senso (differentemente dagli esseri umani, un
dispositivo esegue le istruzioni alla lettera anche queste sono
evidentemente errate, magari ridicole)!
I dispositivi sono solamente dei precisi esecutori.
I programmi sono scritti con linguaggi che sono stati creati
appositamente, con un insieme limitato di istruzioni, per ‘dire’ al
dispositivo cosa fare.
Ci sono decine di linguaggi di programmazione: Assembler, Pascal, BASIC,
C e C++, C#, Java, PHP, Javascript, HTML…
Alcuni linguaggi sono più adatti ad alcuni compiti rispetto ad altri.
Come si scrive un programma ?
• Si pensa a cosa si vuole che il dispositivo faccia
• Si divide l’operazione in operazioni più semplici (procedure)…
• …si continua a ‘spezzare’ l’operazione (o la procedura) fino ad arrivare
alle istruzioni ‘semplici’ del linguaggio che si sta usando
Flow Chart
Flow = flusso
Chart = disegno, schema
Diagramma di flusso
E’ un modo di rappresentare le
istruzioni e le procedure
descrivendo in forma grafica un
programma
Boole, chi era costui ?
George Boole (1815 - 1864) matematico e logico inglese.
E’ considerato il fondatore della logica matematica.
Autodidatta, studiò greco, latino, francese, tedesco, italiano e, fin da
giovane, matematica sui testi di Laplace e Lagrange.
Morì a 49 anni per una grave polmonite causata da un banale
raffreddore.
L'opera maggiore di Boole è stata la base degli studi sui circuiti
elettronici e sulla commutazione, e ha costituito un passo fondamentale
verso la concezione dei computer.
I "valori Booleani" sono basilari ed utilizzati molto frequentemente in
informatica.
Valori ed Operatori Booleani
Valori booleani
• 1 / TRUE / ON / YES / HIGH
• 0 / FALSE / OFF / NO / LOW
Operatori booleani
• NOT (invertitore – inverte il valore 0/1)
• AND (prodotto logico – 1 se tutti i valori sono 1)
• OR (somma logica – 1 se almeno uno dei valori è 1)
• XOR (operatore di disparità – 1 se il numero di operandi ad 1 è dispari)
• NAND, NOR, XNOR
A B NOT A A AND B A OR B A XOR B
0 0 1 0 0 0
0 1 1 0 1 1
1 0 0 0 1 1
1 1 0 1 1 0
Sequenza di istruzioni
Un programma segue la logica procedurale cioè avendo delle operazioni da
fare le esegue una dopo l’altra in sequenza dalla prima all’ultima.
Vedremo nelle prossime slide i costrutti più usati nei linguaggi di
programmazione per “incanalare” il flusso del nostro programma.
Questi elementi sono chiamati ISTRUZIONI CONDIZIONALI perché
permettono di eseguire del codice a seconda che una condizione sia vera o
falsa (ecco perché abbiamo parlato di Boole!)
Alcuni esempi:
Labirinto
https://studio.code.org/s/course2/stage/3/puzzle/2
https://studio.code.org/s/course2/stage/3/puzzle/4
https://studio.code.org/s/course2/stage/3/puzzle/6
Artista
https://studio.code.org/s/course2/stage/4/puzzle/4
Programmazione condizionale
IF ( condizione ) THEN istruzione
IF ( condizione ) THEN istruzione ELSE istruzione
• se la condizione è TRUE viene eseguita
l’istruzione subito seguente (THEN);
• nel secondo caso, invece, se la condizione è TRUE
si esegue l’istruzione seguente, altrimenti si
esegue l’istruzione subito dopo la parola
chiave ELSE.
A = 50;
“Inserisci un numero tra 0 e 100″;
B = -numero inserito da tastiera-
IF (B < A) THEN { “Numero < 50” }
ELSE {
IF (B > A) THEN { “Numero > 50” }
ELSE { “Numero = 50” }
}
Alcuni esempi:
alterazione della sequenza lineare
https://studio.code.org/s/course2/stage/13/puzzle/3
https://studio.code.org/s/course2/stage/13/puzzle/5
https://studio.code.org/s/course2/stage/13/puzzle/9
https://studio.code.org/s/course2/stage/13/puzzle/10
https://studio.code.org/s/course3/stage/7/puzzle/5
ramificazioni in alternativa (se-altrimenti)
https://studio.code.org/s/course3/stage/7/puzzle/4
ramificazioni multiple (se – altrimenti / se – altrimenti)
https://studio.code.org/s/course3/stage/7/puzzle/6
Programmazione iterativa
Il concetto fondamentale è quello di eseguire un’istruzione (o una serie di
istruzioni) continuamente, fino a quando non si verifica una condizione che
fa terminare tale esecuzione.
Esempio: stampare a video per mille volte la stessa frase;
la programmazione procedurale suggerisce di scrivere mille volte il codice,
mentre quella iterativa permette di scrivere il comando una ed una sola
volta e poi ripeterlo per mille volte, dopo le quali una struttura di controllo
adeguata (ad esempio un contatore da uno a mille) termina l’esecuzione
del ciclo.
WHILE ( condizione ) istruzione
Con questa istruzione viene prima valutata la condizione, se l’espressione
risulta vera viene eseguita l’istruzione all’interno del WHILE e il WHILE
viene ripetuto, altrimenti si esce dal ciclo del WHILE e si procede con il
resto del programma.
DO istruzione WHILE ( condizione )
Prima di tutto viene eseguita l’istruzione racchiusa tra DO e WHILE
(quindi la si esegue almeno una volta), poi si verifica il risultato della
condizione, se è vero si riesegue il DO, altrimenti si continua con
l’esecuzione del resto del programma.
FOR ( inizializzazione ; condizione ; incremento )
istruzione
Il FOR inizializza una variabile, pone una condizione (che deve essere vera
o falsa) e poi modifica (incrementa o decrementa) la variabile iniziale.
Il potere del FOR è appunto quello di poter modificare la variabile che
serve per verificare la condizione iniziale, la quale decide se eseguire o
meno l’istruzione.
FOR (A = 1; A <= 6; A = A + 1) {
DISEGNA UN TRATTO LUNGO 10
RUOTA DI 60 GRADI
}
A = 1;
DO {
DISEGNA UN TRATTO LUNGO 10
RUOTA DI 60 GRADI
A = A + 1;
} WHILE (A <= 6);
Alcuni esempi:
https://studio.code.org/s/course2/stage/17/puzzle/8
https://studio.code.org/c/105686966
https://studio.code.org/s/course3/stage/12/puzzle/4
https://studio.code.org/s/course3/stage/12/puzzle/8
https://studio.code.org/s/course3/stage/8/puzzle/3
https://studio.code.org/s/course3/stage/8/puzzle/5
https://studio.code.org/s/course3/stage/8/puzzle/8
con annidamento di cicli
https://studio.code.org/s/course2/stage/19/puzzle/5
https://studio.code.org/s/course2/stage/19/puzzle/11
https://studio.code.org/s/course3/stage/13/puzzle/6
https://studio.code.org/s/course3/stage/13/puzzle/7
https://studio.code.org/s/course3/stage/13/puzzle/8
Eventi e loro gestione
La programmazione ad eventi è un paradigma di programmazione.
In un programma tradizionale l'esecuzione delle istruzioni segue percorsi
fissi, che si ramificano soltanto in punti ben determinati predefiniti
dal programmatore. Nei programmi scritti utilizzando la tecnica ad eventi il
flusso del programma è determinato dal verificarsi di eventi esterni.
EVENTO: permette al programma di reagire durante la sua esecuzione ad
azioni dell’utente o ad altri avvenimenti rilevanti. E’ la cosa che vogliamo
controllare
GESTORE DI EVENTO: sequenza di istruzioni che vengono eseguite solo
quando l’evento si verifica
Alcuni esempi:
https://studio.code.org/s/course2/stage/16/puzzle/4
https://studio.code.org/s/course2/stage/16/puzzle/7
https://studio.code.org/c/74536128
Divide et impera
Divide et impera (latino) = «dividi e domina»
Algoritmi che ‘dividono’ ricorsivamente un problema in due o più sotto-
problemi sino a che non diventano di semplice risoluzione, quindi, si
combinano le soluzioni per ottenere quella del problema dato.
Quando sviluppiamo un programma capita che alcune operazioni debbano
essere ripetute più di una volta.
Scrivere tutte le volte le stesse operazioni risulterebbe noioso ed inutile,
per questo abbiamo il concetto di FUNZIONE che è un programma (o
modulo) che può essere riusato più volte e in differenti contesti.
Alcuni esempi:
https://studio.code.org/s/course3/stage/5/puzzle/2
https://studio.code.org/s/course3/stage/5/puzzle/4
https://studio.code.org/s/course3/stage/5/puzzle/5
https://studio.code.org/s/course3/stage/5/puzzle/7
Variabili
Per tener traccia durante l’esecuzione del valore di elementi rilevanti per la
risoluzione del problema si usano le variabili.
‘Contenitori’ nei quali si memorizzano valori (interi, stringa, ecc.) per
utilizzarli durante l’esecuzione del programma.
https://youtu.be/_MkLbhIuvAM
Alcuni esempi:
https://studio.code.org/s/course4/stage/6/puzzle/2
https://studio.code.org/s/course4/stage/6/puzzle/3
https://studio.code.org/s/course4/stage/6/puzzle/4
https://studio.code.org/s/course4/stage/6/puzzle/7
https://studio.code.org/s/course4/stage/6/puzzle/10
https://studio.code.org/s/course4/stage/6/puzzle/12
https://studio.code.org/s/course4/stage/9/puzzle/3
https://studio.code.org/s/course4/stage/9/puzzle/4
https://studio.code.org/s/course4/stage/9/puzzle/7
DEBUGGING
È importante che i programmi siano corretti.
Un qualsiasi errore può causare molti problemi.
Provate ad immaginare cosa succederebbe per un bug nel programma
che controlla il lancio di un missile, nel programma di gestione di una
centrale elettrica o in quello che accende i segnali di controllo per i treni!
Ma anche solo se il telecomando della TV non imposta il canale richiesto.
Gli errori dei programmi sono definiti “bug” cioè insetti in onore di un
“bug” che fu rimosso da un relais elettromagnetico di uno dei primi
computer all'inizio degli anni 1940.
L’insetto aveva causato il malfunzionamento del computer, e ancora oggi
la ricerca degli errori nei programmi viene chiamata “debugging” cioè
disinfestazione.
Alcuni esempi:
correzione degli errori:
https://studio.code.org/s/course2/stage/11/puzzle/4
https://studio.code.org/s/course2/stage/11/puzzle/5
https://studio.code.org/s/course2/stage/11/puzzle/6
https://studio.code.org/s/course2/stage/11/puzzle/12
Quali strumenti usare ?
Riferimenti WEB
• Scratch
https://scratch.mit.edu
http://www.coderschoolitalia.it/?page_id=45
• Programma Il Futuro
http://www.programmailfuturo.it
• Code.org
https://code.org/
• European Multiple MOOC (Massive Online Open Course)
http://platform.europeanmoocs.eu/course_coding_in_your_classroom_now
Classe virtuale coordinata dal prof. Alessandro Bogliolo dell’Università di
Urbino
Pensiero computazionale, cos'è e come formare gli studenti
Pensiero computazionale, cos'è e come formare gli studenti

Weitere ähnliche Inhalte

Was ist angesagt?

Programma il Futuro (presentazione a JOB&Orienta)
Programma il Futuro (presentazione a JOB&Orienta)Programma il Futuro (presentazione a JOB&Orienta)
Programma il Futuro (presentazione a JOB&Orienta)Enrico Nardelli
 
Introduzione al Coding e Pensiero computazionale
Introduzione al Coding e Pensiero computazionaleIntroduzione al Coding e Pensiero computazionale
Introduzione al Coding e Pensiero computazionaleMichele Balducci
 
Guida rapida DidUP- Prof. Maffucci Michele
Guida rapida DidUP- Prof. Maffucci MicheleGuida rapida DidUP- Prof. Maffucci Michele
Guida rapida DidUP- Prof. Maffucci MicheleMichele Maffucci
 
Didattica della robotica con lego nxt 2
Didattica della robotica con lego nxt 2Didattica della robotica con lego nxt 2
Didattica della robotica con lego nxt 2Michele Maffucci
 
Corso di scratch - lezione 2
Corso di scratch - lezione 2Corso di scratch - lezione 2
Corso di scratch - lezione 2Michele Maffucci
 
Starter kit del docente hi tech - v03
Starter kit del docente hi tech - v03Starter kit del docente hi tech - v03
Starter kit del docente hi tech - v03Michele Maffucci
 
Il pensiero Computazionale come risorsa trasversale
Il pensiero Computazionale come risorsa trasversaleIl pensiero Computazionale come risorsa trasversale
Il pensiero Computazionale come risorsa trasversaleLaura De Biaggi
 
Didattica creativa, coding e tecnologie
Didattica creativa, coding e tecnologieDidattica creativa, coding e tecnologie
Didattica creativa, coding e tecnologiecaterina moscetti
 
Il social learning con edmodo - versione 3
Il social learning con edmodo - versione 3Il social learning con edmodo - versione 3
Il social learning con edmodo - versione 3Michele Maffucci
 
Micro corso di scratch - per incominciare ad imparare a programmare
Micro corso di scratch - per incominciare ad imparare a programmareMicro corso di scratch - per incominciare ad imparare a programmare
Micro corso di scratch - per incominciare ad imparare a programmareMichele Maffucci
 
Pensiero computazionale
Pensiero computazionalePensiero computazionale
Pensiero computazionaleMaria Cimino
 
Competenze computazionali e robotiche
Competenze computazionali e roboticheCompetenze computazionali e robotiche
Competenze computazionali e roboticheLaura Antichi
 
L'alfabeto di Scratch - lezione 2
L'alfabeto di Scratch - lezione 2L'alfabeto di Scratch - lezione 2
L'alfabeto di Scratch - lezione 2Michele Maffucci
 
Didattica e tecnologie: il coding
Didattica e tecnologie: il codingDidattica e tecnologie: il coding
Didattica e tecnologie: il codingAlessandri Giuseppe
 

Was ist angesagt? (20)

Programma il Futuro (presentazione a JOB&Orienta)
Programma il Futuro (presentazione a JOB&Orienta)Programma il Futuro (presentazione a JOB&Orienta)
Programma il Futuro (presentazione a JOB&Orienta)
 
Introduzione al Coding e Pensiero computazionale
Introduzione al Coding e Pensiero computazionaleIntroduzione al Coding e Pensiero computazionale
Introduzione al Coding e Pensiero computazionale
 
Campus La Camilla - Progetto Scratch
Campus La Camilla - Progetto Scratch Campus La Camilla - Progetto Scratch
Campus La Camilla - Progetto Scratch
 
Guida rapida DidUP- Prof. Maffucci Michele
Guida rapida DidUP- Prof. Maffucci MicheleGuida rapida DidUP- Prof. Maffucci Michele
Guida rapida DidUP- Prof. Maffucci Michele
 
Didattica della robotica con lego nxt 2
Didattica della robotica con lego nxt 2Didattica della robotica con lego nxt 2
Didattica della robotica con lego nxt 2
 
Corso di scratch - lezione 2
Corso di scratch - lezione 2Corso di scratch - lezione 2
Corso di scratch - lezione 2
 
Starter kit del docente hi tech - v03
Starter kit del docente hi tech - v03Starter kit del docente hi tech - v03
Starter kit del docente hi tech - v03
 
Il pensiero Computazionale come risorsa trasversale
Il pensiero Computazionale come risorsa trasversaleIl pensiero Computazionale come risorsa trasversale
Il pensiero Computazionale come risorsa trasversale
 
Didattica creativa, coding e tecnologie
Didattica creativa, coding e tecnologieDidattica creativa, coding e tecnologie
Didattica creativa, coding e tecnologie
 
Coding
CodingCoding
Coding
 
Scratch 2.0 modulo didattico
Scratch 2.0   modulo didatticoScratch 2.0   modulo didattico
Scratch 2.0 modulo didattico
 
Introduzione Al Corso
Introduzione Al CorsoIntroduzione Al Corso
Introduzione Al Corso
 
Il social learning con edmodo - versione 3
Il social learning con edmodo - versione 3Il social learning con edmodo - versione 3
Il social learning con edmodo - versione 3
 
Introduzione al coding
Introduzione al coding Introduzione al coding
Introduzione al coding
 
Micro corso di scratch - per incominciare ad imparare a programmare
Micro corso di scratch - per incominciare ad imparare a programmareMicro corso di scratch - per incominciare ad imparare a programmare
Micro corso di scratch - per incominciare ad imparare a programmare
 
Pensiero computazionale
Pensiero computazionalePensiero computazionale
Pensiero computazionale
 
Competenze computazionali e robotiche
Competenze computazionali e roboticheCompetenze computazionali e robotiche
Competenze computazionali e robotiche
 
L'alfabeto di Scratch - lezione 2
L'alfabeto di Scratch - lezione 2L'alfabeto di Scratch - lezione 2
L'alfabeto di Scratch - lezione 2
 
Campus La Camilla Corsi Autunno 2015
Campus La Camilla Corsi Autunno 2015Campus La Camilla Corsi Autunno 2015
Campus La Camilla Corsi Autunno 2015
 
Didattica e tecnologie: il coding
Didattica e tecnologie: il codingDidattica e tecnologie: il coding
Didattica e tecnologie: il coding
 

Andere mochten auch

Elementi base del pensiero computazionale e SCRATCH
Elementi base del pensiero computazionale e SCRATCHElementi base del pensiero computazionale e SCRATCH
Elementi base del pensiero computazionale e SCRATCHVirginia Ruggeri
 
Didattica PER il coding. Didattica, pensiero computazionale, corporeità
Didattica PER il coding. Didattica, pensiero computazionale, corporeitàDidattica PER il coding. Didattica, pensiero computazionale, corporeità
Didattica PER il coding. Didattica, pensiero computazionale, corporeitàAlessandri Giuseppe
 
Il pensiero computazionale - Che cosa è - Perché usarlo a scuola.
Il pensiero computazionale - Che cosa è - Perché usarlo a scuola.Il pensiero computazionale - Che cosa è - Perché usarlo a scuola.
Il pensiero computazionale - Che cosa è - Perché usarlo a scuola.fmann
 
Introduzione al "Pensiero computazionale"
Introduzione al "Pensiero computazionale"Introduzione al "Pensiero computazionale"
Introduzione al "Pensiero computazionale"Francesco Passantino
 
Corso di scratch - lezione 1
Corso di scratch - lezione 1Corso di scratch - lezione 1
Corso di scratch - lezione 1Michele Maffucci
 
Coding, perchè no? più facile di quanto credi
Coding, perchè no? più facile di quanto crediCoding, perchè no? più facile di quanto credi
Coding, perchè no? più facile di quanto crediFlavia Giannoli
 
Copyright e licenze open nella didattica (Lecce, marzo 2017)
Copyright e licenze open nella didattica (Lecce, marzo 2017)Copyright e licenze open nella didattica (Lecce, marzo 2017)
Copyright e licenze open nella didattica (Lecce, marzo 2017)Simone Aliprandi
 
Arduino lezione 01 - a.s 2010-2011
Arduino lezione 01 - a.s 2010-2011Arduino lezione 01 - a.s 2010-2011
Arduino lezione 01 - a.s 2010-2011Michele Maffucci
 
Programma corso avanzato_lingue straniere PNSD 2015
Programma corso avanzato_lingue straniere PNSD 2015Programma corso avanzato_lingue straniere PNSD 2015
Programma corso avanzato_lingue straniere PNSD 2015Ministry of Public Education
 
Gemma Facheris intervista Seymour Papert
Gemma Facheris intervista Seymour PapertGemma Facheris intervista Seymour Papert
Gemma Facheris intervista Seymour PapertGIOVANNI LARICCIA
 
Attività Di Apprendimento Con Moodle
Attività Di Apprendimento Con MoodleAttività Di Apprendimento Con Moodle
Attività Di Apprendimento Con MoodleGiovanni Marconato
 
Insegnare e progettare per competenze
Insegnare e progettare per competenzeInsegnare e progettare per competenze
Insegnare e progettare per competenzeMaria pia Dell'Erba
 
Nuove tecnologie e competenze
Nuove tecnologie e competenzeNuove tecnologie e competenze
Nuove tecnologie e competenzePier Giuseppe
 
Slides sergio vasarri seminario dpa_29gen15
Slides sergio vasarri seminario dpa_29gen15Slides sergio vasarri seminario dpa_29gen15
Slides sergio vasarri seminario dpa_29gen15FormezPA - Capacity SUD
 
Ci 350 critical thinking power point
Ci 350 critical thinking power pointCi 350 critical thinking power point
Ci 350 critical thinking power pointrickyatoms
 
Critical Thinking a Power Point for CI350
Critical Thinking a Power Point for CI350Critical Thinking a Power Point for CI350
Critical Thinking a Power Point for CI350Angel Pauley
 

Andere mochten auch (20)

Elementi base del pensiero computazionale e SCRATCH
Elementi base del pensiero computazionale e SCRATCHElementi base del pensiero computazionale e SCRATCH
Elementi base del pensiero computazionale e SCRATCH
 
Didattica PER il coding. Didattica, pensiero computazionale, corporeità
Didattica PER il coding. Didattica, pensiero computazionale, corporeitàDidattica PER il coding. Didattica, pensiero computazionale, corporeità
Didattica PER il coding. Didattica, pensiero computazionale, corporeità
 
Il pensiero computazionale - Che cosa è - Perché usarlo a scuola.
Il pensiero computazionale - Che cosa è - Perché usarlo a scuola.Il pensiero computazionale - Che cosa è - Perché usarlo a scuola.
Il pensiero computazionale - Che cosa è - Perché usarlo a scuola.
 
Introduzione al "Pensiero computazionale"
Introduzione al "Pensiero computazionale"Introduzione al "Pensiero computazionale"
Introduzione al "Pensiero computazionale"
 
Il coding
Il codingIl coding
Il coding
 
Corso di scratch - lezione 1
Corso di scratch - lezione 1Corso di scratch - lezione 1
Corso di scratch - lezione 1
 
Internet & sicurezza
Internet & sicurezzaInternet & sicurezza
Internet & sicurezza
 
dietro_il_coding_2
dietro_il_coding_2dietro_il_coding_2
dietro_il_coding_2
 
Coding, perchè no? più facile di quanto credi
Coding, perchè no? più facile di quanto crediCoding, perchè no? più facile di quanto credi
Coding, perchè no? più facile di quanto credi
 
Copyright e licenze open nella didattica (Lecce, marzo 2017)
Copyright e licenze open nella didattica (Lecce, marzo 2017)Copyright e licenze open nella didattica (Lecce, marzo 2017)
Copyright e licenze open nella didattica (Lecce, marzo 2017)
 
Arduino lezione 01 - a.s 2010-2011
Arduino lezione 01 - a.s 2010-2011Arduino lezione 01 - a.s 2010-2011
Arduino lezione 01 - a.s 2010-2011
 
Programma corso avanzato_lingue straniere PNSD 2015
Programma corso avanzato_lingue straniere PNSD 2015Programma corso avanzato_lingue straniere PNSD 2015
Programma corso avanzato_lingue straniere PNSD 2015
 
Robotica ludica e coding
Robotica ludica e codingRobotica ludica e coding
Robotica ludica e coding
 
Gemma Facheris intervista Seymour Papert
Gemma Facheris intervista Seymour PapertGemma Facheris intervista Seymour Papert
Gemma Facheris intervista Seymour Papert
 
Attività Di Apprendimento Con Moodle
Attività Di Apprendimento Con MoodleAttività Di Apprendimento Con Moodle
Attività Di Apprendimento Con Moodle
 
Insegnare e progettare per competenze
Insegnare e progettare per competenzeInsegnare e progettare per competenze
Insegnare e progettare per competenze
 
Nuove tecnologie e competenze
Nuove tecnologie e competenzeNuove tecnologie e competenze
Nuove tecnologie e competenze
 
Slides sergio vasarri seminario dpa_29gen15
Slides sergio vasarri seminario dpa_29gen15Slides sergio vasarri seminario dpa_29gen15
Slides sergio vasarri seminario dpa_29gen15
 
Ci 350 critical thinking power point
Ci 350 critical thinking power pointCi 350 critical thinking power point
Ci 350 critical thinking power point
 
Critical Thinking a Power Point for CI350
Critical Thinking a Power Point for CI350Critical Thinking a Power Point for CI350
Critical Thinking a Power Point for CI350
 

Ähnlich wie Pensiero computazionale, cos'è e come formare gli studenti

Ecdl - Modulo 1 - Concetti di base dell'ICT
Ecdl - Modulo 1 - Concetti di base dell'ICTEcdl - Modulo 1 - Concetti di base dell'ICT
Ecdl - Modulo 1 - Concetti di base dell'ICTNino Lopez
 
Corso team innovazione scuola dell'Infanzia
Corso team innovazione scuola dell'InfanziaCorso team innovazione scuola dell'Infanzia
Corso team innovazione scuola dell'Infanziapalmadellerba
 
Corso di Concetti base di programmazione
Corso di Concetti base di programmazioneCorso di Concetti base di programmazione
Corso di Concetti base di programmazioneSalvatore Cordiano
 
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Commit University
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaDario Rusignuolo
 
festival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduinofestival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduinofestival ICT 2016
 
Coding class da scratch a python
Coding class  da scratch a pythonCoding class  da scratch a python
Coding class da scratch a pythonEnrico La Sala
 
Guida al computer - Lezione 1 - Il computer
Guida al computer  - Lezione 1 - Il computerGuida al computer  - Lezione 1 - Il computer
Guida al computer - Lezione 1 - Il computercaioturtle
 
Festivalmente: Getting Things done
Festivalmente: Getting Things doneFestivalmente: Getting Things done
Festivalmente: Getting Things doneVincenzo Garambone
 
Laboratorio di Informatica - Lezione 3 (Classi V)
Laboratorio di Informatica  - Lezione 3 (Classi V)Laboratorio di Informatica  - Lezione 3 (Classi V)
Laboratorio di Informatica - Lezione 3 (Classi V)informaticaOriani
 
corso d'aggiornamento sulla LIM
corso d'aggiornamento sulla LIMcorso d'aggiornamento sulla LIM
corso d'aggiornamento sulla LIMziobio
 
Design è come funziona: introduzione allo sviluppo per dispositivi mobili
Design è come funziona: introduzione allo sviluppo per dispositivi mobiliDesign è come funziona: introduzione allo sviluppo per dispositivi mobili
Design è come funziona: introduzione allo sviluppo per dispositivi mobiliDavide Orlando
 
Corso Arduino Base - Basi Pratiche con Arduino Genuino
Corso Arduino Base - Basi Pratiche con Arduino GenuinoCorso Arduino Base - Basi Pratiche con Arduino Genuino
Corso Arduino Base - Basi Pratiche con Arduino GenuinoMauro Alfieri
 

Ähnlich wie Pensiero computazionale, cos'è e come formare gli studenti (20)

Corso Java - Introduzione
Corso Java - IntroduzioneCorso Java - Introduzione
Corso Java - Introduzione
 
Biassono milo
Biassono miloBiassono milo
Biassono milo
 
Biassono milo
Biassono miloBiassono milo
Biassono milo
 
Ecdl - Modulo 1 - Concetti di base dell'ICT
Ecdl - Modulo 1 - Concetti di base dell'ICTEcdl - Modulo 1 - Concetti di base dell'ICT
Ecdl - Modulo 1 - Concetti di base dell'ICT
 
Corso team innovazione scuola dell'Infanzia
Corso team innovazione scuola dell'InfanziaCorso team innovazione scuola dell'Infanzia
Corso team innovazione scuola dell'Infanzia
 
Corso di Concetti base di programmazione
Corso di Concetti base di programmazioneCorso di Concetti base di programmazione
Corso di Concetti base di programmazione
 
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
 
Manuale python
Manuale pythonManuale python
Manuale python
 
ios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - itaios 8 - parte 1 - intro - ita
ios 8 - parte 1 - intro - ita
 
festival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduinofestival ICT 2013: Vivere open source dalle applicazioni ad arduino
festival ICT 2013: Vivere open source dalle applicazioni ad arduino
 
Coding class da scratch a python
Coding class  da scratch a pythonCoding class  da scratch a python
Coding class da scratch a python
 
Guida al computer - Lezione 1 - Il computer
Guida al computer  - Lezione 1 - Il computerGuida al computer  - Lezione 1 - Il computer
Guida al computer - Lezione 1 - Il computer
 
Festivalmente: Getting Things done
Festivalmente: Getting Things doneFestivalmente: Getting Things done
Festivalmente: Getting Things done
 
A.I. for business
A.I. for businessA.I. for business
A.I. for business
 
Laboratorio di Informatica - Lezione 3 (Classi V)
Laboratorio di Informatica  - Lezione 3 (Classi V)Laboratorio di Informatica  - Lezione 3 (Classi V)
Laboratorio di Informatica - Lezione 3 (Classi V)
 
Lab psychopy
Lab psychopyLab psychopy
Lab psychopy
 
corso d'aggiornamento sulla LIM
corso d'aggiornamento sulla LIMcorso d'aggiornamento sulla LIM
corso d'aggiornamento sulla LIM
 
Design è come funziona: introduzione allo sviluppo per dispositivi mobili
Design è come funziona: introduzione allo sviluppo per dispositivi mobiliDesign è come funziona: introduzione allo sviluppo per dispositivi mobili
Design è come funziona: introduzione allo sviluppo per dispositivi mobili
 
Corso Arduino Base - Basi Pratiche con Arduino Genuino
Corso Arduino Base - Basi Pratiche con Arduino GenuinoCorso Arduino Base - Basi Pratiche con Arduino Genuino
Corso Arduino Base - Basi Pratiche con Arduino Genuino
 
Linux a scuola
Linux a scuolaLinux a scuola
Linux a scuola
 

Mehr von Domenico Barile

Trasformare i documenti da cartacei a digitali, un costo o un'opportunità ?
Trasformare i documenti da cartacei a digitali, un costo o un'opportunità ?Trasformare i documenti da cartacei a digitali, un costo o un'opportunità ?
Trasformare i documenti da cartacei a digitali, un costo o un'opportunità ?Domenico Barile
 
Serate di alfbetizzazione digitale - Terzo incontro 11 Maggio 2015
Serate di alfbetizzazione digitale - Terzo incontro 11 Maggio 2015Serate di alfbetizzazione digitale - Terzo incontro 11 Maggio 2015
Serate di alfbetizzazione digitale - Terzo incontro 11 Maggio 2015Domenico Barile
 
Serate di alfbetizzazione digitale - Primo incontro 27 Aprile 2015
Serate di alfbetizzazione digitale - Primo incontro 27 Aprile 2015Serate di alfbetizzazione digitale - Primo incontro 27 Aprile 2015
Serate di alfbetizzazione digitale - Primo incontro 27 Aprile 2015Domenico Barile
 
DigitalDay Verona 13 Aprile 2015 - Evento Ordine Ingegneri VR
DigitalDay Verona 13 Aprile 2015 - Evento Ordine Ingegneri VRDigitalDay Verona 13 Aprile 2015 - Evento Ordine Ingegneri VR
DigitalDay Verona 13 Aprile 2015 - Evento Ordine Ingegneri VRDomenico Barile
 
DigitalDay Bovolone 13 Marzo 2015
DigitalDay Bovolone 13 Marzo 2015DigitalDay Bovolone 13 Marzo 2015
DigitalDay Bovolone 13 Marzo 2015Domenico Barile
 
DigitalDay Verona 9 Marzo 2015 - Evento CCIAA VR
DigitalDay Verona 9 Marzo 2015 - Evento CCIAA VRDigitalDay Verona 9 Marzo 2015 - Evento CCIAA VR
DigitalDay Verona 9 Marzo 2015 - Evento CCIAA VRDomenico Barile
 

Mehr von Domenico Barile (6)

Trasformare i documenti da cartacei a digitali, un costo o un'opportunità ?
Trasformare i documenti da cartacei a digitali, un costo o un'opportunità ?Trasformare i documenti da cartacei a digitali, un costo o un'opportunità ?
Trasformare i documenti da cartacei a digitali, un costo o un'opportunità ?
 
Serate di alfbetizzazione digitale - Terzo incontro 11 Maggio 2015
Serate di alfbetizzazione digitale - Terzo incontro 11 Maggio 2015Serate di alfbetizzazione digitale - Terzo incontro 11 Maggio 2015
Serate di alfbetizzazione digitale - Terzo incontro 11 Maggio 2015
 
Serate di alfbetizzazione digitale - Primo incontro 27 Aprile 2015
Serate di alfbetizzazione digitale - Primo incontro 27 Aprile 2015Serate di alfbetizzazione digitale - Primo incontro 27 Aprile 2015
Serate di alfbetizzazione digitale - Primo incontro 27 Aprile 2015
 
DigitalDay Verona 13 Aprile 2015 - Evento Ordine Ingegneri VR
DigitalDay Verona 13 Aprile 2015 - Evento Ordine Ingegneri VRDigitalDay Verona 13 Aprile 2015 - Evento Ordine Ingegneri VR
DigitalDay Verona 13 Aprile 2015 - Evento Ordine Ingegneri VR
 
DigitalDay Bovolone 13 Marzo 2015
DigitalDay Bovolone 13 Marzo 2015DigitalDay Bovolone 13 Marzo 2015
DigitalDay Bovolone 13 Marzo 2015
 
DigitalDay Verona 9 Marzo 2015 - Evento CCIAA VR
DigitalDay Verona 9 Marzo 2015 - Evento CCIAA VRDigitalDay Verona 9 Marzo 2015 - Evento CCIAA VR
DigitalDay Verona 9 Marzo 2015 - Evento CCIAA VR
 

Kürzlich hochgeladen

Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaPierLuigi Albini
 
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaRafael Figueredo
 
Corso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativoCorso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativovaleriodinoia35
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaStefano Lariccia
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiorevaleriodinoia35
 
lezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldilezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldivaleriodinoia35
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieVincenzoPantalena1
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaStefano Lariccia
 

Kürzlich hochgeladen (8)

Ticonzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza culturaTiconzero news 148.pdf aprile 2024 Terza cultura
Ticonzero news 148.pdf aprile 2024 Terza cultura
 
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla CresimaIL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
IL CHIAMATO ALLA CONVERSIONE - catechesi per candidati alla Cresima
 
Corso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativoCorso di digitalizzazione e reti per segretario amministrativo
Corso di digitalizzazione e reti per segretario amministrativo
 
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
 
Esperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superioreEsperimenti_laboratorio di fisica per la scuola superiore
Esperimenti_laboratorio di fisica per la scuola superiore
 
lezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldilezione di fisica_I moti nel piano_Amaldi
lezione di fisica_I moti nel piano_Amaldi
 
La seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medieLa seconda guerra mondiale per licei e scuole medie
La seconda guerra mondiale per licei e scuole medie
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
 

Pensiero computazionale, cos'è e come formare gli studenti

  • 1. PENSIERO COMPUTAZIONALE cos’è e come formare gli studenti
  • 3. Chi sono • Ingegnere Informatico, libero professionista • Dematerializzazione, non materializzazione (generazione digitale dei documenti) • Conservazione digitale • Fatturazione elettronica • PDF, PDF-A • Relatore al 3rd International PDF-A Conference di Berlino- 2009 • Relatore al 4th International PDF-A Conference di Roma - 2010 • Firma digitale, firma elettronica avanzata (firma grafometrica) • Auditor/Lead Auditor Sistemi di Gestione della Sicurezza delle Informazioni ISO/IEC 27001:2013 • Appassionato di ‘digitale’ fin da ragazzino • Papà di un ragazzo di 11 anni • Digital Champion per Oppeano (VR) nel 2015 • Fondatore e Mentor CoderDojoOppeano (VR) • Socio fondatore dell’associazione Villaggio Digitale
  • 5. SOMMARIO • Perché l’informatica • Cos’è il Pensiero Computazionale? • Il “messaggio base” di programmailfuturo.it • 2 fondamenti “inderogabili” • I concetti fondamentali della programmazione • Quali strumenti usare • Domande & Risposte
  • 6. Perché l’informatica Nel ‘recente’ passato la rivoluzione industriale ha provocato l’introduzione di fisica, biologia e chimica nella secondaria con primi accenni nella primaria E’ necessario fornire a tutti i cittadini strumenti di lettura di una società sempre più tecnologica / digitale. Necessaria un'educazione ad hoc: si hanno strumenti ma non si conoscono fondamenti del loro funzionamento. Gap con resto d’Europa e del mondo è significativo ed esiste rischio concreto che non si riesca a colmarlo. Elemento cardine è il pensiero computazionale
  • 8. Il Pensiero Computazionale Procedura attuata da un esecutore, che opera nell'ambito di un contesto prefissato, per raggiungere degli obiettivi assegnati. Il pensiero computazionale è un processo di risoluzione dei problemi attraverso: • Analisi, organizzazione e rappresentazione dei dati • Decomposizione del problema e composizione delle soluzioni • Definizione procedure algoritmiche in funzione del risolutore • Test, verifica e valutazione • Astrazione ed approssimazione
  • 9. Il messaggio ‘base’ (visione tecnologica) Non essere soltanto un consumatore di tecnologia, crea la tecnologia: • Non comprare semplicemente un nuovo videogioco, fanne uno • Non scaricare l'ultima applicazione e basta. Contribuisci a progettarla • Non usare il tuo dispositivo solo per giocarci, programmalo. Soggetto passivo => fruitore attivo Vale per insegnanti, ragazzi e genitori (da questo punto di vista siamo sullo stesso livello)
  • 10. Il messaggio ‘base’ (visione culturale) Il pensiero computazionale è uno strumento intellettuale utile per tutti i cittadini di domani: insegnanti, giuristi, medici, ingegneri, agricoltori, operai,… Soggetto passivo => Soggetto consapevole, ‘alfabetizzato’ Quasi tutti i dispositivi che usiamo ogni giorno, dalla lavatrice al telecomando, dal telefono all’automobile, dalle scarpe da running alle etichette dei nostri abiti sono dispositivi programmati e programmabili e spesso nemmeno ce ne rendiamo conto. Nei prossimi 10 anni in Europa si stima servano 800.000 nuovi lavoratori formati al ‘digitale’ …. anche solo per avere una speranza di lavoro per i nostri figli.
  • 11. http://www.techeconomy.it/2016/03/16/contro-il-coding/ L’informatica non è (solo) il codice, ma la comprensione del problema che ne rende possibile la scrittura. Prima di arrivare al codice un problema va compreso, analizzato, formalizzato, spesso con tecniche che richiedono anni di studio; dopodiché occorre cercare come quel problema è già stato risolto da altri, e se parte della loro soluzione va bene anche per noi, perché non esistono problemi nuovi e perché nel software copiare è cosa buona.
  • 13. INGLESE • I linguaggi di programmazione sono stai ideati in inglese • Sono composti quasi esclusivamente da parole inglesi • Gli strumenti di sviluppo sono in inglese (anche se vi sono le versioni localizzate) • L’inglese è la lingua usata per dialogare tra programmatori • La letteratura tecnica è esclusivamente in inglese (anche se vi sono le traduzioni) PC Ci sono programmi e lezioni da fare senza PC ma la resa è nettamente inferiore: Vedere muoversi un ‘gattino’ sullo schermo perché ho indicato il giusto comando è tutt’altra cosa che scrivere qualcosa su un foglio…le lezioni tradizionali possono essere propedeutiche, nulla di più.
  • 14. I concetti fondamentali della programmazione
  • 15. • Cos’è un programma • Come si scrive un programma (flowchart) • Operatori booleani – Algebra di Boole • Sequenza di istruzioni • Programmazione condizionale • Programmazione iterative • Ripetizione • Ciclo • Eventi e gestione degli eventi • Divide et impera • Funzioni • Funzioni con parametri • Variabili
  • 16. Un programma è una sequenza PRECISA di istruzioni per un ESECUTORE che le esegue alla lettera anche se sono evidentemente sbagliate. Istruzione = • operazione “elementare” • sequenza di operazioni “elementari” I dispositivi funzionano seguendo un programma ovvero una lista di istruzioni che è stato scritta per svolgere un particolare compito. Fanno esattamente quello che le istruzioni dicono, compreso quando le istruzioni non hanno alcun senso (differentemente dagli esseri umani, un dispositivo esegue le istruzioni alla lettera anche queste sono evidentemente errate, magari ridicole)! I dispositivi sono solamente dei precisi esecutori.
  • 17. I programmi sono scritti con linguaggi che sono stati creati appositamente, con un insieme limitato di istruzioni, per ‘dire’ al dispositivo cosa fare. Ci sono decine di linguaggi di programmazione: Assembler, Pascal, BASIC, C e C++, C#, Java, PHP, Javascript, HTML… Alcuni linguaggi sono più adatti ad alcuni compiti rispetto ad altri. Come si scrive un programma ? • Si pensa a cosa si vuole che il dispositivo faccia • Si divide l’operazione in operazioni più semplici (procedure)… • …si continua a ‘spezzare’ l’operazione (o la procedura) fino ad arrivare alle istruzioni ‘semplici’ del linguaggio che si sta usando
  • 18. Flow Chart Flow = flusso Chart = disegno, schema Diagramma di flusso E’ un modo di rappresentare le istruzioni e le procedure descrivendo in forma grafica un programma
  • 19.
  • 20. Boole, chi era costui ? George Boole (1815 - 1864) matematico e logico inglese. E’ considerato il fondatore della logica matematica. Autodidatta, studiò greco, latino, francese, tedesco, italiano e, fin da giovane, matematica sui testi di Laplace e Lagrange. Morì a 49 anni per una grave polmonite causata da un banale raffreddore. L'opera maggiore di Boole è stata la base degli studi sui circuiti elettronici e sulla commutazione, e ha costituito un passo fondamentale verso la concezione dei computer. I "valori Booleani" sono basilari ed utilizzati molto frequentemente in informatica.
  • 21. Valori ed Operatori Booleani Valori booleani • 1 / TRUE / ON / YES / HIGH • 0 / FALSE / OFF / NO / LOW Operatori booleani • NOT (invertitore – inverte il valore 0/1) • AND (prodotto logico – 1 se tutti i valori sono 1) • OR (somma logica – 1 se almeno uno dei valori è 1) • XOR (operatore di disparità – 1 se il numero di operandi ad 1 è dispari) • NAND, NOR, XNOR
  • 22. A B NOT A A AND B A OR B A XOR B 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 1 1 1 1 0 1 1 0
  • 23. Sequenza di istruzioni Un programma segue la logica procedurale cioè avendo delle operazioni da fare le esegue una dopo l’altra in sequenza dalla prima all’ultima. Vedremo nelle prossime slide i costrutti più usati nei linguaggi di programmazione per “incanalare” il flusso del nostro programma. Questi elementi sono chiamati ISTRUZIONI CONDIZIONALI perché permettono di eseguire del codice a seconda che una condizione sia vera o falsa (ecco perché abbiamo parlato di Boole!)
  • 25. Programmazione condizionale IF ( condizione ) THEN istruzione IF ( condizione ) THEN istruzione ELSE istruzione • se la condizione è TRUE viene eseguita l’istruzione subito seguente (THEN); • nel secondo caso, invece, se la condizione è TRUE si esegue l’istruzione seguente, altrimenti si esegue l’istruzione subito dopo la parola chiave ELSE.
  • 26. A = 50; “Inserisci un numero tra 0 e 100″; B = -numero inserito da tastiera- IF (B < A) THEN { “Numero < 50” } ELSE { IF (B > A) THEN { “Numero > 50” } ELSE { “Numero = 50” } }
  • 27. Alcuni esempi: alterazione della sequenza lineare https://studio.code.org/s/course2/stage/13/puzzle/3 https://studio.code.org/s/course2/stage/13/puzzle/5 https://studio.code.org/s/course2/stage/13/puzzle/9 https://studio.code.org/s/course2/stage/13/puzzle/10 https://studio.code.org/s/course3/stage/7/puzzle/5 ramificazioni in alternativa (se-altrimenti) https://studio.code.org/s/course3/stage/7/puzzle/4 ramificazioni multiple (se – altrimenti / se – altrimenti) https://studio.code.org/s/course3/stage/7/puzzle/6
  • 28.
  • 29. Programmazione iterativa Il concetto fondamentale è quello di eseguire un’istruzione (o una serie di istruzioni) continuamente, fino a quando non si verifica una condizione che fa terminare tale esecuzione. Esempio: stampare a video per mille volte la stessa frase; la programmazione procedurale suggerisce di scrivere mille volte il codice, mentre quella iterativa permette di scrivere il comando una ed una sola volta e poi ripeterlo per mille volte, dopo le quali una struttura di controllo adeguata (ad esempio un contatore da uno a mille) termina l’esecuzione del ciclo.
  • 30. WHILE ( condizione ) istruzione Con questa istruzione viene prima valutata la condizione, se l’espressione risulta vera viene eseguita l’istruzione all’interno del WHILE e il WHILE viene ripetuto, altrimenti si esce dal ciclo del WHILE e si procede con il resto del programma. DO istruzione WHILE ( condizione ) Prima di tutto viene eseguita l’istruzione racchiusa tra DO e WHILE (quindi la si esegue almeno una volta), poi si verifica il risultato della condizione, se è vero si riesegue il DO, altrimenti si continua con l’esecuzione del resto del programma.
  • 31. FOR ( inizializzazione ; condizione ; incremento ) istruzione Il FOR inizializza una variabile, pone una condizione (che deve essere vera o falsa) e poi modifica (incrementa o decrementa) la variabile iniziale. Il potere del FOR è appunto quello di poter modificare la variabile che serve per verificare la condizione iniziale, la quale decide se eseguire o meno l’istruzione. FOR (A = 1; A <= 6; A = A + 1) { DISEGNA UN TRATTO LUNGO 10 RUOTA DI 60 GRADI } A = 1; DO { DISEGNA UN TRATTO LUNGO 10 RUOTA DI 60 GRADI A = A + 1; } WHILE (A <= 6);
  • 32. Alcuni esempi: https://studio.code.org/s/course2/stage/17/puzzle/8 https://studio.code.org/c/105686966 https://studio.code.org/s/course3/stage/12/puzzle/4 https://studio.code.org/s/course3/stage/12/puzzle/8 https://studio.code.org/s/course3/stage/8/puzzle/3 https://studio.code.org/s/course3/stage/8/puzzle/5 https://studio.code.org/s/course3/stage/8/puzzle/8 con annidamento di cicli https://studio.code.org/s/course2/stage/19/puzzle/5 https://studio.code.org/s/course2/stage/19/puzzle/11 https://studio.code.org/s/course3/stage/13/puzzle/6 https://studio.code.org/s/course3/stage/13/puzzle/7 https://studio.code.org/s/course3/stage/13/puzzle/8
  • 33. Eventi e loro gestione La programmazione ad eventi è un paradigma di programmazione. In un programma tradizionale l'esecuzione delle istruzioni segue percorsi fissi, che si ramificano soltanto in punti ben determinati predefiniti dal programmatore. Nei programmi scritti utilizzando la tecnica ad eventi il flusso del programma è determinato dal verificarsi di eventi esterni. EVENTO: permette al programma di reagire durante la sua esecuzione ad azioni dell’utente o ad altri avvenimenti rilevanti. E’ la cosa che vogliamo controllare GESTORE DI EVENTO: sequenza di istruzioni che vengono eseguite solo quando l’evento si verifica
  • 35. Divide et impera Divide et impera (latino) = «dividi e domina» Algoritmi che ‘dividono’ ricorsivamente un problema in due o più sotto- problemi sino a che non diventano di semplice risoluzione, quindi, si combinano le soluzioni per ottenere quella del problema dato. Quando sviluppiamo un programma capita che alcune operazioni debbano essere ripetute più di una volta. Scrivere tutte le volte le stesse operazioni risulterebbe noioso ed inutile, per questo abbiamo il concetto di FUNZIONE che è un programma (o modulo) che può essere riusato più volte e in differenti contesti.
  • 37. Variabili Per tener traccia durante l’esecuzione del valore di elementi rilevanti per la risoluzione del problema si usano le variabili. ‘Contenitori’ nei quali si memorizzano valori (interi, stringa, ecc.) per utilizzarli durante l’esecuzione del programma. https://youtu.be/_MkLbhIuvAM
  • 39. DEBUGGING È importante che i programmi siano corretti. Un qualsiasi errore può causare molti problemi. Provate ad immaginare cosa succederebbe per un bug nel programma che controlla il lancio di un missile, nel programma di gestione di una centrale elettrica o in quello che accende i segnali di controllo per i treni! Ma anche solo se il telecomando della TV non imposta il canale richiesto. Gli errori dei programmi sono definiti “bug” cioè insetti in onore di un “bug” che fu rimosso da un relais elettromagnetico di uno dei primi computer all'inizio degli anni 1940. L’insetto aveva causato il malfunzionamento del computer, e ancora oggi la ricerca degli errori nei programmi viene chiamata “debugging” cioè disinfestazione.
  • 40. Alcuni esempi: correzione degli errori: https://studio.code.org/s/course2/stage/11/puzzle/4 https://studio.code.org/s/course2/stage/11/puzzle/5 https://studio.code.org/s/course2/stage/11/puzzle/6 https://studio.code.org/s/course2/stage/11/puzzle/12
  • 42. Riferimenti WEB • Scratch https://scratch.mit.edu http://www.coderschoolitalia.it/?page_id=45 • Programma Il Futuro http://www.programmailfuturo.it • Code.org https://code.org/ • European Multiple MOOC (Massive Online Open Course) http://platform.europeanmoocs.eu/course_coding_in_your_classroom_now Classe virtuale coordinata dal prof. Alessandro Bogliolo dell’Università di Urbino