La programmazione strutturata

La programmazione strutturata è una metodologia di programmazione basata sulla codifica strutturata, il progetto top-down e la modularità.

La codifica strutturata

Nei primi linguaggi di programmazione l'istruzione di salto incondizionato (GoTo) rendeva difficoltosa l'interpretazione del codice sorgente da parte dei programmatori.

un esempio di salto incondizionato

Era molto complesso apportare modifiche al codice sorgente esistente.

Per risolvere il problema negli anni '60 i programmatori si accorsero che qualsiasi istruzione goto poteva essere sostituita con una struttura sequenziale, iterativa, condizionale.

esempio di struttura sequenziale, iterativa e condizionale

Un programma è detto ben strutturato se contiene soltanto istruzioni sequenziali, iterative e condizionali.

  • Le istruzioni sequenziali creano un flusso lineare. Quando un'istruzione viene eseguita, cede il controllo all'istruzione immediatamente successiva nel codice sorgente.
  • Le istruzioni iterative ripetono l'esecuzione di un blocco di codice per più volte.
  • Le istruzioni condizionali eseguono un blocco di codice piuttosto che altri blocchi in base al verificarsi o meno di una condizione di controllo.

Tuttavia, la programmazione strutturata non si riduce alla sola eliminazione dell'istruzione GoTo.

Nota. Pochi linguaggi di programmazione hanno effettivamente eliminato l'istruzione GoTo. E' stata deprecata ma mantenuta per ragione di compatibilità del codice.

Volendo dare una definizione sarebbe meglio dire che

La programmazione strutturata è un insieme di tecniche finalizzate a migliorare la leggibilità del codice sorgente.

Tra le varie tecniche meritano d'essere ricordate l'approccio Top-Down e la modularità del codice.

Top Down

L'approccio Top Down è un approccio progettuale che caratterizza la programmazione strutturale (e non solo) perché migliora ulteriormente la leggibilità del codice sorgente.

E' un concetto strettamente legato alla struttura e alla modularità del codice sorgente.

Come funziona?

Consiste nel realizzare prima il progetto in via generale (Top) e completare i dettagli (Down) successivamente.

Esempio. Scrivo il programma principale che permette all'utente di fare una ricerca in un'archivio. Poi sviluppo i moduli necessari per l'interfaccia di input e di output e la routine di ricerca nell'archivio. I moduli sono richiamati dal programma principale e sono visti come sottoprogrammi a se stanti.

Con l'approccio Top Down il progetto può essere rappresentato in una forma ad albero logico.

Il modulo più in alto è il main program (Top) mentre quelli più in basso sono le routine richiamate.

albero logico di un semplice progetto sviluppato con l'approccio top-down

Differenza tra Top-Down e Bottom-Up. L'approccio Bottom-Up è praticamente inverso al Top-Down. In questo caso sviluppo prima le routine dei dettagli (es. interfacce) e poi le routine che le richiamano.

La modularità

La programmazione strutturata è caratterizzata anche dalla modularità del programma.

Cos'è un modulo?

Un modulo è una routine (funzione o procedura) che svolge un compito preciso.

Ad esempio, l'ordinamento dei dati in ordine crescente o decrescente.

Ogni modulo viene richiamato da un altro modulo (modulo chiamante) del progetto.

un esempio pratico di modularità in un progetto

Nota. Fatta eccezione per il modulo del main program quando è richiesto dall'utente.

Può ricevere dei parametri/argomenti in input e restituire dei valori di ritorno (es. risultato di un calcolo) o edegli effetti collaterali (es. stampa).

un esempio di passaggio dei parametri

In genere il modulo chiamante è un modulo superiore.

Può comunque essere anche un altro modulo in un altro ramo dell'albero logico.

il modulo Sort viene richiamato sia dal modulo A che dal modulo B

A cosa serve la modularità?

Un modulo è composto da poche righe di codice.

Quindi il codice sorgente è più leggibile e più facile da controllare nelle attività di test e di debug.

In caso di errori intervengo direttamente sul codice del modulo senza modificare il resto del programma.

Nota. Posso anche testare un singolo modulo passandogli dei parametri di input predefiniti e verificare se le risposte sono corrette. In questo modo, si standardizza la fase di debugging del progetto .

Inoltre, spesso le variabili usate nel modulo sono variabili temporanee e indipendenti dal resto del programma ( variabili locali ).

In questo modo si riduce la complessità spaziale ossia lo spazio di memoria usato dal programma durante l'esecuzione.

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base
  1. La programmazione
  2. Gli algoritmi
  3. Il linguaggio macchina
  4. Cos'è uno pseudocodice
  5. I programmi informatici
  6. Le variabili
  7. Gli array
  8. Le espressioni
  9. Le strutture di controllo
  10. Le routine
  11. Le funzioni