Pensiero computazionale, coding, diagramma a blocchi

Testo di riferimento

Clicca per acquistare su Amazon il libro Programmazione Python per le scienze della vita

Le slide fanno riferimento al Capitolo 2 - Dal problerma alla soluziobne - (pp. 45 a pp 120)

Pensiero computazionale  
Coding, algoritmi, diagramma a blocchi e Python  
Prof. Salvatore Mancarella  
© Salvatore Mancarella  
Sommario  
üPensiero computazionale  
üCoding  
üAlgoritmi  
üDiagramma a blocchi  
© Salvatore Mancarella  
Tre domannde  
´ Cos’e il pensiero computazionale?  
´ Cos’è il coding?  
´ Infine, cosa c’entra questo con la vostra  
vita professionale  
© Salvatore Mancarella  
© Salvatore Mancarella  
Analizziamo il problema e  
determinare gli obiettivi  
© Salvatore Mancarella  
Scomponiamo il problema in  
sotto problemi  
© Salvatore Mancarella  
Troviamo la soluzione  
© Salvatore Mancarella  
Troviamo la soluzione  
© Salvatore Mancarella  
Stress  
© Salvatore Mancarella  
Stress - Soluzione  
Utilizzare il pensiero computazionale  
© Salvatore Mancarella  
IL pensiero  
computazionale  
Che cos’è?  
© Salvatore Mancarella  
Il pensiero computazionale  
E’ un modo di pensare che ci aiuta a  
formulare «soluzioni costruttive» a  
problemi che dobbiamo risolvere  
© Salvatore Mancarella  
Facciamo un esempio  
Se vuoi raggiungere una  
vetta….  
© Salvatore Mancarella  
non puoi pensare di…  
Arrivarci subito e senza  
allenamento  
© Salvatore Mancarella  
L’obiettivo  
va raggiunto a piccoli passi.  
© Salvatore Mancarella  
Il pensiero  
computazionale  
è lo strumento  
che ci consente  
di passare da  
un’idea al  
procedimento  
per realizzarla  
© Salvatore Mancarella  
Imparare a  
programmare è  
il modo migliore  
per acquisire il  
pensiero  
computazionale  
© Salvatore Mancarella  
Quindi se la meta è la vetta  
devi allenarti  
© Salvatore Mancarella  
Pensiero computazionale  
Definizione formulata dalla dottoressa Jeannette  
Wing, direttrice del Dipartimento di Informatica  
della Carnegie Mellon University, secondo cui  
« il processo mentale che sta alla base della  
formulazione dei problemi e delle loro soluzioni  
così che le soluzioni siano rappresentate in una  
forma che può essere implementata in  
maniera efficace da un elaboratore di  
informazioni sia esso umano o artificiale».  
© Salvatore Mancarella  
Pensiero computazionale  
Ovvero è lo sforzo che un  
individuo deve mettere in  
atto per fornire a un altro  
individuo o macchina tutte e  
sole le “istruzioni” necessarie  
affinché questi eseguendole  
sia in grado di portare a  
termine il compito dato.  
© Salvatore Mancarella  
Pensiero computazionale  
DETTO IN PAROLE SEMPLICI  
QUANDO AFFRONTIAMO UN PROBLEMA O ABBIAMO UN’IDEA, SPESSO  
INTUIAMO LA SOLUZIONE MA NON SIAMO IN GRADO DI  
FORMULARLA IN MODO OPERATIVO PER METTERLA IN PRATICA.  
Il PENSIERO COMPUTAZIONALE E’ QUESTO  
LA CAPACITÀ DI DESCRIVERE UN  
PROCEDIMENTO COSTRUTTIVO CHE  
PORTI AD UNA SOLUZIONE  
CREATIVA, EFFICACE E NON  
AMBIGUA  
© Salvatore Mancarella  
© Salvatore Mancarella  
Pensiero computazionale  
pensiero computazionale  
,
aiuta a sviluppare competenze logiche e  
capacità di risolvere problemi in modo  
creativo ed efficiente, qualità che sono  
importanti per tutti gli ambiti lavorativo  
e sociale.  
Il modo più semplice e divertente  
di sviluppare il pensiero  
computazionale è attraverso la  
coding  
programmazione (  
contesto di gioco.  
) in un  
© Salvatore Mancarella  
Coding  
© Salvatore Mancarella  
Cosa è il coding?  
´ Per coding si intende, in informatica, la stesura di un  
programma, cioè di una di quelle sequenze di  
istruzioni che, eseguite da un calcolatore, danno  
vita alla maggior parte delle meraviglie digitali che  
usiamo quotidianamente  
´ Il coding fornisce una forma mentis che permetterà  
loro di affrontare problemi complessi  
´ Insomma imparare a programmare apre le mente  
© Salvatore Mancarella  
© Salvatore Mancarella  
© Salvatore Mancarella  
© Salvatore Mancarella  
© Salvatore Mancarella  
© Salvatore Mancarella  
© Salvatore Mancarella  
Step pensiero computazionale  
© Salvatore Mancarella  
Scomposizione  
Problema 1  
Problema 2  
© Salvatore Mancarella  
pensiero  
computazionale  
Verifica costante  
Trovare la soluzione  
Scomporre il problema in  
sottoproblemi  
Analizzare il problema e  
determinare gli obiettivi  
© Salvatore Mancarella  
© Salvatore Mancarella  
Algoritmi  
© Salvatore Mancarella  
Algoritmi  
Ogni giorno siamo chiamati a risolvere dei problemi, per es:  
1. Decidere se riconciliarci con l’amico con cui abbiamo  
litigato;  
2. Calcolare l’area di un rettangolo, note la base e  
l’altezza;  
3. Stabilire quale squadra di calcio vincerà il campionato,  
ecc.  
Noi cercheremo in questa sede di esaminare soltanto i  
problemi del secondo tipo, poiché solo tali problemi sono  
risolvibili mediante algoritmi  
© Salvatore Mancarella  
Cos’è un Algoritmi  
© Salvatore Mancarella  
Cos’è un Algoritmi  
´E’ una sequenza  
finita di passi  
(istruzioni), che  
devono essere  
eseguiti secondo  
un ordine  
prefissato per  
individuare la  
soluzione  
© Salvatore Mancarella  
Algoritmi  
Quando dobbiamo risolvere un  
problema è necessario  
individuare:  
´ Chi lo risolve;  
´ Quali risorse sono necessarie;  
´ Qual è il risultato che si vuole  
ottenere  
© Salvatore Mancarella  
Algoritmi - Chi lo risolve  
Es. devo spostarmi da un luogo ad un altro in  
comodità e velocemente  
´ Chi risolve questo problema  
© Salvatore Mancarella  
Algoritmi - Quali risorse sono  
necessarie  
´ Il carburante  
´ Il conducente  
´ …..  
© Salvatore Mancarella  
Algoritmi - Qual è il risultato che  
si vuole ottenere  
´ Arrivare a destinazione nel minor tempo possibile  
e comodamente  
© Salvatore Mancarella  
Algoritmi  
E’ però necessario analizzare prima il problema  
e poi trovare una strategia per risolverlo.  
´ Mentre la macchina può essere utilizzata  
solo per spostarsi,  
´ il COMPUTER è in grado di risolvere problemi  
di natura diversa.  
© Salvatore Mancarella  
Cos’è il COMPUTER?  
E’ un sistema di elaborazione che trasforma le informazioni che  
riceve in ingresso nei risultati che vogliamo ottenere  
© Salvatore Mancarella  
Caratteristiche dell’algoritmo  
L’algoritmo deve essere:  
´ Finito: composto da un numero finito di  
passi  
´ Deterministico: a fronte degli stessi dati in  
input deve produrre gli stessi risultati  
´ Non ambiguo: i passi che lo compongono  
devono essere interpretati in modo univoco  
dall’esecutore  
´ Generale: deve fornire la soluzione per tutti i  
problemi appartenenti ad una certa classe  
© Salvatore Mancarella  
Componenti di un algoritmo  
´DATI: sono gli oggetti  
su cui dobbiamo  
operare  
´ISTRUZIONI: sono le  
attività che devono  
essere svolte  
© Salvatore Mancarella  
I dati  
´ Ad ogni dato è associato un nome che lo  
identifica in modo univoco (es. lato,  
codice, imposta, ecc).  
´ I dati possono essere classificati secondo  
il modo in cui interagiscono con  
l’elaboratore:  
´ Input (forniti dall’esterno, es. prezzo,  
quantità, aliquota)  
´ Output (comunicati all’esterno, es.  
totale fattura)  
´ Lavoro (dati di lavoro, es. IVA).  
© Salvatore Mancarella  
I dati  
A seconda degli oggetti che  
rappresentano, possono essere:  
´ Numerici  
´Interi (es: il numero di abitanti –  
1,2,3..)  
´Reali (es: la temperatura 27,5°  
28,6°)  
´ Alfanumerici o stringhe  
´Codice fiscale, indirizzo, ecc..  
© Salvatore Mancarella  
I dati  
In base alla possibilità di cambiare il  
valore durante l’esecuzione  
dell’algoritmo, distinguiamo:  
´ Costanti, il cui valore rimane  
immutato nel tempo (es.aliquota  
IVA);  
´ Variabili, il cui valore può  
cambiare nel tempo (es. prezzo di  
un prodotto)  
© Salvatore Mancarella  
Le istruzioni  
Le istruzioni Analizziamo i tre tipi di istruzioni  
fondamentali:  
´ Lettura: attraverso la quale si assegna ad  
una variabile un valore tramite  
digitazione sulla tastiera del PC;  
´ Scrittura: permette di visualizzare tramite  
video o supporto cartaceo, un  
messaggio o il valore di una variabile;  
´ Assegnazione: permette di attribuire un  
valore ad una variabile.  
´ Es: A=3; oppure A=B+3;  
© Salvatore Mancarella  
Fasi per creare un algoritmo  
© Salvatore Mancarella  
Approccio alla creazione di  
un algoritmo  
´ Approccio 1  
Fase 3  
Fase 1  
Fase 2  
Fase 4  
´ Approccio 2  
Fase 1  
Fase 2  
Fase 3  
Fase 4  
© Salvatore Mancarella  
Rappresentazione degli algoritmi  
´Diagramma a blocchi o di  
flusso o Flow-chart:è il metodo  
più usato e si basa sull’uso di  
simboli a cui corrispondono  
delle precise operazioni.  
´Pseudocodifica : utilizza un  
linguaggio speciale per  
descrivere le istruzioni da  
eseguire  
© Salvatore Mancarella  
Diagramma a blocchi  
© Salvatore Mancarella  
Diagrammi a blocchi  
´ Un particolare simbolo  
grafico detto blocco  
elementare è associato a  
ciascun tipo di istruzione  
elementare.  
´ I blocchi sono collegati fra  
loro tramite frecce che  
indicano il susseguirsi delle  
istruzioni.  
© Salvatore Mancarella  
Diagrammi a blocchi  
´ È un linguaggio formale di  
tipo grafico per  
rappresentare gli algoritmi.  
´ Attraverso il diagramma a  
blocchi (o flow chart ) si può  
indicare l’ordine di  
esecuzione delle istruzioni.  
© Salvatore Mancarella  
Diagrammi a blocchi  
´ Ogni diagramma inizia con:  
´ E termina con  
© Salvatore Mancarella  
Diagrammi a blocchi  
´ I blocchi elementari sono i seguenti  
INPUT  
OUTPUT  
© Salvatore Mancarella  
Diagrammi a blocchi  
Un diagramma a blocchi descrive  
un algoritmo se:  
´ ha un blocco iniziale e uno  
finale;  
´ è costituito da un numero finito  
di blocchi azione e/o blocchi  
lettura/scrittura e/o blocchi di  
controllo;  
´ ciascun blocco elementare  
soddisfa le condizioni di  
validità.  
© Salvatore Mancarella  
Diagrammi a blocchi  
Condizioni di validità:  
´ ciascun blocco azione,  
lettura/scrittura ha una sola  
freccia entrante e una sola  
freccia uscente;  
´ ciascun blocco di controllo  
ha una sola freccia entrante  
e due frecce uscenti;  
© Salvatore Mancarella  
Esercizio n°3 (Condizione)  
´ Descrivere l’algoritmo che dato due numeri determina il valore  
maggiore e disegnare il diagramma a blocchi.  
© Salvatore Mancarella  
1) Formulare il problema e  
definire gli obiettivi da  
raggiungere  
´ Definiamo gli obiettivi da raggiungere ponendoci le  
seguenti domande:  
´ Qual è il risultato che si vuole ottenere?  
´ Calcolare il valore maggiore dal confronto di due numeri.  
´ Quali risorse sono necessarie?  
´ Il valore dei due numeri.  
© Salvatore Mancarella  
2) Analizzare e identificare la  
soluzione  
´ Possiamo considerare il testo “dato due numeri” che  
identifica quali sono i dati noti, invece il testo  
determinare il valore maggiore” identifica quali sono  
i dati da calcolare per risolvere il problema.  
´ Quindi possiamo riepilogare quanto segue:  
´ individuare i dati di input cioè valori noti:  
´ il valore dei due numeri, dichiariamo le variabili A e B;  
´ individuare i dati da elaborare:  
´ determinare il valore maggiore, se il valore di A è maggiore  
di B, la condizione è vera allora stampiamo “il valore  
maggiore è A” altrimenti stampiamo “il valore maggiore è  
B”;  
´ individuare i dati di output cioè i risultati da ottenere:  
´ in questo caso stampiamo il messaggio indicando il valore  
maggiore;  
© Salvatore Mancarella  
3)Formulare e trovare la  
soluzione  
© Salvatore Mancarella  
Fase 1 - Individuare gli elementi  
necessari per risolvere il  
problema.  
´ Gli elementi sono rappresentati dai:  
´ dati di input - i due valori e dichiariamo le variabili A e B;  
´ dati di output - il messaggio da visualizzare per  
rappresentare quale dei due valori è il maggiore.  
© Salvatore Mancarella  
Fase 2 - Acquisire le informazioni  
per risolvere il problema.  
´ Chiediamo all’utente di inserire i due valori, cioè A e B.  
Fase 3 - Determinare la  
soluzione al problema  
´ se il valore di A è maggiore di B, la condizione è vera  
allora visualizziamo “il valore maggiore è A” altrimenti  
visualizziamo “il valore maggiore è B”;  
© Salvatore Mancarella  
Fase 4 - Comunicare i risultati  
della soluzione al problema  
´ I risultati sono comunicati dal messaggio che viene  
visualizzato nella condizione.  
© Salvatore Mancarella  
© Salvatore Mancarella  
© Salvatore Mancarella  
Esempio  
Es. di diagramma di flusso per il calcolo della somma di  
due numeri  
© Salvatore Mancarella  
Esempio di pseuodocodifica  
PROGRAMMA somma  
INIZIO  
LEGGI (num1, num2)  
somma num1+num2  
SCRIVI (somma)  
FINE  
© Salvatore Mancarella  
Soluzone n°4  
Realizziamo un algoritmo per il  
calcolo del valore massimo fra tre  
numeri presi in input, ovvero il  
numero maggiore.  
© Salvatore Mancarella  
Soluzione n°4  
´ Innanzitutto prendiamo in input i tre numeri: A, B e C.  
´ Dopo effettuiamo il test A>B cioè ci chiediamo A è  
maggiore di B?  
´ Abbiamo allora due possibilità:  
1. Se il test è vero possiamo tralasciare B e confrontare A  
con C. Ci servirà dunque un altro rombo per effettuare il  
secondo test  
2. Se il test iniziale (A>B) è falso allora vuol dire che A è  
minore di B, quindi sicuramente A non sarà il maggiore,  
pertanto confronto B con C, in questo modo: B>C  
© Salvatore Mancarella  
© Salvatore Mancarella  
Gli operatori Logici  
´ In questa soluzione utilizziamo l’operatore || che sta  
per or, cioè la funzione logica O.  
´ In questa soluzione utilizziamo l’operatore && che sta  
per and, cioè la funzione logica E.  
© Salvatore Mancarella  
Soluzione con gli operatori  
logici  
´ L’algoritmo si può risolvere anche in un altro modo. Ad  
esempio utilizzando gli operatori logici.  
´ In questa soluzione utilizziamo l’operatore && che sta  
per and, cioè la funzione logica E.  
´ Poniamo come prima condizione che A sia maggiore  
di B e contemporaneamente che A sia maggiore di  
C. Dunque in questo modo: A>B && A>C.  
© Salvatore Mancarella  
Soluzione con gli operatori  
logici  
´ Se tale condizione è vera chiaramente A è il  
maggiore.  
´ Altrimenti se A>B && A>C è falsa, vuol dire che A non  
può essere il maggiore, perché chiaramente non è  
comunque maggiore di entrambi. Dunque possiamo  
escludere A dal prossimo confronto e valutare solo B e  
C.  
´ Quindi controlliamo solo se B è maggiore di C e se tale  
condizione è vera il massimo sarà B, altrimenti il  
massimo sarà C.  
© Salvatore Mancarella  
© Salvatore Mancarella  
Soluzione con una variabile  
di comodo  
´ Utilizziamo un variabile di comodo MAX dove  
memorizziamo il primo valore preso in input A.  
´ se B è maggiore di MAX sostituisco il valore, altrimenti  
non faccio nulla in quanto MAX è più grande.  
´ Dopo controllo se C è maggiore di MAX e se vero  
sostituisco il valore, altrimenti come prima vuol dire  
che MAX è il maggiore.  
© Salvatore Mancarella  
© Salvatore Mancarella  
© Salvatore Mancarella  
© Salvatore Mancarella  
Esercitazione trovare il max  
© Salvatore Mancarella  
Linguaggio di programmazione  
Python  
© Salvatore Mancarella  
Le applicazioni (Programmi)  
Anche i programmi sono interpretati attraverso un’architettura a strati,  
composta da tre moduli funzionali (sottosistemi) concettualmente  
indipendenti tra loro:  
Interfaccia Utente (IU) – Acquisisce i dati e i  
comandi immessi in input dall’utente, e  
restituisce in output i risultati  
dell’elaborazione.  
© Salvatore Mancarella  
Le applicazioni (Programmi)  
Anche i programmi sono interpretati attraverso un’architettura a strati,  
composta da tre moduli funzionali (sottosistemi) concettualmente indipendenti  
tra loro:  
Logica Applicativa (LA) – Implementa gli  
algoritmi specifici per l’elaborazione dei dati e  
delle informazioni alla base dell’applicazione.  
Gestione Dati (GD)– Si occupa della  
memorizzazione dei dati e ottimizza i metodi  
per recuperarli, in modo da rendere il più  
efficiente possibile il loro reperimento e  
utilizzo.  
© Salvatore Mancarella  
Le applicazioni (Programmi)  
Un programma è una sequenza finita di istruzioni che, eseguite da un  
calcolatore elettronico (secondo la logica definita dal programma stesso),  
produce un’elaborazione su dei dati in ingresso per arrivare a produrre dei dati  
in uscita, che sono appunto il risultato di questa elaborazione.  
OUTPUT  
INPUT  
DATI IN  
INGRESSO  
DATI IN  
USCITA  
PROGRAMMA  
Visione lato utente  
© Salvatore Mancarella  
Codice sorgente  
´ Quando si realizza un software, il programmatore detta le  
istruzioni al computer tramite la scrittura di un codice  
sorgente in un determinato linguaggio di programmazione.  
Compilatore  
Programma  
Sorgente  
Programma  
Eseg
Visione latosviluppatore  
© Salvatore Mancarella  
Codice sorgente  
´ Il codice sorgente però non è direttamente eseguibile  
dalla CPU (Central Processing Unit), è necessario “tradurlo”  
in linguaggio macchina, ossia un file binario contenente  
microistruzioni gestibili dal processore.  
´ Diverse architetture di processori prevedono linguaggi  
macchina differenti  
Compilatore  
Programma  
Sorgente  
Programma  
Eseg
Visione latosviluppatore  
© Salvatore Mancarella  
Tipi di linguaggio di  
programmazione  
´ Interpretato il programma sorgente può essere eseguito  
direttamente dal calcolatore (interpretati),  
´ Compilato deve essere tradotto da un apposito  
compilatore (compilati) in linguaggio macchina per poter  
essere eseguito, ovvero per poter essere trasformato in un  
programma eseguibile.  
Compilatore  
Programma  
Sorgente  
Programma  
Eseg
Visione latosviluppatore  
© Salvatore Mancarella  
Linguaggio compilato  
© Salvatore Mancarella  
Linguaggio interpretato  
© Salvatore Mancarella