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.