I DIAGRAMMI DI FLUSSO Vantaggi e svantaggi Diagrammi

  • Slides: 31
Download presentation
I DIAGRAMMI DI FLUSSO Vantaggi e svantaggi

I DIAGRAMMI DI FLUSSO Vantaggi e svantaggi

Diagrammi di flusso (Flow Chart) � Per rappresentare in modo efficace un algoritmo sono

Diagrammi di flusso (Flow Chart) � Per rappresentare in modo efficace un algoritmo sono stati sviluppati dei modelli grafici (i diagrammi di flusso o diagrammi a blocchi) che associano alle istruzioni del programma dei simboli grafici. �I blocchi sono i simboli grafici che vengono utilizzati nella scrittura del diagramma per descrivere azioni e decisioni; gli archi orientati servono per collegare i vari blocchi e per descrivere la sequenza di svolgimento delle azioni. � Ogni forma ha il suo significato.

Inizio � Indica l’inizio dell’algoritmo. � Un solo inizio per ogni diagramma di flusso.

Inizio � Indica l’inizio dell’algoritmo. � Un solo inizio per ogni diagramma di flusso.

Ingresso/Uscita � Indica un inserimento di dati o una restituzione di dati (azione di

Ingresso/Uscita � Indica un inserimento di dati o una restituzione di dati (azione di input/output). � Input: ingresso dei dati. � Output: uscita dei dati. I/O

Elaborazione/Azione � Indica un’operazione, un’azione che deve essere eseguita. � Operazione da eseguire.

Elaborazione/Azione � Indica un’operazione, un’azione che deve essere eseguita. � Operazione da eseguire.

Decisione/Domanda/Confronto � Se ci sono delle decisioni da prendere, più opzioni, più strade possibili,

Decisione/Domanda/Confronto � Se ci sono delle decisioni da prendere, più opzioni, più strade possibili, bisogna utilizzare questa forma. � Esegue un test è verifica se è vera o falsa. � L’unico blocco che ha un ingresso e due uscite.

Direzione del flusso � Le frecce collegano i vari blocchi e indicano la direzione

Direzione del flusso � Le frecce collegano i vari blocchi e indicano la direzione del processo.

Fine � Dichiara la conclusione del diagramma. � Una sola fine per un diagramma

Fine � Dichiara la conclusione del diagramma. � Una sola fine per un diagramma di flusso.

Caratteristiche Un diagramma a blocchi è un insieme di blocchi elementari composto da: •

Caratteristiche Un diagramma a blocchi è un insieme di blocchi elementari composto da: • Un blocco iniziale. • Un blocco finale. • Un numero finito n (n>=1) di blocchi di azione e/o di blocchi di lettura/scrittura. • Un numero finito m (m>=0) di blocchi di controllo.

Caratteristiche L’insieme dei blocchi elementari che descrivono un algoritmo deve soddisfare le seguenti condizioni:

Caratteristiche L’insieme dei blocchi elementari che descrivono un algoritmo deve soddisfare le seguenti condizioni: � Ciascun blocco di azione o di lettura/scrittura ha una sola freccia entrante ed una sola freccia uscente. � Ciascun blocco di controllo ha una sola freccia entrante e due frecce uscenti. � Ciascuna freccia entra in un blocco oppure si innesta in un’altra freccia. � Ciascun blocco è raggiungibile dal blocco iniziale. � Il blocco finale è raggiungibile da qualsiasi altro blocco.

Dal diagramma di flusso all’Algoritmo Come si esegue un algoritmo descritto con un diagramma

Dal diagramma di flusso all’Algoritmo Come si esegue un algoritmo descritto con un diagramma di flusso: � Si inizia dal blocco iniziale (START, BEGIN, INIZIO…). � Si seguono le frecce. � Si esegue ogni blocco rettangolare che si incontra. � Si valuta l’espressione di ogni blocco romboidale e si segue la freccia etichettata con il valore risultante dalla valutazione (vero / falso, si / no, T/F …. ). � Ci si arresta quando si incontra il blocco finale (stop/fine).

Dal diagramma di flusso all’Algoritmo La programmazione strutturata favorisce la descrizione di algoritmi facilmente

Dal diagramma di flusso all’Algoritmo La programmazione strutturata favorisce la descrizione di algoritmi facilmente documentabili e comprensibili, privi di salti senza regole. I blocchi di un diagramma a blocchi strutturato sono collegati secondo i seguenti schemi di flusso: � Schema di sequenza – più schemi di flusso sono eseguiti in sequenza. � Schema di selezione – un blocco di controllo subordina l’esecuzione di due possibili schemi di flusso al verificarsi di una condizione. � Schema di iterazione – si itera l’esecuzione di un dato schema di flusso.

Dal diagramma di flusso all’Algoritmo Un diagramma a blocchi strutturato è un diagramma a

Dal diagramma di flusso all’Algoritmo Un diagramma a blocchi strutturato è un diagramma a blocchi nel quale gli schemi di flusso sono strutturati. Uno schema di flusso è strutturato quando soddisfa una delle seguenti proprietà: � È uno schema elementare o uno schema di sequenza (nella sequenza ci sono solo schemi di flusso strutturati).

Dal diagramma di flusso all’Algoritmo � È uno schema di selezione Nel primo caso,

Dal diagramma di flusso all’Algoritmo � È uno schema di selezione Nel primo caso, lo schema S viene eseguito solo se la condizione è vera; se la condizione è falsa, non viene eseguita alcuna azione. Nel secondo caso, viene eseguito solo uno dei due schemi S_true o S_false, in dipendenza del valore di verità della condizione.

Dal diagramma di flusso all’Algoritmo � È uno schema di iterazione Nel primo caso,

Dal diagramma di flusso all’Algoritmo � È uno schema di iterazione Nel primo caso, S può non venire Nel secondo caso, S viene eseguito mai eseguito, se la condizione è almeno una volta. subito falsa.

Dal diagramma di flusso all’Algoritmo � Ogni diagramma a blocchi non strutturato è trasformabile

Dal diagramma di flusso all’Algoritmo � Ogni diagramma a blocchi non strutturato è trasformabile in un diagramma a blocchi strutturato equivalente; � Due diagrammi a blocchi sono equivalenti se, operando sugli stessi dati, producono gli stessi risultati. � L’uso dei diagrammi a blocchi strutturati garantisce: � Facilità di comprensione e modifica dei diagrammi a blocchi. � Maggiore uniformità nella descrizione degli algoritmi.

Dal diagramma di flusso all’Algoritmo � Ogni programma può essere codificato riferendosi esclusivamente ad

Dal diagramma di flusso all’Algoritmo � Ogni programma può essere codificato riferendosi esclusivamente ad un algoritmo strutturato e quindi attenendosi alle tre strutture fondamentali: SEQUENZIALE • ITERATIVA CONDIZIONALE In un diagramma strutturato non apparirà mai una istruzione di salto incondizionato.

Dal diagramma di flusso all’Algoritmo � I tre schemi fondamentali possono essere concatenati, uno

Dal diagramma di flusso all’Algoritmo � I tre schemi fondamentali possono essere concatenati, uno di seguito all’altro, o nidificati, uno dentro l’altro; non possono in nessun caso essere “intrecciati” o “accavallati” :

Diagramma di flusso non strutturato

Diagramma di flusso non strutturato

Come verificare se un diagramma di flusso è strutturato

Come verificare se un diagramma di flusso è strutturato

Esempi di diagrammi di flusso e relativo Algoritmo Dato un numero, dire se è

Esempi di diagrammi di flusso e relativo Algoritmo Dato un numero, dire se è positivo o negativo: Inizia Leggi NUMERO Se NUMERO>=0 Allora Scrivi “Il numero è positivo” Altrimenti Scrivi “Il numero è negativo” Fine. Se Fine

Esempi di diagrammi di flusso e relativo Algoritmo Dato un numero, dire se è

Esempi di diagrammi di flusso e relativo Algoritmo Dato un numero, dire se è positivo , negativo o nullo Inizia Leggi NUMERO Se NUMERO>0 Allora Scrivi “Il numero è positivo” Altrimenti Se Numero=0 Allora Scrivi “Il numero è nullo” Altrimenti Scrivi “Il numero è negativo” Fine. Se Fine

Esempi di diagrammi di flusso e relativo Algoritmo Dati due numeri, calcolare il loro

Esempi di diagrammi di flusso e relativo Algoritmo Dati due numeri, calcolare il loro prodotto usando solo l’operazione di somma Inizia Leggi NUM 1, NUM 2 PROD=0 Mentre NUM 2>0 PROD=PROD+NUM 1 NUM 2=NUM 2 -1 Fine. Mentre Scrivi PROD Fine

Esempi di diagrammi di flusso e relativo Algoritmo Dati tre numeri, stabilire quale sia

Esempi di diagrammi di flusso e relativo Algoritmo Dati tre numeri, stabilire quale sia il maggiore (soluzione 1): Inizia Leggi NUM 1, NUM 2, NUM 3 Se NUM 1>NUM 2 Allora MAX=NUM 1 Altrimenti MAX=NUM 2 Fine. Se Se NUM 3>MAX Allora MAX=NUM 3 Fine. Se Scrivi MAX Fine

Esempi di diagrammi di flusso e relativo Algoritmo Dati tre numeri, stabilire quale sia

Esempi di diagrammi di flusso e relativo Algoritmo Dati tre numeri, stabilire quale sia il maggiore (soluzione 2) Inizia Leggi NUM 1, NUM 2, NUM 3 Se (NUM 1>NUM 2) AND (NUM 1>NUM 3) Allora MAX=NUM 1 Altrimenti Se (NUM 2>NUM 1) AND (NUM 2>NUM 3) Allora MAX=NUM 2 Altrimenti MAX=NUM 3 Fine. Se Scrivi MAX Fine

Esempi di diagrammi di flusso e relativo Algoritmo Sommare tre numeri consecutivi (soluzione 1)

Esempi di diagrammi di flusso e relativo Algoritmo Sommare tre numeri consecutivi (soluzione 1) Inizia Leggi NUM SOMMA=0 SOMMA=SOMMA+NUM SOMMA=SOMMA+(NUM+1) SOMMA=SOMMA+(NUM+2) Scrivi SOMMA Fine I numeri da sommare sono solo 3, ma se fossero n? Bisogna introdurre un ciclo

Esempi di diagrammi di flusso e relativo Algoritmo Sommare tre numeri consecutivi (soluzione 2)

Esempi di diagrammi di flusso e relativo Algoritmo Sommare tre numeri consecutivi (soluzione 2) Questo diagramma è valido anche se i numeri da sommare sono n, basta cambiare la condizione del do_while con “while k<n-1”

Esempi di diagrammi di flusso e relativo Algoritmo Calcolare la media di n numeri

Esempi di diagrammi di flusso e relativo Algoritmo Calcolare la media di n numeri Questo è un esempio di ciclo “indefinito” perché non è possibile sapere a priori quante volte verrà eseguito. I numeri vengono letti uno alla volta fino a che non si incontra un numero NUM=0, che segnala la fine della serie.

Limiti dei diagrammi di flusso • • I diagrammi di flusso complessi o non

Limiti dei diagrammi di flusso • • I diagrammi di flusso complessi o non strutturati sono generalmente illeggibili, non si riesce a seguire l’algoritmo soprattutto quando superano le dimensioni di un semplice esercizio didattico. La lettura andrebbe fatta un po’ dall’alto un po’ dal basso senza un ordine preciso. I diagrammi di flusso sono facilmente esposti ad errori logici, bastano pochi accavallamenti di cicli perdere il filo del controllo. Ciò nasce dalle correzioni consentite da un indisciplinato uso delle frecce che causa un proliferare di errori logici che si accentua con la complessità del problema e l’inesperienza del risolutore. Scarsa praticità dovuta alla natura grafica bidimensionale. Difficoltà di riconoscimento della struttura di controllo.

Limiti dei diagrammi di flusso • • La soluzione a questi problemi consiste nell’imporre

Limiti dei diagrammi di flusso • • La soluzione a questi problemi consiste nell’imporre una disciplina di composizione che eviti cattive strutturazioni degli algoritmi. L’idea base è che, un algoritmo deve essere letto dall’alto al basso secondo un ordine sequenziale di esecuzione. Ciò non significa che non possono esistere dei cicli o dei controlli, ma che questi siano strutturati in modo da poter essere considerati come un unico blocco operativo con un unico ingresso e una sola uscita. Si devono poter distinguere: . § blocchi semplici; § blocchi composti; § tutti con un unico punto di ingresso e un unico punto di uscita.

I vantaggi dei diagrammi di flusso • • Un diagramma di flusso è utile

I vantaggi dei diagrammi di flusso • • Un diagramma di flusso è utile per scomporre un processo in attività elementari facili da gestire e da comprendere, infatti un diagramma di flusso strutturato è componibile ossia ad ogni schema elementare si può sostituire con uno schema più complesso di selezione o di iterazione. È facilmente modificabile. È facilmente leggibile poiché rappresenta il processo come una mappa. È utile per identificare i processi più critici e i punti di controllo.