Sei sulla pagina 1di 39

Pensiero

computazionale
GUILLERMO COCHA
l pensiero computazionale usa come modello il modo di pensare di un
informatico durante il proprio lavoro.

Egli infatti riesce ad affrontare qualsiasi problema in qualsiasi settore tra-


mite la scomposizione del problema in sotto problemi.

Lo strumento didattico più semplice per avvicinarsi al pensiero


computazionale è il coding, cioè la programmazione di un
microprocessore (computer, smartphone, robot ecc.).
Problem solving

Il problem-solving, cioè il processo di


risoluzione di un problema, è
schematizzabile in cinque fasi:
1. definizione del problema;
2. ricerca di tutti i modi per risolverlo;
3. scelta del modo migliore;
4. calcolo della soluzione;
5. verifica dei risultati.
Problem solving
Se applichiamo questo processo alla risoluzione di
un problema usando un computer, le fasi diventano
quelle in grigio nella figura:
• analisi,
• programmazione,
• elaborazione,
• verifica dei risultati.
Problem solving
I punti di partenza sono in verde con bordo rosso
(problema e dati).

In grigio vediamo le varie fasi in cui si articola il


problem solving, mentre in verde sono evidenziati i
prodotti di ogni fase che vengono usati come punto
di partenza della fase successiva.
Problem solving
Il problema da far risolvere a un computer
deve essere di tipo generico. Per capire
meglio facciamo un semplice esempio.
Se ho 150 figurine da dividere tra 30
bambini il problema potrebbe essere
qual è il risultato della divisione 150: 30?
ma non è abbastanza generico!
Problem solving

Dati due numeri qual è il risultato


della loro divisione? è il problema
generico che comprende il problema
delle figurine.
Il programma dovrà quindi risolvere
una divisione con qualsiasi coppia di
numeri.
Analisi e algoritmo

L’analisi serve a considerare tutte le


possibili varianti del problema e i
casi particolari: per esempio nella
divisione non si può dividere un
numero per zero.
Analisi e algoritmo

L’analisi porta alla definizione di un


algoritmo.
Analisi e algoritmo

L’algoritmo è una successione di


istruzioni che definiscono le
operazioni e i controlli da eseguire
sui dati per ottenere i risultati.
Analisi e algoritmo
Vediamo per esempio un algoritmo che risolva il
generico problema della divisione (d = a/b):
1. inizio dell’algoritmo;
2. acquisire i valori a e b;
3. se b = 0 allora comunicare che la divisione è
impossibile e andare all’istruzione 6);
4. calcolare a diviso b e porre il risultato in d;
5. comunicare il risultato d;
6. fine dell’algoritmo.
Analisi e algoritmo

L’algoritmo che vedi


sopra, per poter essere
eseguito da un
computer, deve essere
tradotto in un linguaggio
a esso comprensibile:
il computer non capisce
l’italiano!
Programmazione
Il computer conosce un solo
linguaggio per noi
incomprensibile detto
linguaggio macchina.
Tradurre il nostro algoritmo
direttamente in questo
linguaggio è un’operazione
difficilissima e molto lunga.
Programmazione
Per semplificare le cose
sono stati inventati i
linguaggi simbolici (Scratch,
Pyton, C ecc.) che utilizzano
parole della lingua inglese
combinate a una rigida
sintassi.
Programmazione
Il nostro algoritmo scritto in uno di
questi linguaggi prende il nome di
programma sorgente.
Il programma sorgente verrà
trasformato nel linguaggio macchina
dallo stesso computer tramite un
programma traduttore.
La programmazione è la
trasformazione dell’algoritmo in
programma sorgente.
Elaborazione
L’elaborazione è la fase in cui il
programma viene eseguito dal computer.
Durante l’esecuzione il programma
richiederà i dati su cui effettuare le
operazioni richieste.
Tali dati devono provenire
dall’«esterno», cioè da una periferica di
input (tastiera, mouse, scanner ecc.).
Elaborazione
Nell’esempio della divisione il
computer richiederà due numeri,
dividendo e divisore, che dovremo
digitare sulla tastiera.
Dopo il calcolo, che durerà una
frazione di secondo, il computer farà
apparire il risultato su una periferica
di output, generalmente sullo
schermo.
Verifica dei risultati

La fase di verifica è forse la più


importante, perché ci permette
di capire se il programma
funziona davvero.
Infatti, il computer deve dare la
risposta giusta non in un solo
caso, ma in tutti i casi possibili.
Verifica dei risultati

Se qualcosa non funziona,


dobbiamo tornare alla fase
di analisi per capire dov’è il
problema e ripercorrere il
processo correggendo gli
errori di algoritmo o di
programmazione.
L’italiano (come
l’inglese, il francese
ecc.) è un linguaggio
ridondante, permette
cioè di esprimere
un’istruzione in modi
diversi.
Vediamo per esempio altri modi per scrivere l’istruzione 4 precedente:

calcolare la divisione d tra i valori a e b;

calcolare la divisione d pari ad a/b;

calcolare la divisione tra a e b e porre il risultato in d;

mettere in d il valore ottenuto calcolando a/b.


Per evitare ridondanza ed errori di comprensione, sono stati
inventati i linguaggi generalizzati.

Essi sono costituiti da strutture linguistiche che permettono di


descrivere gli algoritmi in modo preciso e sintetico.
Gli elementi che formano
un algoritmo sono di due
tipi: i dati (oggetti su cui
vengono effettuate le
operazioni) e le istruzioni
(descrivono le operazioni da
eseguire sui dati).
Dati

I dati in un algoritmo possono essere


costanti (per esempio numeri come
12, 732, –15) o variabili.
La variabile può essere immaginata
come una scatola su cui è scritto il
nome della variabile stessa che può
contenere un valore.
Per usare una variabile dobbiamo
quindi definire il suo nome e
associare a esso un valore.
Istruzioni

Per rappresentare le istruzioni,


utilizzeremo il diagramma a blocchi, un
linguaggio generalizzato per la
rappresentazione degli algoritmi.

Esso viene anche chiamato diagramma


di flusso (cioè la sequenza) d’istruzione
da seguire.

Potrebbero piacerti anche