• Non ci sono risultati.

COMPUTATIONAL THINKING

N/A
N/A
Protected

Academic year: 2021

Condividi "COMPUTATIONAL THINKING"

Copied!
19
0
0

Testo completo

(1)

PROGRAMMAZIONE I

A.A. 2018/2019

(2)

COMPUTATIONAL THINKING

Formalizzato da una psicologa Americana Jeanette Wing in un articolo sulla rivista ACM nel 2008

ühttps://www.ncbi.nlm.nih.gov/pmc/articles/PMC2696102/

Il pensiero computazionale è l'insieme dei processi mentali coinvolti nella formulazione di un problema e della sua soluzione in modo tale che un umano o una macchina possa effettivamente eseguire.

Il pensiero computazionale è un processo iterativo basato su tre fasi:

üFormulazione del problema (astrazione);

üEspressione della soluzione (automazione);

üEsecuzione della soluzione e valutazione della stessa (analisi).

(3)

Algoritmi e coding

üRegole logiche da impiegare nella risoluzione di un problema e la sequenza in cui devono essere applicate

üEsecuzione dei passi della sequenza sopra su un particolare dispositivo di calcolo

Computational thinking steps

(4)

STORIA DELLA SCIENZA DELLA COMPUTAZIONE

[Fine ’800 inizi ‘900] Studi di insiemistica e logica matematica (Cantor, Hilbert, Gödel)

[1936] Definizione formale di algoritmo e di funzione calcolabile, Church e Turing in contemporanea

[1971] Individuazione di problemi intrattabili, Cook e Levin in contemporanea

(5)

GÖDEL

E L’ESISTENZA

DI DIO

(6)

ALAN TURING

Matematico e crittoanalista

Collaborando alla “Bomba” è riuscito a rompere la cifratura effettuata dai Nazisti durante la 2mondiale

üAlcuni analisti pensano che grazie a lui la guerra sia durata due anni meno

Inventore della Macchina di Turing Padre dell’Intelligenza Artificiale

üTest di Turing (nessun computer lo ha passato fino ad oggi)

https://it.wikipedia.org/wiki/Premio_Turing

(7)

ALAN TURING

(8)

I RISULTATI SONO

Non tutte le funzioni matematiche sono calcolabili con un algoritmo.

üLe funzioni matematiche sono più degli algoritmi

Per alcuni problemi (intrattabili), il numero di operazioni richieste aumenta esponenzialmente rispetto alla

dimensione dei dati trattati

üPer esempio rispetto alla lunghezza di un array

üNon sappiamo ancora se qualche algoritmo più efficiente possa essere ideato (si pensa di no)

(9)

UN ESEMPIO VICINO A NOI

Un algoritmo (programma) che prende in input un programma ed un input e stabilisce se il programma termina su tale input NON ESISTE (non è calcolabile).

üHalting problem

(10)

BACK TO ESONERO

Computabilità ma anche complessità (ritorno all’esercizio dell’esonero)

L’esercizio dell’esonero può essere risolto analizzando l’array, scandendolo con dei for

Per pseudocodice, pseudocodifica, pseudolinguaggio o linguaggio di progettazione si intende un linguaggio il cui scopo è la rappresentazione di algoritmi in alternativa al classico diagramma di flusso e non soggetto a molte

limitazioni intrinseche di quest'ultimo tipo di rappresentazione

(11)

INTERVALLO DI SOMMA MASSIMA

+1 +3

+3 -2 +3

-6

+4 -4 +1 -9 +6

(12)

ALGORITMO CUBICO

(13)

ALGORITMO QUADRATICO

(14)

STUDIANDO MEGLIO IL PROBLEMA

i a-1 a

Proposizione 1: Ogni porzione che termina immediatamente prima della porzione di somma massima (da i a a-1), ha somma negativa

(dimostrazione per assurdo).

somma ≤ 0

Proposizione 2: Ogni porzione che inizia dove inizia la porzione di somma massima ed è inclusa in essa (da a a j con a ≤ j ≤ v), ha somma positiva (dimostrazione per assurdo).

j v

Da a a v è l’intervallo di somma massima

somma ≥ 0

(15)

IN PRATICA

Sommo passo passo tutti gli elementi dell’array (quello con le differenze tra giorno successivo e giorno

precedente) dall’indice 0 in poi

Appena trovo che la somma fino ad un indice (a-1) è minore di zero, sono sicuro di poter scartare tutto

l’intervallo fino a a-1. L’intervallo massimo potrà esistere da questo punto in poi

a e v nella prossima slide vengono aggiornati con

l’intervallo di costo massimo, in base alle proprietà della slide precedente

(16)

ALGORITMO LINEARE

(17)

COMPLESSITÀ (UN’INTRODUZIONE)

Data la lunghezza n di un array

L’algoritmo cubico esegue O(n3) passi. Almeno n3/32 L’algoritmo quadratico esegue O(n2) passi

Se il nostro computer esegue un miliardo di operazioni al secondo,

üL’algoritmo cubico impiega per processare un array di un milione di elementi: (106)3 x 10-9 = 109 (piu di 30 anni)

üL’algoritmo quadratico ci mette (106)2 x 10-9 = 103 (16 minuti) üL’algoritmo lineare 106 x 10-9 = 10-3 (un millesimo di

secondo)

(18)

E NEL FUTURO?

È meglio sviluppare un algoritmo più efficiente o comprare un computer più potente?

Quanti elementi processo in un tempo T?

üT, √T e T

E se compro un computer più potente che mi fa k operazioni in un tempo T?

ü∛kT, √kT e kT che equivale a ük x ∛ T, √k x √ T e kT

Comprare un computer più potente rende più veloce l’algoritmo già più efficiente

(19)

LETTURA CONSIGLIATA

Creare l’algoritmo, pensare al problema, è piu importante che scrivere il programma in un linguaggio di programmazione.

Un informatico risolve i problemi.

Riferimenti

Documenti correlati

La difficoltà principale che presenta la soluzione della disequazione quasi- variazionale (2.42) è rappresentata dal fatto che il il convesso K nel quale si cerca la soluzione

Partendo dalla formulazione duale condensata descritta nel capitolo preceden- te, ci poniamo il problema di ricercare l’esistenza della soluzione per il pro- blema

La tecnica pu` o essere applicata a qualsiasi dominio (sia in due che in tre dimensioni) di qualsiasi forma (infatti se il dominio ha una frontiera curva allora considerando

•  La teoria degli algoritmi studia quanto sono efficienti gli algoritmi che risolvono i compiti difficili, e se esistono algoritmi

Si risolva l’esempio precedente togliendo il vincolo d’interezza (sempre tramite il problema

Soluzione.. Inoltre si vede che E `e coercitivo. Quindi le orbite sono orbite chiuse attorno all’origine e girano in senso orario. Sono tutte orbite periodiche e l’origine `e stabile

Il pensiero computazionale è una competenza che risulterà fondamentale al cittadino 4.0, proprio per questo i docenti hanno il dovere di insegnare il coding già dalla

▰ Durante le prime tre lezioni, peraltro molto ravvicinate nel tempo, i ragazzi hanno realizzato uno o più progetti via via sempre più complessi, arrivando, durante l’ultima lezione