Problema. Data una sequenza di numeri, trovare il maggiore.
Soluzione proposta. Per determinare il maggiore di una sequenza di numeri si può pensare di procedere nel modo seguente:
- Prelevare il primo numero.
- Procurarsi gli altri numeri uno alla volta e ogni volta memorizzare solo quello che risulta essere il maggiore fino a quel momento.
Adottando questa strategia risolutiva si osserva che dopo la lettura del primo numero e la sua memorizzazione in una variabile (max), si individuano alcune azioni che si ripetono:
- Lettura di un nuovo numero della sequenza (memorizzazione in una variabile, v).
- Confronto del numero appena letto con quello che risulta essere il maggiore fra i numeri letti fino a quel momento e che si trova nella variabile max.
- Quindi, aggiornamento della variabile max se il nuovo numero letto risulta essere maggiore.
I passi individuati vanno ripetuti un numero di volte (che possiamo contare utilizzando una variabile contatore, c) pari a quanti sono i numeri della sequenza (q) meno uno. Il valore di q non è noto a priori e possiamo richiederlo in input.
Con le variabili individuate durante l’analisi e descritte nella seguente tabella, si ottiene il seguente algoritmo.
Flow chart e pseudocodice dell’algoritmo
1 2 3 4 5 6 7 8 9 10 11 12 13 |
INIZIO LEGGI(q) LEGGI(max) c=1 MENTRE (c≤q-1) RIPETI LEGGI(v) SE v>max ALLORA max=v FINE SE c=c+1 FINE MENTRE SCRIVI(max) FINE |
Flow chart e pseudocodice dell’algoritmo equivalente finale
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
INIZIO LEGGI(q) c=1 MENTRE (c≤q) RIPETI LEGGI(v) SE c=1 ALLORA max=v ALTRIMENTI SE v>max ALLORA max=v FINE SE FINE SE c=c+1 FINE MENTRE SCRIVI(max) FINE |
P.S. Il secondo algoritmo progettato facilita l’attività di debugging, in particolar modo per quel che riguarda la gestione degli errori di runtime dovuti agli input non validi (per approfondimenti: La gestione strutturata degli errori di runtime).