Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. Algoritmi Algoritmi Algoritmo: sequenza di passi che portano alla soluzione di un problema. L'algoritmo deve essere comprensibile al suo esecutore. I calcolatori elettronici sono degli esecutori di algoritmi. Esecutore: chi esegue le azioni dell'algoritmo. Può essere un calcolatore elettronico o un essere umano. Programmi: descrivono gli algoritmi in termini di sequenze di istruzioni scritte in un opportuno linguaggio di programmazione, comprensibile al calcolatore. Gli algoritmi possono essere espressi in diverse forme - linguaggio naturale - in forma grafica - utilizzando i costrutti di un linguaggio di programmazione. Compito del programmatore: Un algoritmo deve rispettare alcune proprietà: 1. individuare la sequenza di passi che portano alla soluzione del problema e produrre il relativo algoritmo; - non ambiguità: le indicazioni (istruzioni) devono essere interpretabili in modo univoco dall'esecutore - eseguibilità: l'esecutore deve poter eseguire ogni istruzione con le risorse a sua disposizione - finitezza: l'esecuzione dell'algoritmo deve terminare in un tempo finito Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. Affinché un calcolatore possa eseguire l'algoritmo, questo deve essere espresso in una forma comprensibile al calcolatore. 1 Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. 2. codificare l'algoritmo in un programma. Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. 2 Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. Algoritmi Algoritmi Il calcolatore è privo di "buon senso" ed esegue i programmi passo passo per come questi sono scritti Se l'algoritmo di partenza è sbagliato, il calcolatore produce un risultato errato Un algoritmo deve avere due caratteristiche fondamentali: • • correttezza:compiere tutte le azioni necessarie nel modo giusto efficienza: pervenire alla soluzione del problema nel modo più veloce possibile Se esistono più algoritmi per la risoluzione di un problema, il programmatore dovrà scegliere quello più efficiente. Esempio: dati due numeri, trovare il maggiore Algoritmo in linguaggio naturale: -leggi il primo numero e memorizzalo in A -leggi il secondo numero e memorizzalo in B -se A≥B poni MAX=A, altrimenti poni MAX=B In questo algoritmo - ogni passo è interpretabile in modo univoco - siamo in grado di eseguire le azioni descritte (conosciamo i numeri) - l'esecuzione richiede un tempo finito Possiamo rendere l'algoritmo più efficiente in questo modo: -leggi il primo numero e memorizzalo in MAX -leggi il secondo numero e memorizzalo in B -se MAX<B allora poni MAX=B Se il primo numero è maggiore del secondo risparmiamo un'assegnazione rispetto all'algoritmo precedente → maggiore efficienza Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. 3 Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. 4 Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. Algoritmi Rappresentazione degli Algoritmi Non è un algoritmo la seguente descrizione: Diagrammi di flusso (o diagrammi a blocchi, o flow-chart): forma grafica di rappresentazione di algoritmi. - apri l'elenco telefonico in un punto approssimativamente vicino a quello in cui dovrebbe trovarsi il cognome della persona cercata; - a seconda che il cognome cercato sia prima o dopo tale punto, procedi indietro o avanti per gruppi di pagine fin quando non giungi alla pagina giusta - inizia una ricerca sequenziale fino a trovare il cognome o a verificare che manca. Un diagramma di flusso descrive dell'algoritmo e l'ordine di esecuzione. graficamente le istruzioni Alcuni simboli elaborazione In un algoritmo, ogni azione deve produrre lo stesso effetto ogni volta che viene eseguita a partire dalle stesse condizioni iniziali. ingresso/uscita Le indicazioni "approssimativamente vicino" e "gruppi di pagine" determinano ambiguità. scelta logica Inoltre, non si tiene conto della possibile esistenza di più abbonati con lo stesso cognome e nome inizio/fine linea di flusso Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. 5 Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. 6 Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. Diagrammi di flusso Dati due numeri, trovare il maggiore Perché i diagrammi di flusso? START - Sono un mezzo efficace di comunicazione tra il programmatore e chi deve capire il funzionamento dell'algoritmo. leggi A - Non richiedono la conoscenza di un linguaggio di programmazione, ma solo del problema affrontato. MAX :=A Uno stesso diagramma di flusso può essere codificato in diversi linguaggi di programmazione (es. C, PASCAL, FORTRAN, etc.) dando origine a più programmi. leggi B SI MAX< B MAX :=B NO Stampa MAX Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. STOP 7 Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. 8 Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. Diagrammi di flusso Programmazione strutturata I diagrammi di flusso possono presentarsi - ad un livello generale - ad un livello particolare, a seconda del livello di dettaglio con cui specificano le operazioni da compiere. Per costruire un programma sono necessari tre tipi di meccanismi di strutturazione: • E' opportuno procedere per fasi successive: 1. un diagramma a grandi linee per focalizzare le operazioni essenziali da compiere; 2. un diagramma di flusso più particolareggiato, che tenga conto di operazioni più semplici e più elementari. struttura di sequenza, che permette di comporre istruzioni ed eseguirle una di seguito all'altra; ha un solo ingresso ed una sola uscita. I I= INPUT (INGRESSO) O=OUTPUT (USCITA) Esempio O • struttura condizionale, che permette di eseguire una sola tra due o più istruzioni in base al valore di un'espressione booleana; I IF THEN ELSE O Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. 9 Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. • struttura di iterazione, che permette di eseguire ripetutamente un'istruzione sotto il controllo di un'espressione booleana. I I O O WHILE DO (Pascal) Ciclo a condizione iniziale REPEAT UNTIL (Pascal) Ciclo a condizione finale Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. 11 Ing. Lucia Lo Bello, Note di lezione, Corso di Fondamenti di Informatica per Elettrici, Università di Catania, A.A.1999-2000. 10