• Non ci sono risultati.

Diagrammi di Flusso. Costantino Grana Federico Bolelli

N/A
N/A
Protected

Academic year: 2022

Condividi "Diagrammi di Flusso. Costantino Grana Federico Bolelli"

Copied!
25
0
0

Testo completo

(1)

Diagrammi di Flusso

Costantino Grana [email protected]

(2)

Diagramma di Flusso

โ€ข Il diagramma di flusso (flow chart) รจ una rappresentazione grafica delle operazioni da eseguire per l'esecuzione di un algoritmo;

โ€ข Esso consente di descrivere, tramite un linguaggio di modellazione grafico:

โ€ข le operazioni da compiere, rappresentate mediante sagome convenzionali;

โ€ข la sequenza nella quale devono essere compiute, rappresentata con frecce di collegamento;

(3)

Diagramma di Flusso

โ€ข Il diagramma di flusso รจ caratterizzato da una lettura sequenziale:

1. si parte dal blocco iniziale;

2. si segue la freccia in uscita;

3. si giunge al blocco successivo e si effettua l'operazione descritta nel blocco;

4. si procede iterando i passi 2 e 3 fino a giungere al blocco finale.

โ€ข Tra le operazioni si distinguono:

โ€ข Azione: una attivitร  o un'elaborazione da svolgere

โ€ข Test: indica due direzioni in base a un fattore di decisione (vero o falso)

โ€ข Ingresso/Uscita: comporta l'immissione di informazioni dall'esterno oppure

(4)

Diagramma di Flusso

Blocco Iniziale

inizio (o nome dellโ€™algoritmo)

Blocco Finale

fine condizione

V

F

Blocco Decisionale o di Test o di Selezione

leggi qualcosa scrivi qualcosa

Blocco di Input/Output Blocco di Elaborazione

operazione da eseguire

(5)

Diagramma di Flusso

โ€ข Una combinazione di blocchi elementari descrive un algoritmo se:

โ€ข viene usato un numero finito di blocchi;

โ€ข lo schema inizia con un blocco iniziale e termina con un blocco finale;

โ€ข ogni blocco soddisfa le condizioni di validitร ;

โ€ข Condizioni di validitร :

โ€ข Il blocco assegnamento (lettura e scrittura) e il blocco elaborazione hanno una sola freccia entrante e una sola freccia uscente;

โ€ข Il blocco di controllo ha una freccia entrante e due frecce uscenti etichettate con V (Vero) e F (Falso);

โ€ข Ogni freccia deve entrare in un blocco;

โ€ข Dal blocco iniziale deve essere possibile raggiungere ogni blocco;

โ€ข Da ogni blocco dev'essere possibile raggiungere il blocco finale;

(6)

Diagramma di Flusso

โ€ข A volte vi รจ la necessitร  di modellare algoritmi che

presuppongono di conoscere determinati parametri (input) o che forniscono un risultato (output).

โ€ข Lโ€™algoritmo triplica-numero, ad esempio, deve ricevere in ingresso il numero di cui calcolare il triplo.

โ€ข Per poter far riferimento a questo numero arbitrario, come in matematica, abbiamo la necessitร  di dargli un nome.

โ€ข Per questo motivo, nellโ€™ambito del corso estendiamo i blocchi di inizio e di fine aggiungendo la possibilitร  di specificare

parametri di input e output.

(7)

Blocchi Inizio e Fine

โ€ข La rappresentazione che utilizzeremo รจ la seguente:

Blocco Iniziale Blocco Finale

triplica-numero

x fine ris

(8)

Blocchi Inizio e Fine

โ€ข Se ci sono piรน parametri li separiamo con virgole:

Blocco Iniziale Blocco Finale

fai-cose-con-tre-numeri

x, y, z fine ris1, ris2

(9)

Blocco Condizione/Selezione/Test

โ€ข A seconda delle capacitร  del sistema, รจ possibile utilizzare condizioni piรน o meno complesse.

โ€ข Un sistema potrebbe essere in grado di fare verifiche solo del tipo a > b, a < b o a = b, oppure potrebbe consentire anche verifiche piรน complesse come 4 < a < 10.

x = 0 V

F

(10)

Blocco di Elaborazione

โ€ข Un discorso analogo puรฒ essere fatto per le operazioni che รจ possibile eseguire nei blocchi di elaborazione.

โ€ข La quasi totalitร  dei blocchi di elaborazione prevede di assegnare il risultato di unโ€™operazione (o un dato) a una variabile.

โ€ข Con variabile intendiamo una ยซscatolaยป che รจ in grado di

contenere numeri o altri dati e a cui รจ possibile fare riferimento, ad esempio dandole un nome come abbiamo fatto con i

parametri di input e output.

โ€ข Assegnare significa inserire dentro una ยซscatolaยป un dato,

ottenibile anche come risultato di un calcolo. Il simbolo utilizzato per lโ€™assegnamento รจ โ†

(11)

Blocco di Elaborazione

โ€ข Il concetto di assegnamento in informatica รจ profondamente diverso da quello di uguaglianza matematica!

โ€ข In matematica, quando due cose sono uguali significa che sono la stessa cosa. Quindi quando scriviamo ๐‘ฅ๐‘ฅ = 5 in matematica stiamo dicendo che ๐’™๐’™ รจ ๐Ÿ“๐Ÿ“ e in questo contesto ๐‘ฅ๐‘ฅ รจ e sarร  sempre 5.

โ€ข Non vi รจ quindi alcun concetto temporale: non ha senso chiedersi quanto valeva ๐‘ฅ๐‘ฅ prima.

โ€ข In informatica allโ€™assegnamento corrisponde unโ€™operazione che viene eseguita in uno specifico momento.

โ€ข Quindi, quando scriviamo ๐‘ฅ๐‘ฅ โ† 5 stiamo dicendo che prima nella

ยซscatolaยป ๐‘ฅ๐‘ฅ cโ€™era qualcosa, ma dopo lโ€™assegnamento cโ€™รจ il valore 5.

โ€ข In seguito, il valore contenuto in ๐‘ฅ๐‘ฅ potrebbe cambiare ulteriormente.

Il concetto di tempo assume quindi un ruolo fondamentale.

(12)

Blocco di Elaborazione

โ€ข Scrivere il nome di una variabile a sinistra dellโ€™assegnamento (โ†) significa che il valore di quello che si trova a destra verrร  inserito nella ยซscatolaยป corrispondente alla variabile stessa.

โ€ข Ad esempio, il blocco elaborazione che segue mette il valore 5 dentro ๐‘ฅ๐‘ฅ:

๐‘ฅ๐‘ฅ โ† 5

(13)

Blocco di Elaborazione

โ€ข Scrivere il nome di una variabile a destra dellโ€™assegnamento (โ†) significa guardare il valore contenuto nella variabile e

utilizzarlo per fare dei calcoli.

โ€ข Il contenuto della variabile non viene modificato dallโ€™operazione di lettura: ยซguardareยป dentro una ยซscatolaยป non ne cambia il

contenuto.

โ€ข Ad esempio, il blocco elaborazione che segue copia dentro ๐‘ฅ๐‘ฅ il valore contenuto in ๐‘ฆ๐‘ฆ:

๐‘ฅ๐‘ฅ โ† ๐‘ฆ๐‘ฆ

(14)

Blocco di Elaborazione

โ€ข Il blocco elaborazione che segue guarda il contenuto di ๐‘ฆ๐‘ฆ, lo moltiplica per 5 e mette il risultato dentro ๐‘ฅ๐‘ฅ:

โ€ข Il blocco elaborazione che segue legge il contenuto di ๐‘ฅ๐‘ฅ, gli somma 1, e mette il risultato nuovamente dentro ๐‘ฅ๐‘ฅ:

๐‘ฅ๐‘ฅ โ† ๐‘ฆ๐‘ฆ ร— 5

๐‘ฅ๐‘ฅ โ† ๐‘ฅ๐‘ฅ + 1

(15)

Terminologia

โ€ข Lโ€™operazione di ยซguardareยป il contenuto di una ยซscatolaยป sarร  identificata con il termine lettura del contenuto di una variabile, o piรน semplicemente lettura di una variabile.

โ€ข I termini scrivere o assegnare verranno utilizzati per riferirsi allโ€™operazione di ยซmettereยป qualcosa dentro una ยซscatolaยป.

โ€ข Il contenuto di una ยซscatolaยป รจ il suo valore.

โ€ข Dopo aver eseguito ๐‘ฅ๐‘ฅ โ† 4, si dice che ๐‘ฅ๐‘ฅ vale 4. Che cosa abbiamo fatto? Abbiamo assegnato 4 a ๐‘ฅ๐‘ฅ.

โ€ข Se eseguiamo ๐‘ฅ๐‘ฅ โ† ๐‘ฅ๐‘ฅ + 1, stiamo assegnando a ๐‘ฅ๐‘ฅ il risultato di ๐‘ฅ๐‘ฅ + 1. Come lo si calcola? 1) Si legge ๐‘ฅ๐‘ฅ; 2) Si incrementa il

(16)

La Sequenza di Operazioni

โ€ข Uno dei concetti fondamentali in informatica รจ quello di

sequenza, ovvero un elenco di operazioni da eseguire una dopo lโ€™altra.

โ€ข Al termine dellโ€™esecuzione di una operazione si procede con la successiva, e cosรฌ via fino a quando le operazioni non sono

terminate.

โ€ข Questa modalitร  di esecuzione delle operazioni รจ detta

sequenziale in contrapposizione ad una esecuzione parallela in cui piรน attivitร  vengono eseguite contemporaneamente.

โ€ข La sequenzialitร  รจ intrinseca nella rappresentazione mediante diagrammi di flusso.

(17)

La Sequenza di Operazioni

โ€ข Un esempio di sequenza รจ riportato a destra.

โ€ข Al ๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก 1 non possiamo dire cosa vale ๐‘ž๐‘ž non possiamo dire cosa vale ๐‘ก๐‘ก, e non possiamo

dire cosa vale ๐‘˜๐‘˜.

โ€ข Al ๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก 2 possiamo dire cosa vale ๐‘ž๐‘ž, ovvero 5, ma non possiamo dire cosa valgono ๐‘ก๐‘ก o ๐‘˜๐‘˜.

๐‘ž๐‘ž โ† 5

๐‘ก๐‘ก โ† 2

๐‘˜๐‘˜ โ† ๐‘ž๐‘ž ร— ๐‘ก๐‘ก

1 2 3 4

โ€ข Al ๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก 3 possiamo dire cosa valgono ๐‘ž๐‘ž (5) e ๐‘ก๐‘ก (2), ma non possiamo dire cosa vale ๐‘˜๐‘˜.

โ€ข Al ๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก๐‘ก 4 possiamo dire che ๐‘ž๐‘ž vale 5, ๐‘ก๐‘ก vale 2 e che ๐‘˜๐‘˜ vale 10,

(18)

Esempio 1

โ€ข Dati due numeri ๐‘Ž๐‘Ž e ๐‘๐‘ scrivere il diagramma di flusso dell'algoritmo che trova il massimo e lo salva in ๐‘Ÿ๐‘Ÿ.

โ€ข Ad esempio, se i numeri ๐‘Ž๐‘Ž e ๐‘๐‘ fossero rispettivamente 4 e 7 il programma dovrebbe salvare in ๐‘Ÿ๐‘Ÿ il valore di ๐‘๐‘, ovvero 7.

(19)

Esempio 1

massimo

๐‘Ž๐‘Ž > ๐‘๐‘

V

F

๐‘Ÿ๐‘Ÿ โ† ๐‘๐‘ ๐‘Ÿ๐‘Ÿ โ† ๐‘Ž๐‘Ž

a, b

(20)

Come Modellare la Ripetizione

โ€ข A volte รจ necessario ripetere un insieme di operazioni piรน volte.

โ€ข Purtroppo non esiste un blocco specifico nei diagrammi di flusso per modellare questo concetto.

โ€ข Ad ogni modo รจ possibile comporre i blocchi a disposizione per ottenere il risultato desiderato, ovvero la ripetizione di una (o piรน) istruzioni un numero fissato di volte.

(21)

Come Modellare la Ripetizione

โ€ฆ

condizione

V

F

operazioni da ripetere

โ€ฆ

(22)

Come Modellare la Ripetizione

โ€ข Il concetto di ripetizione richiede di contare il numero di volte in cui le istruzioni sono state ripetute, in modo tale da potersi

fermare (interrompere la ripetizione) quando necessario.

โ€ข Contare significa:

โ€ข definire uno stato iniziale, ad esempio ๐‘–๐‘– โ† 0 (questa fase รจ chiamata in informatica fase di inizializzazione)

โ€ข cambiare lo stato dopo aver ripetuto le istruzioni, ad esempio ๐‘–๐‘– โ† ๐‘–๐‘– + 1 (questa fase รจ chiamata in informatica fase di aggiornamento);

(23)

Come Modellare la Ripetizione

condizione

V

F

operazioni da ripetere

๐‘–๐‘– โ† 0

๐‘–๐‘– โ† ๐‘–๐‘– + 1

โ€ข Tipicamente la condizione di

ripetizione dovrร  essere correlata alla variabile utilizzata per

contare, i nell'esempio a destra.

โ€ข Se ad esempio dovessi ripetere le operazioni n volte la condizione dovrebbe essere ๐‘–๐‘– < n.

โ€ข La condizione, insieme all'inizializzazione e

all'aggiornamento, rappresenta uno degli elementi chiave della

(24)

Esempio 2

โ€ข Dati due numeri ๐‘Ž๐‘Ž e ๐‘๐‘ scrivere il diagramma di flusso dell'algoritmo che calcola il prodotto dei numeri (๐‘Ž๐‘Ž ร— ๐‘๐‘)

utilizzando solo la somma. L'algoritmo deve salvare il risultato in ๐‘Ÿ๐‘Ÿ. Si assuma che ๐‘๐‘ sia sempre un numero intero positivo, al piรน nullo. Il numero ๐‘Ž๐‘Ž puรฒ essere un qualunque numero reale.

โ€ข Ad esempio, se i numeri ๐‘Ž๐‘Ž e ๐‘๐‘ fossero rispettivamente 4.1 e 3 l'algoritmo dovrebbe calcolare ๐‘Ÿ๐‘Ÿ = 4.1 + 4.1 + 4.1 ovvero

sommare 4.1 (๐‘Ž๐‘Ž) per 3 (๐‘๐‘) volte.

(25)

Esempio 2

prodotto

๐‘–๐‘– < ๐‘๐‘

V

F

๐‘Ÿ๐‘Ÿ โ† ๐‘Ÿ๐‘Ÿ + ๐‘Ž๐‘Ž ๐‘–๐‘– โ† ๐‘–๐‘– + 1

๐‘–๐‘– โ† 0 ๐‘Ÿ๐‘Ÿ โ† 0 a, b

Riferimenti

Documenti correlati

Tecnologie e Software per il Trattamento dei Big Data 19/04/2021 - Federico

I diagrammi esatti sono disegnati a tratto continuo mentre quelli asintotici sono tratteggiati.... I diagrammi esatti sono disegnati a tratto continuo mentre quelli asintotici

Questo processo di atresia, che sembra essere dominante durante tutta la vita, ha significati ben precisi: innanzitutto determina lโ€™eliminazione della maggior parte delle

La causa principale della non congruitร  puรฒ essere rappresentata, soprattutto nelle cooperative di produzione di beni e servizi, dallโ€™esistenza, fra i dati contabili

Tecnologie e Software per il Trattamento dei Big Data 19/11/2020 - Federico Bolelli, Costantino

โ€“ Contenitore del primo numero (ingresso) โ€“ Contenitore del secondo numero (ingresso) โ€“ Contenitore del risultato

Descrivere utilizzando i diagrammi di flusso lโ€™algoritmo che dati in ingresso il valore della base e dellโ€™altezza di un rettangolo ne calcoli il perimetro e lโ€™area.. Acquisisci

โ€ข ciascun blocco di elaborazione, di acquisizione, e di restituzione ha un solo arco entrante e un solo arco uscente;. โ€ข ciascun blocco di decisione ha un solo arco entrante e due