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