IL CONCETTO DI ALGORITMO

Slides:



Advertisements
Presentazioni simili
Linguaggi algoritmici
Advertisements

1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
Fondamenti di Informatica Algoritmi
Elementi di Informatica
Elementi di Informatica
Dall’algoritmo al programma.
ELEMENTI DI PROGRAMMAZIONE
PROGRAMMAZIONE: linguaggi
DIVERTIRSI CON SCRATCH
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
GLI ALGORITMI Appunti preparati dalla prof.ssa Maria D’Angelo.
Informatica Problemi e algoritmi. una situazione che pone delle domande cui si devono dare risposte. Col termine problema o situazione problematica s’indica.
Istruzioni e algoritmi. Istruzioni Operative I passi elementari che compongono l’algoritmo sono le istruzioni. Distinguiamo: Istruzioni di input Istruzioni.
Unità di apprendimento 6 Dal problema al programma.
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
INFORMATICA ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE.
Algoritmo algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta.
© 2007 SEI-Società Editrice Internazionale, Apogeo
LA PROGRAMMAZIONE: Algoritmi e programmi
La rappresentazione degli algoritmi
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
rielaborato da Atzeni-etal., Basi di dati, Capitolo 4
Introduzione al linguaggio C
MASSIMO COMUNE DENOMINATORE (M.C.D)
Dal problema al processo risolutivo
I DIAGRAMMI DI FLUSSO Vantaggi e svantaggi.
IL CONCETTO DI ALGORITMO
Dal problema al processo risolutivo
Unità di apprendimento 7
Strutture di controllo
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
TIPI PRIMITIVI TIPI STRUTTURATI
Programmazione strutturata
Forme per rappresentare l’algoritmo:
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
il problema dei problemi
Che cosa è un problema matematico
PON Docente: Maura Roberta Orlando I.C. Zingarelli, Bari
PON Docente: Maura Roberta Orlando I.C. Zingarelli, Bari
Programmazione e Laboratorio di Programmazione
I DIAGRAMMI DI FLUSSO Vantaggi e svantaggi.
Cos’è computabile? “si dicono computabili quelle funzioni che, in linea di principio, possono essere calcolate con un elaboratore adeguatamente.
Programmare.
Linguaggio C++ Selezione.
© 2007 SEI-Società Editrice Internazionale, Apogeo
START ALGORITMO PER L’ACCENSIONE DEL CELLULARE ACCENDI CELLULARE
Dall’analisi del problema alla definizione dell’algoritmo
Strutture di Controllo
Esempi di algoritmi.
Programmazione e Laboratorio di Programmazione
PROBLEMA: DATI DUE NUMERI, SCRIVERLI IN ORDINE CRESCENTE.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Definizione di linguaggio di programmazione
Teoria della computabilità
Programmazione e Laboratorio di Programmazione
Il Diagramma di Flusso Docente: Maria Savina Rossi Alunne:
Strategie di progetto Si possono utilizzare le strategie tipiche dello sviluppo di un processo di ingegnerizzazione (es. ingegneria del software). Strategie.
Unità D2 Dal problema all’algoritmo
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Informatica CdL Scienze e Tecniche Psicologiche a.a
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
Programmazione e Laboratorio di Programmazione
Informatica CdL Scienze e Tecniche Psicologiche a.a
Unità D1 L’informatica e il problem solving
La programmazione strutturata
Algoritmi.
ALGORITMO E’ una successione finita di passi che consente di risolvere tutti i problemi di una classe e di determinare il risultato. Caratteristiche: Finito.
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

IL CONCETTO DI ALGORITMO

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. Algoritmo Dati(Input) x Dati(Output) f(x)

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 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 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 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 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: Scrivi una versione iniziale dell’algoritmo. una sequenza di uno o più passi. 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. 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 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, 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 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 Operatori aritmetici: +, -, , /, ... agiscono sugli operandi (variabili o costanti). producono un valore numerico. Operatori di confronto: >, =, <, ... producono un valore logico (vero o falso). Funzioni: cos(x), log(x), ... agiscono su valori detti parametri (variabili oppure costanti). producono un valore.

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

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

Come si rappresenta un algoritmo 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. 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 Calcolo dell’area di un rettangolo: Input dell’altezza (H) START Calcolo dell’area di un rettangolo: 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 Altezza (H) Leggi Base (B) Area = B x H Stampa Area STOP

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

Esempi Realizzare la somma di N numeri inseriti in Input: 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 START Leggi quantità (N) i = 0 ; Somma = 0 i < N NO SI Leggi Num Stampa Somma Somma = Somma + Num STOP i = i+1