Rappresentazione con i diagrammi di flusso (Flow - chart)

Rappresentazione con i diagrammi di flusso (Flow - chart)
Questo tipo di rappresentazione grafica degli algoritmi, sviluppato negli anni ’50, utilizza una serie
di simboli grafici dal contenuto evocativo che richiamano visivamente le principali operazioni
all’interno di un algoritmo.
Un flow - chart si costruisce combinando in modo opportuno i simboli grafici disponibili, in modo
tale da riprodurre fedelmente l’evoluzione dell’algoritmo in tutte le sue diramazioni e possibilità.
Introduciamo i principali simboli che verranno utilizzati per la rappresentazione degli algoritmi
medianti i diagrammi di flusso.
Azioni
Connessioni
Iniziatore / Terminatore
Flusso logico
Operazione / Processo
Ricongiunzione di
percorsi
Selezione
Ingresso / Uscita
Caratteristiche della rappresentazione con i diagrammi di flusso
Vantaggi
•
Permette di realizzare diagrammi intuitivi e di facile lettura.
Svantaggi
•
•
Incapacità di sintetizzare algoritmi complessi;
Rappresentazione non immediatamente trasferibile in un linguaggio di programmazione.
3
Esempio 1
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.
INIZIO
ACQUISISCI b
ACQUISISCI h
Descrizione in linguaggio naturale
1.
2.
3.
4.
5.
6.
7.
8.
Inizio.
Acquisisci il valore della base b.
Acquisisci il valore dell’altezza h.
Calcola il perimetro del rettangolo p = 2 * ( b + h).
Calcola l’area del rettangolo a = b * h.
Stampa il valore del perimetro.
Stampa il valore dell’area.
Fine.
p = 2 * (b + h)
a=b*h
STAMPA
perimetro
STAMPA area
FINE
Strutture base dei diagrammi di flusso
FALSO
Azione 1
VERO
Condizione
Azione 2
Azione 1
Azione 3
Azione 3
Azione 2
Azione 4
Sequenza
Blocco di selezione
4
Azione
Azione
Condizione
VERO
FALSO
Condizione
FALSO
VERO
Ciclo While – Do
Ciclo Repeat - Until
Esempio 2
Descrivere utilizzando i diagrammi di flusso l’algoritmo che determina il valore maggiore tra due
numeri m e n.
Descrizione in linguaggio naturale
INIZIO
1.
2.
3.
4.
5.
6.
Acquisisci m
Acquisisci n
FALSO
Inizio.
Acquisisci m.
Acquisisci n.
Se m > n allora max = m altrimenti max = n.
Stampa max.
Fine.
VERO
m>n
max = n
max = m
Stampa max
FINE
5
Il modo con cui questo esecutore risolve il problema è molto diverso da quello seguito
dall’esecutore umano. Questo esempio mette in luce che la struttura e la sequenza di operazioni che
descrivono l’algoritmo sono funzione dell’esecutore.
In particolare vengono messe in evidenza:
•
•
le operazioni elementari in grado di eseguire;
comprensione dell’algoritmo.
Esempio 3
Descrivere utilizzando i diagrammi di flusso l’algoritmo che determina il valore maggiore tra tre
numeri a, b, c.
INIZIO
Descrizione in linguaggio naturale
1.
2.
3.
4.
ACQUISISCI a,b,c
FALSO
VERO
a>b
FALSO
VERO
5.
6.
FALSO
b>c
max = c
VERO
a>c
max = b
max = c
7.
8.
Inizio.
Acquisisci i valori di a,b,c.
Se a > b allora prosegui al passo 6.
Se b > c allora max = a altrimenti
max = c.
Salta al passo 7.
Se a > c allora max = b altrimenti
max = c.
Stampa il valore massimo.
Fine.
max = a
STAMPA max
FINE
Osservazioni
1. Non è possibile mettere in collegamento i rami di due blocchi di selezione sebbene richiedono
l’esecuzione della stessa operazione.
2. Per verificare che l’algoritmo funziona correttamente si devono fare delle simulazioni del suo
funzionamento utilizzando dei valori di prova di cui si conoscano le soluzioni.
3. Se esistono due rami dei blocchi di selezione con la stessa azione, probabilmente l’algoritmo
che abbiamo realizzato non è il più efficiente (migliore).
6
Soluzione migliore
INIZIO
Descrizione in linguaggio naturale
1.
2.
3.
4.
5.
6.
7.
ACQUISISCI a,b,c
max = a
FALSO
Inizio.
Acquisisci i valori a,b,c.
Poni max = a.
Se b > max allora poni max = b.
Se c > max allora poni max = c.
Stampa il valore massimo.
Fine.
VERO
b > max
max = b
FALSO
VERO
c > max
max = c
STAMPA max
FINE
7
Esempio 4
Descrivere utilizzando i diagrammi di flusso l’algoritmo che determina se un numero intero è pari o
dispari.
INIZIO
Descrizione in linguaggio naturale
1.
2.
3.
4.
Inizio.
Acquisisci il numero intero n.
Calcola il resto della divisione n / 2.
Se il resto = 0 allora il numero è pari
altrimenti è dispari.
5. Fine.
ACQUISISCI n
Calcola il resto della
divisione n / 2
FALSO
VERO
resto = 0
Numero dispari
Numero pari
FINE
Caratteristiche di un algoritmo
Affinché un insieme di operazioni costituisca un algoritmo deve soddisfare i requisiti seguenti:
•
il numero di operazioni svolte nella soluzione deve essere finito e inoltre ogni singola
operazione deve essere eseguita in un intervallo di tempo determinato;
•
ogni operazione deve essere descritta in modo preciso e non ambiguo;
•
deve essere deterministico ovvero, a partire dagli stessi dati iniziali, l’insieme delle
operazioni deve sempre produrre i medesimi risultati;
•
deve essere eseguibile, ovvero deve esistere un esecutore, automatico o manuale, in grado di
effettuare le operazioni che definiscono l’algoritmo;
•
deve essere comprensibile al suo esecutore
•
deve essere generale e quindi in grado di risolvere non un singolo problema, ma tutti quelli
di una determinata classe.
8
LINGUAGGIO DI PROGETTO
E’ una tecnica alternativa ai metodi grafici che consiste nel rappresentare i passi del processo
risolutivo di un problema per mezzo di un linguaggio informale, simile a quello che usiamo
abitualmente.
Il linguaggio di progetto è chiamato anche pseudolinguaggio o linguaggio per la progettazione dei
programmi o PDL ( acronimo di Program Design Language)
Definizione Pseudocodice
Si definisce pseudocodice l’insieme di frasi, scritte con linguaggio di progetto, che rappresentano
(codificano) le operazioni da compiere nella risoluzione del problema.
Ogni operazione è rappresentata mediante una oppure più parole chiave (keyword) il cui significato
richiama il tipo di operazione codificata.
Le parole chiave sono in genere scritte in inglese, a causa della diffusione, a livello internazionale,
di questa lingua nell’ambito delle discipline scientifiche e tecniche.
Le frasi devono essere definite in modo da soddisfare i requisiti generali degli algoritmi e quindi
non in modo ambiguo.
Le tecniche di rappresentazione degli algoritmi devono permettere di comunicare il lavoro svolto e,
per questo motivo, risulta essenziale l’impiego di parole chiave nella lingua inglese.
Un PDL con parole chiave in inglese può essere comunicato a programmatori di tutto il mondo e
rappresenta il modo comune utilizzato su testi e riviste internazionali, che consente al futuro
programmatore anche l’autoaggiornamento. Il lavoro di traduzione in inglese, risparmiato nella fase
di progettazione, dovrà in tutti i casi essere svolto nella fase di codifica, perché i linguaggi di
programmazione moderni non hanno parole chiave in italiano.
Traduzione dei simboli grafici dei flow – chart in linguaggio di progetto (PDL)
ALGORITMO
Nome
Assegna un nome simbolico all’algoritmo
INIZIO
FINE
Leggi Dati
Stampa Dati
Operazione
BEGIN
END
INPUT
Dati
OUTPUT
Dati
Descrizione dell’operazione a parole o in forma simbolica.
(* Commento *)
Il testo compreso tra i simboli (* e *) sono ignorati
dall’esecutore e possono essere utilizzati per introdurre dei
commenti al codice al fine di aumentarne la leggibilità.
9
Strutture di controllo in PDL
Sequenza
Azione 1
BEGIN
Azione 1
Azione 2
Azione 3
Azione 2
END
Azione 3
Blocco di selezione ad una via
VERO
FALSO
Condizione
IF ( condizione ) THEN
Azione 1
ENDIF
Azione 1
Blocco di selezione a due vie
FALSO
VERO
Condizione
Azione 2
Azione 1
IF ( condizione ) THEN
Azione 1
ELSE
Azione 2
ENDIF
10
Ciclo WHILE - DO
WHILE ( condizione ) DO
BEGIN
Azione
END
Azione
Condizione
VERO
FALSO
Caratteristiche
•
ciclo con verifica della condizione all’ingresso;
•
il corpo del ciclo viene eseguito se la condizione risulta
verificata;
•
il corpo del ciclo non viene mai eseguito se la
condizione risulta subito falsa.
Ciclo REPEAT - UNTIL
REPEAT
Azione
UNTIL (Condizione)
Azione
Caratteristiche
Condizione
FALSO
•
ciclo con verifica della condizione all’uscita;
•
il corpo del ciclo viene eseguito se la condizione risulta
falsa;
•
il corpo del ciclo viene eseguito almeno una volta anche
se la condizione risulta subito verificata.
VERO
Esercizio 1
Algoritmo di calcolo del perimetro e area di un rettangolo.
ALGORITMO Rettangolo
BEGIN
INPUT base,altezza
perimetro ← 2 * base + 2 * altezza
area ← base * altezza
OUTPUT perimetro, area
END
11