Una importante distinzione da fare quando si parla di flow charts è tra:
flow charts strutturati
e flow charts non strutturati.
Un flow chart si definisce strutturato oppure diagramma a blocchi (DAB)
quando è realizzato utilizzando solo ed esclusivamente un insieme di
strutture (o schemi) specifiche e le regole di
composizione
delle
stesse
(successione/annidamento), proprie della programmazione strutturata.
Tra i vantaggi principali dell'utilizzo dei DAB ricordiamo:
maggiore leggibilità e quindi facilità nella comprensione
della
strategia risolutiva del problema, implementata dall'algoritmo
maggiore semplicità nella traduzione in un programma
attraverso i
più
comuni linguaggi di programmazione.
Le strutture fondamentali della programmazione strutturata sono tre e sono:
la sequenza
la selezione
e l'iterazione
Vediamo nello specifico, la definizione e le caratteristiche di ciascuna di esse.
Nota: Tutte le strutture della programmazione strutturata sono
caratterizzate da un unico punto di ingresso ed un unico punto di uscita.
Sequenza
Una sequenza è una successione di blocchi semplici o
composti.
Graficamente può essere schematizzata
come nella figura seguente:
Selezione
La selezione è una struttura che, in funzione del valore di una condizione (vero/falso), esegue
una
sequenza di azioni piuttosto che un’altra.
Essa può essere:
semplice, se è composta da una serie di azioni da compiere
solo
se la
condizione risulta vera; nel caso
in cui la condizione sia falsa non viene eseguito nulla
doppia, se è composta da una serie di azioni da compiere se
la
condizione è vera e da un'altra serie di
azioni da compiere se la condizione risulta falsa
Graficamente possono essere schematizzate come nelle figure che seguono. In esse, il ramo
caratterizzato
dalla lettera T (true) viene eseguito se la condizione è vera, quello caratterizzato dalla lettera F
è
eseguito se la condizione è falsa.
Al termine delle azioni da eseguire in ciascun ramo, le diramazioni si ricongiungono e l'esecuzione
prosegue
attraverso un unico punto di uscita.
Selezione semplice:
Selezione doppia:
Iterazione
L'iterazione: ripete una sequenza di azioni (semplici o composte) in funzione di una condizione.
Nello specifico, le istruzioni da iterare vengono eseguite fino a che la condizione risulta
vera,
quando
questa diventa falsa l'esecuzione prosegue attraverso il raco falso del blocco condizionale.
L'iterazione può essere:
indeterminata, quando non si può conoscere a priori il numero
di
iterazioni che verranno eseguite.
L'iterazione indeterminata può, a sua volta, essere di due tipi:
con pre-condizione, quando la condizione si trova
in testa
allo schema, essa viene valutata prima delle istruzioni da ripetere e, se risulta
essere
subito falsa, le istruzioni da iterare non vengono eseguite nemmeno
una volta
con post-condizione, quando la condizione si trova
in coda
alle istruzioni da iterare dello schema, essa può essere valutata, quindi, solo dopo
aver
eseguito almeno una volta il blocco delle istruzioni
da
iterare
determinata, quando è possibile calcolare a priori il numero
delle
iterazioni che verranno eseguite. Tale calcolo è reso possibile dalla presenza di un
contatore
che parte da un valore iniziale e viene incrementato, ad ogni iterazione, fino al
raggiungimento
di
un valore massimo.
Graficamente possono essere schematizzate come nelle figure che seguono.
Iterazione indeterminata con pre-condizione:
Iterazione indeterminata con post-condizione:
Iterazione determinata (solo con pre-condizione):
Nota: Il ciclo determinato è solo con
pre-condizione.
Calcolo del numero di iterazioni di un ciclo determinato
Il numero delle iterazioni di un ciclo determinato si può calcolare con la formula che
segue:
Numero Iterazioni = Valore Massimo del contatore - Valore Iniziale + 1
Se, ad esempio, il contatore viene inizializzato a 0 ed il sul valore massimo è N-1 (perché la
condizione
del ciclo è contatore < N) allora il numero di iterazioni sarà:
Numero Iterazioni = N-1 - 0 + 1 = N
Se, ad esempio, il contatore viene inizializzato a 1 ed il sul valore massimo è N
(perché la condizione del ciclo è contatore <= N) allora il numero di iterazioni sarà:
Numero Iterazioni = N - 1 + 1 = N
Nell'esempio raffigurato, il numero di cicli sarà: