72
BLOCCO TEMATICO B
Metodologie di programmazione
LEZIONE
Top-down e bottom-up
1
Quando un problema appare immediatamente complesso, per risolverlo possia
mo individuare e analizzare i
sottoproblemi
più semplici che lo compongono, ol
tre alle loro interrelazioni. In questo modo è possibile articolare la progettazione
dell’algoritmo complessivo in una serie di algoritmi più semplici, che verranno
poi opportunamente assemblati.
La programmazione, in effetti, non è solo un processo di ideazione e formula
zione di algoritmi: esige attenzione ai minimi dettagli e l’adozione di opportune
tecniche di analisi dei problemi da risolvere. Per questo, una buona metodologia
di progettazione è quella che risolve il problema
per passi
: partendo da un’analisi
generale, si focalizza l’attenzione sui singoli punti fondamentali che lo compon
gono, riducendo così le difficoltà.
Tale metodologia, di natura gerarchica, prende il nome di
top-down
, ossia
“dall’alto verso il basso”. Gli aggettivi alto e basso si riferiscono al
livello di det-
taglio
o
astrazione
. Il livello più alto (
top
) è quello generale, chiamato
problema
principale
; in esso si individuano i nodi fondamentali chiamati
sottoproblemi
.
Ciascun sottoproblema viene dettagliato a parte e, se complesso, può essere a
sua volta scomposto in ulteriori sottoproblemi più semplici. Si giunge così all’ana
lisi e alla risoluzione di tanti problemi elementari tramite algoritmi descritti a
livello programmabile (il livello più basso è
down
), le cui relazioni sono ricavate
dalla descrizione a livello superiore. In sintesi, si scende dal generale al particola
re mediante
affinamenti successivi
.
La tecnica top-down, quindi, nasce come
tecnica di analisi dei problemi
e non
come tecnica di progettazione: il risolutore, infatti, utilizza tale metodologia per
affrontare agevolmente il processo risolutivo del problema.
All’atto dell’implementazione, poi, il programmatore deciderà se implementare
singolarmente i vari sottoproblemi, o se accorparne alcuni e scomporne altri.
Problema
Sottoproblema
1
Sottoproblema
2
Sottoproblema
3.2.1
Sottoproblema
3.1.1.1
Sottoproblema
3.1.1.2
Sottoproblema
3
Sottoproblema
3.1.1
Sottoproblema
3.1.2
Sottoproblema
3.2
Sottoproblema
3.1
Per scomporre un problema in tanti sottoproblemi funzionali ci si sofferma su
cosa
debba essere fatto e non sul
come
, che con tale metodologia viene affrontato
poco e soltanto all’ultimo livello.