La programmazione strutturata

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:

Struttura sequenza

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:

Struttura selezione semplice

Selezione doppia:

Struttura 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:

Ciclo indeterminato con pre-condizione

Iterazione indeterminata con post-condizione:

Ciclo indeterminato con post-condizione

Iterazione determinata (solo con pre-condizione):

Ciclo determinato
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à:

Numero Iterazioni = N-1 - 0 + 1 = N