IL CONCETTO DI ALGORITMO Definizione di Algoritmo Un

  • Slides: 18
Download presentation
IL CONCETTO DI ALGORITMO

IL CONCETTO DI ALGORITMO

Definizione di Algoritmo Un algoritmo è un elenco finito di istruzioni univocamente interpretabili, ciascuna

Definizione di Algoritmo Un algoritmo è un elenco finito di istruzioni univocamente interpretabili, ciascuna delle quali deve essere precisamente definita e la cui esecuzione si arresta per fornire i risultati di una classe di problemi per ogni valore dei dati di ingresso. In generale un algoritmo può essere visto come una funzione da un dominio d’ingresso ad uno d’uscita. Dati(Input) x Algoritmo Dati(Output) f(x)

Per definire un algoritmo occorre • • Condurre un'attenta analisi del problema. Individuare i

Per definire un algoritmo occorre • • Condurre un'attenta analisi del problema. Individuare i possibili ingressi. Precisare le uscite. Definire completamente e dettagliatamente la sequenza dei passi che portano alla soluzione.

Proprietà di un algoritmo • Non ambiguità: le istruzioni devono essere univocamente interpretabili dall’esecutore

Proprietà di un algoritmo • Non ambiguità: le istruzioni devono essere univocamente interpretabili dall’esecutore dell’algoritmo • Eseguibilità: l’esecutore deve essere in grado di eseguire ogni istruzione in un tempo finito. • Finitezza: l’esecuzione di un algoritmo deve terminare in un tempo finito per ogni insieme di valori in ingresso. • Realizzabilità: l’esecutore deve essere in grado di eseguire l’algoritmo con le risorse a sua disposizione (informazioni + tecnologia). • Generalità: un algoritmo, compatibilmente con i vincoli espressi dal problema, si occupa della risoluzione di famiglie di problemi.

Proprietà di un algoritmo • Correttezza: l’algoritmo permette effettivamente di risolvere il problema, e

Proprietà di un algoritmo • Correttezza: l’algoritmo permette effettivamente di risolvere il problema, e eseguito più volte e da diversi esecutori, a parità di premesse, deve giungere a medesimi risultati. • Efficienza: l’esecuzione dell’algoritmo richiede un uso limitato di risorse. • Leggibilità: essere facilmente comprensibile. • Modificabilità: essere facilmente modificabile, a fronte di (piccole) modifiche nelle specifiche del problema risolto dall’algoritmo. Con il termine algoritmo, quindi si indica una sequenza finita di passi effettuabili per risolvere una classe di problemi in un tempo finito.

Algoritmi equivalenti Due algoritmi si dicono equivalenti quando: • Hanno lo stesso dominio di

Algoritmi equivalenti Due algoritmi si dicono equivalenti quando: • Hanno lo stesso dominio di ingresso; • Hanno lo stesso dominio di uscita; • In corrispondenza degli stessi valori nel dominio di ingresso producono gli stessi valori nel dominio di uscita. Due algoritmi equivalenti: • Forniscono lo stesso risultato • Ma possono avere diversa efficienza • E possono essere profondamente diversi!

Come si costruisce un algoritmo Scrivere un algoritmo è una attività complessa. Una metodologia

Come si costruisce un algoritmo Scrivere un algoritmo è una attività complessa. Una metodologia efficace nella progettazione degli algoritmi è basata sulla strategia top-down (dall’alto verso il basso). • La strategia top-down consiste nel spezzare, frantumare, analizzare, decomporre il lavoro da fare o il compito/attività da eseguire in sotto-problemi o semplici attività/istruzioni. • Lo scopo è quello di individuare delle fasi del lavoro e in quale sequenza devono essere eseguite, in modo che si arrivi ad una soluzione congiunta di tutti i sotto-problemi per portare a termine il lavoro o compito assegnato che costituisce la soluzione del problema iniziale. • Occorre creare una procedura di lavoro.

Una metodologia per la progettazione di algoritmi Progettazione di algoritmi per raffinamenti successivi: 1)

Una metodologia per la progettazione di algoritmi Progettazione di algoritmi per raffinamenti successivi: 1) Scrivi una versione iniziale dell’algoritmo. • una sequenza di uno o più passi. 2) Raffina ciascun passo dell’algoritmo, fintanto che l’algoritmo non sia completo di tutti i dettagli. • il raffinamento di un passo consiste nella sostituzione del passo con una istruzione semplice o con una istruzione di controllo. 3) La progettazione di un algoritmo per raffinamenti successivi è una attività iterativa. • il raffinamento di un passo può richiedere ulteriori raffinamenti.

Quali ragionamenti fare… • Nell’ideare un algoritmo torna utile anche pensare ai ragionamenti intuitivi

Quali ragionamenti fare… • Nell’ideare un algoritmo torna utile anche pensare ai ragionamenti intuitivi che facciamo mentalmente per risolvere alcuni problemi. • Talvolta la costruzione di un algoritmo si può avvalere di questi ragionamenti. • Si tratta proprio di rendere espliciti questi ragionamenti, renderli concreti, ancorandoli con i costrutti dell’algoritmo.

Elementi degli algoritmi Costanti e Variabili possono rappresentare: Dati iniziali del problema, informazioni ausiliarie,

Elementi degli algoritmi Costanti e Variabili possono rappresentare: Dati iniziali del problema, informazioni ausiliarie, risultati parziali, risultati finali. • Un dato è costante quando il suo valore non può essere aggiornato durante l’esecuzione dell’algoritmo. • Una variabile è una coppia nome, valore, che può essere immaginata come una scatola sulla quale è scritto un nome e che può contenere al suo interno un valore.

Elementi degli algoritmi • L’assegnamento: è l’operazione che permette di modificare il valore di

Elementi degli algoritmi • L’assegnamento: è l’operazione che permette di modificare il valore di una variabile. • L’operazione di assegnamento va fatta con il nome di una e una sola variabile, e può esserci assegnata una costante, una variabile o anche un’espressione complessa. • Il tipo di dato della variabile deve essere compatibile con il tipo di dato assegnato/ottenuto dall’espressione.

Elementi degli algoritmi 1) Operatori aritmetici: +, -, , /, . . . •

Elementi degli algoritmi 1) Operatori aritmetici: +, -, , /, . . . • agiscono sugli operandi (variabili o costanti). • producono un valore numerico. 2) Operatori di confronto: >, =, <, . . . • agiscono sugli operandi (variabili o costanti). • producono un valore logico (vero o falso). 3) Funzioni: cos(x), log(x), . . . • agiscono su valori detti parametri (variabili oppure costanti). • producono un valore.

Elementi degli algoritmi 1) Procedure: Leggi(X), Scrivi(N), . . . • agiscono su valori

Elementi degli algoritmi 1) Procedure: Leggi(X), Scrivi(N), . . . • agiscono su valori detti parametri. • effettuano operazioni. 2) Espressione: 5+cos(Y), . . . • composizione di operatori, funzioni, variabili e costanti. • ad essa è associato un valore.

Elementi degli algoritmi Strutture di controllo: 1) Sequenza: le operazioni sono eseguite una in

Elementi degli algoritmi Strutture di controllo: 1) Sequenza: le operazioni sono eseguite una in seguito all’altra 2) Selezione: blocchi di operazioni sono eseguite in alternativa 3) Iterazione: blocchi di operazioni sono eseguite diverse volte

Come si rappresenta un algoritmo 1) I diagramma di flusso: • elementi grafici per

Come si rappresenta un algoritmo 1) I diagramma di flusso: • elementi grafici per indicare il flusso di controllo e i tipi di operazioni. • elementi testuali per descrivere le operazioni e gli oggetti. 2) Pseudo-codice: • completamente testuale. • costrutti di controllo descritti con la forma e le parole chiave dei linguaggi di programmazione. • le operazioni possono essere descritte in modo informale.

Esempi START Calcolo dell’area di un rettangolo: Leggi Altezza (H) • Input dell’altezza (H)

Esempi START Calcolo dell’area di un rettangolo: Leggi Altezza (H) • Input dell’altezza (H) • Input della base (B) • Calcola l’area con la moltiplicazione di base per altezza (B x H) • Output del risultato (Area) Leggi Base (B) Area = B x H Stampa Area STOP

Esempi START Verifica del max tra due numeri: Leggi Numero (A) • Input del

Esempi START Verifica del max tra due numeri: Leggi Numero (A) • Input del primo numero(A) Leggi Numero (B) • Input del secondo numero (B) • Confronta se A e maggiore di B (A > B) V F A>B • Allora A è max • Altrimenti B è max Stampa A max Stampa B max • Output del risultato STOP

Esempi Realizzare la somma di N numeri inseriti in Input: START Leggi quantità (N)

Esempi Realizzare la somma di N numeri inseriti in Input: START Leggi quantità (N) • Input della quantità di numeri (N) da sommare • Assegna ad i e ad Somma il valore 0 (zero) • Ripeti fino a quando i è minore di N (i < N) • Input del numero (num) • Aggiungi a Somma il numero inserito (Somma = Somma + num) • Incrementa i di 1 • Output stampa della Somma i = 0 ; Somma = 0 i<N NO SI Leggi Num Somma = Somma + Num i = i+1 Stampa Somma STOP