Economia Aziendale Sistemi di Elaborazione delle Informazioni Università degli Studi di Enna Kore Mario Collotta mario.collotta@unikore.it 1
In questa lezione Algoritmi e diagrammi di flusso
Consultazione di una carta geografica (per decidere percorsi automobilistici) In genere, la selezione di un luogo di villeggiatura non obbedisce a un rigido algoritmo. Al contrario, il problema di trovare la via più breve per andare in auto da una città all altra può essere risolto mediante un algoritmo.
Si trovano tutte le sequenze di città che determinano un itinerario tra le due città. Più precisamente, siano cp e ca rispettivamente la città di partenza e la città di arrivo: si individuano e si memorizzano, ognuna su un diverso pezzo di carta, tutte le sequenze {c0, c1, c2,, ck} di nomi di città, tali che: nessuna città compaia due volte nella sequenza; il primo elemento della sequenza, c0, coincida con cp, e l ultimo, ck, coincida con ca; per ogni coppia di elementi contigui, <ci, ci+1>, esista un tratto di strada che li unisce; il tratto di strada non può ovviamente attraversare alcuna città.
Per ogni sequenza, si calcola la somma delle distanze dei vari tratti di strada e la si memorizza accanto alla sequenza. Si individua la sequenza per cui il valore della somma delle distanze è minimo e la si sceglie come strada più breve. Se per caso si trovasse più di un itinerario con la stessa distanza totale tra cp e ca, se ne sceglierebbe uno arbitrariamente (per esempio il primo trovato). Se non si trova alcun itinerario, per esempio perché cp e ca sono separate dal mare, non esiste alcuna soluzione.
Lezioni ricavate: Un problema complesso si può risolvere scomponendolo in problemi meno complessi fino ad arrivare a problemi elementari; Quali siano i problemi elementari (risolvibili immediatamente) dipende da chi/ che cosa è il risolutore; Trovato un algoritmo non è detto che questo sia l unico né tantomeno il migliore per risolvere il nostro problema (nel caso specifico ne esistono certamente di migliori da vari punti di vista); Quando potremo stabilire che l algoritmo da noi elaborato è eseguibile da una macchina?! Dobbiamo conoscere, almeno un po, la macchina!
Cos è un algoritmo
Risolvere un problema significa individuare un procedimento (algoritmo) che, eseguito, fornisce informazioni finali(risultati) dipendenti da informazioni iniziali (dati). Il procedimento risolutivo è costituito da un insieme di passi (istruzioni), ognuno dei quali specifica una operazione elementare.
Un algoritmo deve rispettare alcune proprietà:
Algoritmo L esecuzione di un algoritmo si traduce in una successione di operazioni che vengono effettuate nel tempo. L esecuzione di un algoritmo evoca un processo sequenziale cioè una serie di eventi che occorrono uno dopo l altro, ognuno con un inizio ed una fine ben identificabile.
Compito del programmatore:
Esempio: Trova il max tra due numeri
Non è un algoritmo la seguente discussione:
Algoritmo
Esecuzione di un algoritmo
Diagrammi di flusso
I diagrammi di flusso sono dei disegni che rappresentano graficamente un nostro ragionamento rappresentandolo come algoritmo In tal modo si ha: una comprensione immediata del funzionamento del nostro percorso logico, un controllo accurato sulla funzionalità e la casistica del ragionamento.
blocco iniziale blocco finale blocco di lettura/scrittura I/O blocco azione ( Elaborazione ) Alcuni simboli! blocco di controllo
Perché i diagrammi di flusso?
Programma
Programma = dati + istruzioni Programma: sequenza di operazioni svolte da un elaboratore per risolvere un problema. Dati: la descrizione dei dati e effettuata attraverso dichiarazioni e definizioni. Istruzioni: le operazioni effettuate in un programma elaborano sostanzialmente dei dati.
Esempio Dati due numeri, trovare il maggiore. STOP
Diagrammi di flusso
Programmazione strutturata