Sei sulla pagina 1di 17

VOL_1 / UNITA’ 1 / MOD_1

I FLOW CHART: SIMBOLI, SINTASSI E SEMANTICA

[1.1.1.12]

Il METALINGUAGGIO che ci fornirà gli strumenti per rappresentare graficamente l’algoritmo e che sarà
utilizzato per formalizzarlo graficamente prende il nome di DIAGRAMMA DI FLUSSO o FLOW CHART.

Si tratta di una struttura grafica assemblabile attraverso l’uso di limitati simboli grafici e di alcune semplici
regole di evoluzione.

Il carattere statico del grafo assume una sorta di dinamicità nel momento in cui viene verificato il processo.

Come sarà possibile verificare a breve la scrittura dell’algoritmo con il nuovo linguaggio grafico consentirà
di poter verificare la sua correttezza procedendo attraverso una implicita animazione. Saranno sostituiti i
valori delle variabili e, seguendo il flusso obbligato si potrà dimostrare la correttezza del progetto.

Esistono altri tipi di linguaggi grafici alternativi al FLOW CHART che saranno proposti nei futuri
approfondimenti.

Il FLOW CHART è il più idoneo in ambito informatico e sarà lo strumento idoneo per la progettazione dei
programmi che saranno successivamente tradotti nel codice specifico del linguaggio proposto.

Tutti i linguaggi sono caratterizzati da elementi simbolici (come ad esempio le lettere e i caratteri per la
lingua parlata e scritta), elementi sintattici che si riferiscono alla correttezza grammaticale e elementi
semantici che ineriscono al significato delle singole parole e dei periodi.

La frase “il bicchiere dice che ieri pioverà” è senza dubbio corretta sotto il profilo sintattico ma non su quello
semantico.

La frase “il bichiere è stare riemputo da meh con l’accua minerala” è potenzialmente comprensibile da un
punto di vista semantico se non fosse che è densamente afflitto da pesanti errori sintattici.

1
I SIMBOLI CONVENZIONALI DEI FLOW CHART

start
Inizio: definisce l’inizio dell’algoritmo e non svolge
1 nessuna azione se non quella di consentire il
passaggio al blocco seguente.

Preparazione o inizializzazione: operatore che


attribuisce un valore prestabilito alle variabili. Una
2 Preparazione
sorta di blocco di formattazione ad un valore
prestabilito e compatibile con il programma.

Operazione o elaborazione: è l’operatore che esegue


3 operazione
le operazioni richieste nel processo.

Condizione: è l’operatore che esegue un test in


vero funzione della condizione logica dichiarata nel
4 condizione
blocco. Restituisce un risultato di tipo logico VERO o
FALSO.
falso

IN-OUT: operatore che consente l’immissione o le


ingresso
5 uscita
emissioni di informazioni ovvero, la lettura o la
scrittura di dati.

Fine: definisce la fine dell’algoritmo. Viene posto al


6 termine di ogni flusso e decreta la fine del processo
end
logico.

Linee orientate: hanno la funzione di collegare


7 logicamente i blocchi mettendoli in relazione
conformemente al flusso delle azioni

2
APPROCCIO STRUTTURATO PER LA RISOLUZIONE DEGLI ALGORITMI

Attraverso il postulato del teorema di Jacopini-Bohm è stato dimostrato che ogni classe di problema può
essere risolto avvalendosi solo di tre tipologie si strutture chiamate STRUTTURE DI CONTROLLO.

La risoluzione degli algoritmi secondo quanto stabilito da questo teorema prende il nome di approccio
STRUTTURATO. Pertanto la combinazione di sole tre strutture consente la risoluzione di ogni tipo di
algoritmo.

LE STRUTTURE

1) SEQUENZA
2) SELEZIONE (semplice o multipla)
3) ITERAZIONE O CICLO (pre o postcondizonale)

Si analizzano nel dettaglio le tre strutture.

3
SEQUENZA

Si forma attraverso la sequenza lineare dei blocchi. L’elaborazione procede dall’alto al basso.

Viene eseguito ogni comando a seconda del blocco utilizzato e, una volta terminata l’esecuzione contenuta
in un blocco, si procede al blocco successivo.

FASE 1

FASE 2

FASE 2

Le tre fasi si seguono in sequenza. Viene eseguita la FASE 1, una volta terminata si passa all’esecuzione
della FASE 2 e così via.

La struttura sequenza è la più semplice è rappresenta implicitamente la natura stessa del flusso.
L’esecuzione di ogni processo avviene grazie all’esecuzione di azioni “una dopo l’altra” e questo ne rivela la
sua natura sequenziale.

4
“Descrivere con un flow chart un algoritmo che converte i gradi sessagesimali in radianti 1”

Si introducono nella struttura dell’algoritmo anche le fasi di start e end sottintendendo che il processo ha
inizio e una fine. Nonostante la rappresentazione con i FLOW CHART sia puramente formale, si sottolinea
che la fase successiva sarà la sua traduzione in un linguaggio specifico e la sua esecuzione da parte di una
macchina. Pur non facenti parte intrinseca della logica, questi due stati fanno parte del funzionamento della
macchina.

1. Start.
2. Assegnazione del risultato del calcolo della costante di conversione K (data dal rapporto
2 ∙3,14
K= ): il valore numerico viene assegnato alla variabile K.
360
3. Lettura dell’angolo sessagesimale: viene introdotto il valore in gradi dell’angolo scrivendolo in una
variabile chiamata A g.
4. Esecuzione della formula di conversione 1 come prodotto di Ar =K ∙ A g : viene eseguito il calcolo e il
risultato numerico viene assegnato alla variabili A g.
5. Scrittura del valore calcolato: viene restituito il contenuto numerico della variabile A g.
6. End.

start

K=0,01745

input A_g

A_r = K* A_g

output A_r

end

Sono stati utilizzati oltre ai blocchi start e end, un blocco di inizializzazione dove è stata inizializzata la
costante K, due blocchi di inp/out per leggere e scrivere i dati scambiati con l’utente del programma e,
infine il blocco operazione in cui viene eseguito il calcolo.

1
Il radiante è un’unità di misura angolare che fa corrispondere l’angolo come il rapporto tra la lunghezza dell’arco
sotteso dell’angolo in rapporto al raggio della circonferenza. Pertanto l’angolo giro corrisponde a 2 π [rad]. La

relazione tra un angolo espresso in gradi sessagesimali e lo stesso espresso in radianti è: α rad =α grad
360
5
Descrizione del flusso.

1. Il programma si legge partendo dal blocco start procedendo una volta “eseguito”, alla fase
successiva.
2. Nel blocco inizializzazione la variabile K assume il valore scritto di 0,01745.
3. Viene scritto in ingresso (fase di input) il valore numerico dell’angolo in gradi
4. Si calcola l’angolo in radianti attraverso la formula scritta nel blocco di calcolo e si assegna il
risultato numerico alla variabile deputata
5. Si scrive in uscita (fase di output) il valore numerico risultato dall’operazione

6
SELEZIONE

La struttura SELEZIONE o SELETTIVA serve quando nel flusso processo vi è necessità di compiere azioni
differenti a seguito di una scelta.

Il blocco è rappresentato da una losanga (un rombiode) ai cui vertici sono indicati rispettivamente la
direzione di provenienza e altri due che rappresentano le uscite.

La condizione scritta dentro al blocco è una domanda logico/matematica il cui tipo di risposta è di tipo
logico/booleana2. Gli operatore logici deputati sono ovviamente tutti quelli di confronto come ad esempio:
¿ ,>, ≤ , ≥,=, ≠

Se la condizione è verificata, il flusso procede verso la direzione indicata dalla freccia TRUE, altrimenti verso
quella indicata dalla freccia FALSE.

FALSE
Condizione
logica

TRUE

2
Un dato si dice BOOLEANO quando può assumere solo i due valori logici TRUE (vero o 1) o FASE (falso o 0)
7
SELEZIONE SEMPLICE O MULTIPLA

A seconda del tipo di algoritmo potrebbe essere necessario compiere una o più azioni:

1. Nel solo caso di uscita FALSE (oppure TRUE), in caso contrario il flusso deve procedere dall’altro
ramo. Questo tipo di selezione è detta SEMPLICE.
2. Sia nel caso di uscita FALSE che nel caso di uscita TRUE. Questo tipo di selezione è detta MULTIPLA.

SELEZIONE SEMPLICE SELEZIONE MULTIPLA

FALSE
FALSE Condizione
(or TRUE) logica
Condizione
logica

TRUE

AZIONE TRUE
(or FALSE)
AZIONE_A AZIONE_B

Nel caso di selezione semplice, l’azione viene eseguita solo se la risposta è ti tipo FALSE. E’ stata messa tra
parentesi la risposta opposta poiché potrebbe essere necessario eseguire un’azione per risposte vere ma
anche false.

Nel caso di selezione multipla l’azione _A è eseguita in caso di uscita FALSE, quella _B in caso contrario.

8
“Descrivere con un flow chart un algoritmo che restituisca il valore assoluto del numero immesso solo nel
caso il numero sia < 0”.

Si propone una possibile strategia risolutiva imponendo come condizione quella di non immettere 0 come
numero. Tale controllo è tuttavia possibile introducendo un ulteriore condizione in ingresso.

1. Start
2. Lettura del numero N
3. Verificare se N>0
4. Se è TRUE non viene compita nessuna azione e il flusso termina (punto 7)
5. Nel caso FALSE, il numero N viene moltiplicato per la costante −1
6. Il numero viene scritto in uscita
7. End

La struttura richiesta è una selezione semplice.

START

Input N (diverso da 0)

T
N>0

N = N * (-1)

Out N

End

9
ITERAZIONE3 o CICLO

Le strutture ITERATIVE o CICLICHE consentono la ripetizione di una o più azioni sotto il controllo di una
condizione decisionale detta di TEST. Il blocco determinante sia per le strutture condizionale che per quelle
cicliche è il blocco di test. Nel caso delle strutture ciclico/iterative il flusso viene ricondotto a monte.

A seconda che la condizione di test sia posta prima o dopo la azioni si dice che la struttura è:

1. PRECONDIZIONALE (condizione posta prima delle azioni)


2. POSTCONDIZIONALE (condizione posta dopo le azioni)

PRECONDIZIONALE POSTCONDIZIONALE

FALSE azioni
condizione

TRUE

condizione
azioni TRUE

FALSE

Nel ciclo POSTCONDIZIONALE vengono eseguite le azioni (in questo caso sono state rappresentate in un
unico blocco) successivamente interrogato il blocco di TEST. Se la risposta

La differenza sostanziale dunque è che nella struttura POSTCONDIZIONALE la azioni vengono compiute
almeno una volta.

3
ITER <dal latino cammino, viaggio, percorso>
10
“Descrivere con un flow chart un algoritmo che restituisce il resto della divisione di due numeri interi”

L’algoritmo riceve in ingresso due numeri interi A e B. Saranno rispettivamente A il dividendo e B il divisore
omettendo in ingresso il controllo che impone A ≥ B con A e B ∈ N .

Come noto dall’aritmetica la divisione tra due interi restituisce un risultato chiamato quoziente (che
chiameremo Q) ossia quante volte il divisore è contenuto nel dividendo. Se i numeri non sono multipli oltre
al quoziente viene rimane esclusa una quantità minore del divisore chiamata resto. In altre parole
sommando Q volte B otteniamo A a meno del resto; dunque togliendo ciclicamente B ad A otteniamo il
resto.

Volendo ottimizzare le variabili si propone, finché A ≤ B di togliere B ad A “appoggiando” la differenza in A


ossia A=A−B

La descrizione del flusso è la seguente:

1. Start.
2. Lettura di A () e B ()
3. Esecuzione della differenza tra A e B; A=A−B
4. Controllo se A ≤ B ; se TRUE passa a 5, se FALSE torna a 3
5. Scrivi il risultato resto contenuto in A

Start

Input A, B

A=A-B

T
A <= B

Output A

End

La struttura di controllo è di tipo ciclico postcondizionale , prima viene eseguita l’istruzione poi viene
eseguito il controllo sebbene anche l’uso della struttura precondizionale avrebbe portato allo stesso
risultato.
11
Nel caso di quest’altro algoritmo diventa obbligato l’uso della struttura postcondizionale.

“Rappresentare in un flow chart un algoritmo che acquisisce un intero finché questo è < di 100. Termina nel
caso in cui il numero immesso è > 100”

Start Start

Input NUM Input NUM

FALSE
NUM < 100 NUM > 100
TRUE

FALSE TRUE

End End

Si sono proposte due soluzioni identiche nella loro struttura. L’unica differenza è il tipo di operatore
contenuto nel blocco di test e conseguentemente l’utilizzo della risposta in uscita al blocco.

12
RIDUZIONE E SEMPLIFICAZIONE DEI BLOCCHI

Le tre strutture non sono le uniche possibili per risolvere un algoritmo ma sono tra le tante quelle che ne
conferiscono fluidità, semplicità, facilità di comprensione e modificabilità.

Attraverso i procedimenti di semplificazione e riduzione è possibile, partendo da un diagramma di flusso


comunque complesso, ridurre per semplificazioni successive fino ad ottenere un unico blocco equivalente
avente un ingresso ed un’uscita.

Questa procedura consente di verificare se il flow chart è stato progettato con un approccio strutturato.

I blocchi SEQUENZA (sq), SELEZIONE (sl_s, sl_m) e ITERAZIONE (t_i, i_t) possono essere intesi ciascuno come
un blocco avente un ingresso ed un’uscita.

IN
IN
IN
IN
?

sq sl_s

OUT
OUT
OUT
OUT

IN IN

? IN IN

sl_m i_t

OUT ? OUT

OUT

OUT

IN

? IN

t_i

OUT

OUT

13
A titolo di esempio si propone di semplificare secondo la procedura proposta il diagramma seguente.

La struttura ha un ingresso e un’uscita rispettivamente IN e OUT.

Sono indicate tra le parentesi le strutture che via via vengono raggruppate e integrate in “sotto-funzioni”
aventi lo stesso numero.

IN

?
?
2

?
?
5 4
?

OUT

14
IN

2 ?

3 7 5 4

8 9

OUT

IN

7 ?

8 9 10

OUT

15
IN

7 10 11

OUT

IN

1
12

11

OUT

IN

12

OUT

16
CONCLUSIONI

I flow chart sono linguaggio grafici in cui il processo procede secondo un “flusso” lineare dall’alto verso il
basso. Questo approccio prende il nome di procedimento TOP-DOWN.

La sequenza è l’elemento fondamentale del flusso e sottintende da un lato che il processo viene eseguito
un blocco dopo l’altro e, dall’atro lato, forse meno ovvio, che il flusso procede “per passi”.

Questo aspetto viene detto di “tipo discreto” che è tipico di tutte le macchine logiche come sono appunto i
computer e in genere tutti i sistemi logici che hanno la stessa loro architettura interna : PC, computer
industriali , PLC, sistemi a micro processore, ecc…

17

Potrebbero piacerti anche