Flowchart o Diagramma a Blocchi

Diagramma a Blocchi

Cos'è

Il "Diagramma a Blocchi" o "Flowchart" è una rappresentazione grafica del flusso di un algoritmo o di un intero programma. 
Il flowchart, con soli due blocchi elementari, permette di progettare un programma indipendentemente da qualsiasi linguaggio. 

I blocchi essenziali di un diagramma sono due:
  • Blocco Azione: eseguire uno o più assegnamenti, definire una variabile, eseguire una serie di calcoli ed elaborazioni.
  • Blocco di Controllo/Condizionale: valuta una condizione, entra sempre una sola linea di flusso e ne escono sempre due in base alla verità o falsità della condizione.
I due blocchi seguenti consentono di specificare le azioni di input/output e inizio/fine:
  • Blocco di Input/Output: indica l'azione di inserimento di un valore da salvare su una variabile, ad esempio chiedendo all'utente di inserire un numero o una parola. Si usa lo stesso blocco per mostrare il valore di una variabile a schermo, ad esempio stampare una variabile numerica sulla console.
  • Blocco di Inizio/Fine: è semplicemente il punto di inizio e di fine del diagramma di flusso e dell'intero programma, o di una sua sottosezione più specifica se il diagramma riguarda solamente un algoritmo o una funzione.
Mettendo insieme soltanto questi blocchi è possibile descrivere il flusso di un programma e creare le tre sequenze principali.

Tutta l'informatica e il funzionamento del software eseguito automaticamente da un calcolatore si basa su tre sole sequenze di istruzioni, rappresentabili come sequenze elementari, tale enunciato è dimostrato dal "Teorema di Bohm-Jacopini".

Regole per la correttezza di un flowchart

  1. Tutti i blocchi hanno una sola linea di entrata e una di uscita ad eccezione del blocco condizionale.
  2. Ogni linea di flusso può solo inserirsi in un blocco o su un'altra linea di flusso.
  3. Dal blocco iniziale si può raggiungere qualsiasi blocco.
  4. Il blocco finale è sempre raggiungibile.
  5. Da qualsiasi blocco si può raggiungere il blocco finale.

Codifica in C dei blocchi principali

Segue la traduzione in linguaggio C di alcuni blocchi di esempio. Si è scelto il C perché è forse oggi il linguaggio più utile dal punto di vista didattico, e dal C deriva la sintassi di molti linguaggi più in voga.

Blocco Azione

	
// Esempio in C
int x = 2;
int y = 3;

	
// Esempio in PHP
$x = 2;
$y = 3;


// Esempio in C
int sum = x + y;


// Esempio in PHP
$sum = $x + $y;



Blocco Condizionale e I/O



// Blocco condizionale in C
if(x > y)
{
printf("x è maggiore di y\n");
}
else
{
printf("x è uguale o minore di y\n");
}

// Blocco condizionale in PHP
if ($a > $b)
{
echo "x è maggiore di y";
}
else
{
echo "x è uguale o minore di y";
}

Nel prossimo post illustrerò come rappresentare le tre strutture fondamentali e tradurle in codice. Da queste derivano i blocchi di codice, la struttura di selezione/condizionale e quella iterativa. Le tre strutture fondamentali sono presenti in qualsiasi linguaggio e del tutto indipendenti dal linguaggio stesso.


Conclusione

Oggi i flowchart sono sottovalutati da molti programmatori, che li relegano a delle conoscenze primarie e puramente teoriche, ignorando del tutto la loro capacità espressiva e descrittiva.
Scrivere il diagramma a blocchi prima di scrivere il codice consente di verificare il processo logico di soluzione del problema e raffinare il flusso del programma prima ancora di scrivere il codice.
Vale la pena spendere alcune ore nello studio e approfondimento dei diagrammi di flusso. La loro conoscenza può fare la differenza nell'approccio a qualsiasi problema di programmazione (e non solo).
I flowchart rappresentano uno dei mattoni fondamentali per un approccio di qualità allo sviluppo di software moderno, che non sia solamente copiare e incollare codice, ma andare oltre la mera attività di scripting al volo che oggi caratterizza anche molti sviluppatori professionisti.

Commenti

Post popolari in questo blog

Strutture Fondamentali

Dungeon Siege