Economia Aziendale Sistemi di Elaborazione delle Informazioni Università degli Studi di Enna “Kore” Mario Collotta [email protected] 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 blocco azione I/O (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