Problema: La tariffa di un parcheggio è la seguente:
Un utente che entra ritira un tagliando su cui è impressa, su una banda magnetica, l'ora di ingresso. Alla partenza l'utente inserisce il tagliando nella cassa automatica, la quale leggendo l'ora corrente e l'ora di arrivo, calcola l'importo.
Si chiede di scrivere il programma per calcolare l'importo totale
Nel seguente diagramma di flusso sono descritte le operazioni che si devono eseguire per calcolare l'importo totale:
Si leggono le ore di arrivo e di partenza e i loro valori vengono memorizzati nelle varibili HAr e HPar .
Si controlla se le ore rientrano nella stessa giornata
Si calcola il numero di ore di sosta H ← HPar-HAr
Se H=1 il calcolo è terminato
altrimenti se H è < 5 si deve sommare all'importo dovuto per la prima ora, il prodotto tra la tariffa oraria imposta dalla seconda alla quinta ora, moltiplicata per il numero di ore di sosta successive alla seconda e il calcolo termina.
Altrimenti bisogna aggiungere all'importo dovuto per le prime 5 ore di sosta, il prodotto della tariffa oraria imposta oltre la quinta ora per il numero di ore di sosta successive alla quinta.
Per mostrare che un problema può essere risolto con metodi diversi, e il programmatore deve sapere confrontare i costi (occupazione di memoria e tempo di esecuzione) e scegliere il più conveniente, si mostra una diversa soluzione del problema:
Si leggono le ore di arrivo e di partenza e i loro valori vengono memorizzati nelle varibili HAr e HPar .
Si controlla se le ore rientrano nella stessa giornata
Si calcola il numero di ore di sosta H ← HPar-HAr, si parte con il costo della prima ora e si decrementa di una unità il numero di ore che restano da conteggiare
Se H=0 il calcolo è terminato
altrimenti, al Costo si aggiunge 3 fino a raggiungere l'importo dovuto per le prime 5 ore di sosta o fino a quando sono state conteggiate tutte le ore.
In ogni caso si aggiunge al costo il numero di ore residue (che possono anche essere 0) per la tariffa oraria dovuta dalla sesta ora in poi