prof. Nunzio Brugaletta |
LinPROG |
Per una più agevolare esposizione dei principi del paradigma della programmazione strutturata si propone lo sviluppo di un programma in linguaggio C che calcola il totale di una fattura conoscendo, per ogni riga che la compone, la quantità di oggetti venduti e il prezzo unitario:
#include <stdio.h> float CalcTot(); main() /*1*/ { float totale; printf("Calcolo totale di una fattura conoscendone le righe\n"); /* aggiornamento totale con valore calcolato dalle righe */ totale = CalcTot(); /*2*/ /* Stampa totale */ printf("Totale fattura %f\n",totale); } float CalcTot() /*3*/ { float t,pu; int i,qv; t = 0.0; printf("Righe fattura\n"); for(i=1;;i++){ printf("Riga n. %d\n",i); printf("Quant.venduta e prezzo unitario (0 0 per finire) "); scanf("%d %f",&qv,&pu); if((qv<=0)||(pu<=0)) break; t += qv*pu; }; return t; };
Un programma C è composto da più funzioni: nell'esempio proposto la funzione main e la funzione CalcTot definita in 3. La funzione main viene avviata quando viene lanciato il programma, la funzione CalcTot è invece richiamata dalla funzione main nella 2. Quando si sviluppa la funzione main si considera l'algoritmo risolutivo del problema presupponendo l'esistenza di macro-istruzioni che forniscono i risultati intermedi necessari: nell'esempio la sola CalcTot richiamata in 2. Successivamente si può sviluppare CalcTot occupandosi solo di questo aspetto del problema da risolvere. L'elaborazione è suddivisa nelle diverse funzionalità che ne fanno parte applicando un procedimento che consente di risolvere un problema per volta.
Gli obiettivi perseguiti dalla suddivisione del programma in funzioni sono sostanzialmente:
Riutilizzazione del codice. Le elaborazioni scomposte nelle loro parti elementari (le funzioni) presentano blocchi di codice che possono essere utilizzati più volte con risparmio di energie da parte del programmatore e di costi per lo sviluppo. Per favorire la riutilizzazione la funzione deve essere quanto più possibile indipendente dal contesto.
Facilità di manutenzione. Una funzione che esegue una singola elaborazione è più semplice da verificare di un intero programma in cui ogni singola parte può influire nei risultati ottenuti in un altra parte.
http://ennebi.solira.org |
ennebi@solira.org |