Appendice – Diagrammi di Flusso

Vedendo le statistiche del sito mi sono accorto che la parola più usata per arrivare a questo blog è, con ampio margine, la parola diagramma di flusso.

A quanto pare c’è molto interesse attorno a questo strumento che io trovo più didattico-scolastico che di vera utilità o valore scientifico. Come tutti i modelli di rappresentazione grafica è infatti improponibile per rappresentare un qualsivoglia programma complesso ma inoltre ha lo svantaggio di non avere la base teorica e formale che hanno altri modelli.

Ho comunque deciso di parlarne per colmare la mancanza facendovi però notare che esistono modelli più rigorosi quali automi a stati finiti, automi a pila e macchine di Turing.

Innanzitutto il diagramma di flusso (o flow chart, o diagramma a blocchi) è certamente il più semplice modello algoritmico immaginabile. La semplicità è tale che (almeno a me è successo così) viene spiegato in corsi di matematica o informatica alle elementari.

Un diagramma si compone principalmente di 5 blocchi:

  1. un blocco ad angoli smussati di inizio che rappresenta il punto di partenza del diagramma di flusso. Ovviamente ne può esistere solo uno per diagramma.
  2. un blocco ad angoli smussati di terminazione che rappresenta il punto in cui l’algoritmo cessa restituendo il risultato. Ci può essere un numero qualsiasi di blocchi di terminazione.
  3. un rettangolo che rappresenta le azioni da compiere in quel passo.
  4. una losanga (detto anche rettangolo inclinato) che rappresentano azioni di lettura/scrittura in memoria.
  5. un rombo che rappresenta una condizione su una variabile. Se la condizione è vera si segue la freccia con scritto vero, se la condizione è falsa si segue la freccia con scritto falso.

Per leggere un diagramma basta quindi seguire sequenzialmente le frecce a partire dal blocco di partenza fino ad arrivare ad uno dei blocchi di terminazione.

Ancora il nostro diagramma di flusso del fattoriale

Ancora il nostro diagramma di flusso del fattoriale

Questo è il classico esempio del fattoriale. Ricordiamoci però che tale diagramma è più complesso del solito in quanto viene calcolato ricorsivamente (ovvero il risultato è calcolato richiamando se stesso finché n è diverso da zero).

Non c’è molto da aggiungere. Come appare evidente un diagramma di flusso risulta inadeguato a descrivere algoritmi molto complessi a meno di condensare nei rettangoli più operazioni non elementari in una maxi-operazione. Ovviamente un diagramma di flusso è maggiormente dettagliato all’aumentare della atomicità delle operazioni descritte nei rettangoli (fino addirittura al punto di usare i rettangoli solo per sommare o sottrarre 1 alle variabili).

Il mio consiglio è quello di non concentrarvi sui diagrammi di flusso bensì su altri metodi molto più pratici come ad esempio lo pseudo codice ovvero una descrizione dell’algoritmo il più formale possibile e simile al linguaggio di programmazione reale.

Comments are closed.