INFORMATICA - PROGRAMMAZIONE: L'ANALISI TOP DOWN

L'ANALISI TOP DOWN

La soluzione di un problema complesso può essere descritta attraverso istruzioni generiche, descritte più in dettaglio in passi successivi.
In tal modo il problema può essere scomposto in una serie di problemi più semplici, da esaminare uno ad uno.
Questo modo di procedere viene detto top-down cioè dall'alto al basso (o dal generale al particolare).
Per ottenere il programma completo ogni problema lasciato in sospeso deve essere esaminato e risolto, in modo che alla fine la descrizione sia composta soltanto da istruzioni che poi il computer sarà in grado di interpretare ed eseguire.
La prima stesura generale costituisce il programma principale; ciascuna descrizione di un sottoproblema corrisponde a un modulo (procedura, sottoprogramma o subroutine); ciascun raffinamento di una istruzione generale costituisce una subroutine o procedura.
La suddivisione in moduli permette di semplificare un problema, ma se i moduli sono troppi si rischia di arrivare ad una complicazione ancora maggiore; non bisogna quindi esagerare nella scomposizione del problema.

COME SCOMPORRE IL PROBLEMA

Non esistono delle regole precise su come scomporre il problema da affrontare. Sarà la logica a suggerire di volta in volta il modo più appropriato.
Si possono comunque dare alcune indicazioni di carattere generale:
- può essere descritto in un sottoprogramma un procedimento che deve essere ripetuto più volte;
- possono essere descritti in sottoprogrammi dei procedimenti che devono essere eseguiti in alternativa;
- possono essere realizzati in sottoprogrammi i moduli per la gestione dell'input/output, che possono comprendere alcuni controlli sui dati inseriti.
Ogni modulo deve svolgere un compito preciso e avere pochi collegamenti con l'esterno (cioè pochi parametri).

ESEMPIO 40
Si vuole realizzare un programma che funzioni come un registratore di cassa. Il programma, dopo aver richiesto la somma iniziale presente in cassa, deve calcolare per ogni cliente il totale da pagare, in base al numero di articoli di ciscun tipo acquistati e al prezzo unitario di ciascun articolo.
Alla fine della giornata (cioè quando si esce dal programma) il programma deve visualizzare la somma finale presente in cassa.

Esaminando il problema si può pensare di creare un modulo che permetta di gestire gli acquisti di un cliente e uno che consenta di gestire il calcolo del costo di un certo tipo di articolo.

Descrizione delle variabili


+----------------------------------------------------------------+
¦  NOME     ¦   TIPO      ¦      I/O         ¦    SIGNIFICATO    ¦
+-----------+-------------+------------------+-------------------¦
¦   CASSA   ¦numero intero¦      input/      ¦ somma presente    ¦
¦           ¦             ¦      output      ¦ in cassa          ¦
¦NUMEROPEZZI¦numero intero¦      input       ¦ numero di pezzi   ¦
¦           ¦             ¦                  ¦ acquistati di un  ¦
¦           ¦             ¦                  ¦ articolo          ¦
¦  PREZZO-  ¦numero intero¦       input      ¦ prezzo di un pezzo¦
¦ UNITARIO  ¦             ¦                  ¦ di articolo       ¦
¦  COSTO    ¦numero intero¦      interno     ¦ costo di più pezzi¦
¦           ¦             ¦                  ¦ di uno stesso     ¦
¦           ¦             ¦                  ¦ articolo          ¦
¦COSTOTOTALE¦numero intero¦      output      ¦ totale da pagare  ¦
¦           ¦             ¦                  ¦ per un cliente    ¦
¦ RISPOSTA  ¦alfanumerico ¦      input       ¦ segnale usato per ¦
¦           ¦             ¦                  ¦ stabilire se termi¦
¦           ¦             ¦                  ¦ nare il programma ¦
¦           ¦             ¦                  ¦ (può assumere i   ¦
¦           ¦             ¦                  ¦ valori "S" o "N") ¦
+----------------------------------------------------------------+

Flow chart Esempio 40 (prima parte)

Flow chart Esempio 40 (seconda parte)

Flow chart Esempio 40 (terza parte)


Pseudocodifica (vedi Figure)

1 inizio
2 richiesta della somma iniziale in cassa
3 lettura CASSA
4 richiesta di fine giornata
5 lettura RISPOSTA
6 mentre RISPOSTA = "n" esegui
7 GESTIONECLIENTE
8 richiesta di fine giornata
9 lettura RISPOSTA
10 fine mentre
11 emissione CASSA
12 fine

13 inizio GESTIONECLIENTE
14 COSTOTOTALE = 0
15 richiesta quantità di un articolo
16 lettura NUMEROPEZZI
17 mentre NUMEROPEZZI > 0 esegui
18 GESTIONEPRODOTTO
19 richiesta quantità di un articolo
20 lettura NUMEROPEZZI
21 fine mente
22 emissione COSTOTOTALE
23 CASSA = CASSA + COSTOTOTALE
24 fine GESTIONECLIENTE

25 inizio GESTIONEPRODOTTO
26 richiesta prezzo
27 lettura PREZZOUNITARIO
28 COSTO = NUMEROPEZZI x PREZZOUNITARIO
29 COSTOTOTALE = COSTOTOTALE + COSTO
30 fine GESTIONEPRODOTTO

da 1 a 12 Programma principale.
2-3 Richiesta della somma presente in cassa all'inizio della giornata.
4-5 Richiesta di continuare nell'elaborazione di altri clienti o terminare il programma.
da 6 a 10 Ad ogni ripetizione viene gestito un cliente; il programma termina quando l'utente risponde con un carattere diverso da "n" alla richiesta di terminare il programma.
11 Stampa della somma presente in cassa alla fine della giornata (viene calcolata all'interno della procedura di gestione di un cliente).
da 13 a 24 Procedura di gestione degli acquisti di un cliente.
14 Azzeramento del totale per il cliente considerato.
15-16 Inserimento del numero di pezzi per un certo tipo di articolo.
da 17 a 21 Ad ogni ripetizione viene gestito un tipo di articolo; il ciclo termina quando si inserice il valore zero alla richiesta del numero di pezzi acquistati.
22 Stampa del totale da pagare per il cliente considerato (viene calcolato all'interno della procedura di gestione di un tipo di articolo).
da 23 a 30 Procedura di gestione del calcolo del costo di un tipo di articolo.
26-27 Richiesta del prezzo unitario.
28 Calcolo del costo di più pezzi acquistati di un articolo.
29 Calcolo del totale da pagare per il cliente.


+----------------------------------------------------------------+
¦ Esempi di esecuzione                                           ¦
¦                                                                ¦
¦ Inserire la somma presente in cassa                            ¦
¦ ? 27000                                                        ¦
¦ Fine giornata? (s/n)                                           ¦
¦ ? n                                                            ¦
¦ Numero pezzi                                                   ¦
¦ ? 3                                                            ¦
¦ Prezzo                                                         ¦
¦ ? 2500                                                         ¦
¦ Numero pezzi                                                   ¦
¦ ? 2                                                            ¦
¦ Prezzo                                                         ¦
¦ ? 5000                                                         ¦
¦ Numero pezzi                                                   ¦
¦ ? 1                                                            ¦
¦ Prezzo                                                         ¦
¦ ?                                                              ¦
¦ 3000                                                           ¦
¦ Numero pezzi                                                   ¦
¦ ? 0                                                            ¦
¦ Totale da pagare 20500                                         ¦
¦ Fine giornata? (s/n)                                           ¦
¦ ? n                                                            ¦
¦ Numero pezzi                                                   ¦
¦ ? 4                                                            ¦
¦ Prezzo                                                         ¦
¦ ? 7000                                                         ¦
¦ Numero pezzi                                                   ¦
¦ ? 0                                                            ¦
¦ Totale da pagare 28000                                         ¦
¦ Fine giornata? (s/n)                                           ¦
¦ ? s                                                            ¦
¦ La somma presente in cassa è  75500                            ¦
+----------------------------------------------------------------+

Commenti

Si suppone che il programma utilizzi variabili globali.
Volendo utilizzare variabili locali e parametri la procedura gestionecliente avrebbe CASSA come parametro di input/output e COSTOTOTALE e NUMEROPEZZI come variabili locali. La procedura gestioneprodotto avrebbe NUMEROPEZZI come parametro di input, COSTOTOTALE come parametro di output e PREZZOUNITARIO e COSTO come variabili locali.
Nel capitolo dedicato alle subroutine e function del Basic vengono presentati alcuni esempi completi con i parametri.
Chiudi

Outlet Offerte Sconti Promozioni Risparmiare sugli Acquisti di prodotti e Servizi in Internet

Gigacenter Store-Vente privee-Show room prive-La ruota della fortuna-Outlet Più Style-Offerte Outlet Store-Sconti Outlet Offerte-Spartoo Shoes-Private Outlet-Saldi Privati-Sold Outlet-Offerte del GiornoBuoni sconto-Saldi Sconti-Offerte Viaggio-Acquisti + Guadagni

 

eXTReMe Tracker

Shiny Stat

free counters