ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo INPUT: x,y,z INPUT: dati iniziali AZIONI OUTPUT: esempio: risultato Somma x ed y Somma z al risultato OUTPUT: x+y+z Algoritmo: Sequenza di azioni per svolgere il calcolo Programma: Algoritmo espresso in notazione formale (linguaggio di programmazione) Creazione programma: Fase 1 = algoritmo Fase 2 = implementazione in dato linguaggio (C) Vedremo: Elementi di base per semplici algoritmi e programmi ALGORITMI Tecniche algoritmiche permettono di risolvere problemi • Trasmissione dati in Internet • come si gestisce in pratica il flusso di dati nella rete? • Ricerca nel WEB • come fa Google a trovare le informazioni nel WEB? • Bioinformatica • come il DNA determina le nostre caratteristiche? • Processi economici • come si gestiscono le aste on-line su Ebay? • come si effettua la compravendita di azioni su Internet? • Organizzazione di risorse e servizi • come si schedulano i voli delle aerolinee? • come si assegnano le frequenze nelle celle delle reti cellulari? Il termine Algoritmo deriva dal matematico Arabo al-Khwarizmı (c. 780-850), autore del testo Al-jabrw’al-muqabâla (da cui anche il termine Algebra) Algoritmi di tipo numerico furono studiati da matematici babilonesi ed indiani più di di 3000 anni fa. Algoritmi in uso fino a tempi recenti furono studiati dai matematici greci nel 500 a.C. Esempio: Algoritmo di Euclide per il Massimo Comun Divisore Esempio: Algoritmi geometrici (calcolo di tangenti, sezioni di angoli, ...) Algoritmo: procedura computazionale che • prende certi valori in input (ingresso) e • produce i valori richiesti in output (uscita) Un esempio si prepara ad un’uscita galante... Va in profumeria, ma vuole risparmiare … Come identificare il profumo più economico? 0. Prendi la prima bottiglia, 1. Vai alla prossima bottiglia nello scaffale 2. Confronta il prezzo sulla bottiglia nello scaffale con quello in mano 3. Se e’ minore scambia la bottiglia in mano con quella sullo scaffale 4. Se ci sono bottiglie non controllare, allora ripeti da 1. 5. Se le bottiglie sono finite, la bottiglia più economica è quella in mano Algoritmo: procedura computazionale che • prende certi valori in input (ingresso) e • produce i valori richiesti in output (uscita) _______________ Problema: determina il profumo più economico Input: profumi con relativi costi Output: profumo di costo minimo Algoritmo: 0. 1. 2. 3. 4. 5. Prendi la prima bottiglia, Vai alla prossima bottiglia nello scaffale Confronta il prezzo sulla bottiglia nello scaffale con quello in mano Se è minore scambia la bottiglia in mano con quella sullo scaffale Se ci sono bottiglie non controllare, allora ripeti da 1. Se le bottiglie sono finite, la bottiglia più economica è quella in mano Procedura computazionale per ottenere la relazione costi/costo minimo Riassumendo Un’algoritmo è una serie di operazion non ambigue ed efficientemente computabili, che una volta eseguite producono un risultato in un tempo finito Se possiamo specificare un algoritmo allora possiamo automatizzare la soluzione Definire il problema • Eliminare le ambiguità nella formulazione del problema • Individuare il risultato che si vuole ottenere, gli obiettivi da raggiungere • Evidenziare – le regole da rispettare – i vincoli interni ed esterni – i dati espliciti ed impliciti • Eliminare i dettagli inutili ed ambigui Relazione tra Realtà e Modello Ricerca della soluzione Costruzione modello Mondo Reale Modello re tf ft 12 13 tt 14 15 F=m×a Interpretazione della soluzione Scegliere astrazione: definire un Insieme di dati che rappresentano la realta’ (modello di dati) Risolvere problema Scegliere rappresentazione della informazione (struttura dati) Algoritmo e programma Es. Archivio impiegati contiene insieme di dati rilevanti (astrazione) su ogni impiegato Rilevanti: Nome, stipendio, mansione Non rilevanti: altezza, peso, colore occhi, colore capelli Algoritmo Un algoritmo è una sequenza finita di passi elementari che descrive come risolvere in un tempo finito un problema Un esempio Come identificare il profumo più economico? 0. Prendi la prima bottiglia, 1. Vai alla prossima bottiglia nello scaffale 2. Confronta il prezzo sulla bottiglia nello scaffale con quello in mano 3. Se è minore scambia la bottiglia in mano con quella sullo scaffale 4. Se ci sono bottiglie non controllare, allora ripeti da 1. 5. Se le bottiglie sono finite, la bottiglia più economica è quella in mano • E’ un algoritmo? • La soluzione è corretta? • Quanto tempo prende? Algoritmo Un algoritmo è una sequenza finita di passi elementari che descrive come risolvere in un tempo finito un problema Altri esempi di algoritmi: • Istruzioni di montaggio • Preparazione del caffè • Prelievo bancomat • Preparazione di un ricetta • Calcolo del massimo comun divisore tra due interi Algoritmo Dati iniziali ALGORITMO Dati finali (soluzione) Algoritmo: sequenza di azioni elementari che consenta di trasformare i dati iniziali nei risultati finali attraverso un numero finito di passi, elementari e non ambigui. Note: • Insieme di dati iniziali ben definito • Sequenza di passi può essere eseguita da un opportuno esecutore (es. calcolatore). Algoritmo Dati iniziali ALGORITMO Dati finali (soluzione) Proprietà fondamentali di un Algoritmo • Correttezza; produce sempre una soluzione • Efficienza: L’algoritmo perviene alla soluzione del problema usando la minor quantità possibile di risorse fisiche, quali tempo di esecuzione, memoria, …. Algoritmo Dati iniziali ALGORITMO Dati finali (soluzione) Ricapitolando, un algoritmo deve essere: • applicabile a qualsiasi insieme di dati di ingresso appartenenti al dominio di definizione dell’algoritmo • costituito da operazioni appartenenti ad un determinato • insieme di operazioni fondamentali • costituito da regole non ambigue, cioè interpretabili in modo univoco qualunque sia l’esecutore (persona o “macchina”) che le legge Un esempio Come identificare il profumo più economico? 0. Prendi la prima bottiglia, 1. Vai alla prossima bottiglia nello scaffale 2. Confronta il prezzo sulla bottiglia nello scaffale con quello in mano 3. Se è minore scambia la bottiglia in mano con quella sullo scaffale 4. Se ci sono bottiglie non controllare, allora ripeti da 1. 5. Se le bottiglie sono finite, la bottiglia più economica è quella in mano • Dati ingresso? • Operazioni? • Esecutore? Algoritmo Esempio: prendere l’automobile 1. Aprire l’auto 2. Aprire la portiera 3. Sedersi al posto di guida 4. Schiacciare la frizione 5. Avviare il motore 6. Inserire la prima marcia 7. Rilasciare “delicatamente” la frizione per partire I passi sono eseguiti in sequenza l'ordine delle istruzioni è essenziale per la correttezza Esempio: Biblioteca I libri sono disposti sugli scaffali •La posizione di ogni libro è fissa ed è individuata da due coordinate: -Scaffale(i.e. numero dello scaffale) -Posizione nello scaffale •La biblioteca è dotata di uno schedario (ordinato per autore/i e titolo). Ogni scheda contiene, nell’ordine: -cognome e nome dell’autore -titolo del libro -data di pubblicazione -numero dello scaffale in cui si trova -posizione attribuita al libro nello scaffale. Esempio: Biblioteca Esempio di scheda Autore/i:Sciuto, DonatellaBuonanno, GiacomoMari, Luca Titolo:Introduzione ai Sistemi Informatici, III Edizione, 2005 Scaffale:22 Posizione:11 Esempio: Biblioteca Formulazione dell’algoritmo 1.Decidi il libro da richiedere 2.Preleva il libro richiesto Raffinamenti successivi : se un passo non è direttamente comprensibile ed eseguibile dall’esecutore (operazione semplice), occorre dettagliarlo a sua volta mediante un ulteriore algoritmo. Esempio: Biblioteca Un algoritmo per il prelievo 1.Decidi il libro da richiedere 2.Cerca la scheda del libro richiesto 3.Segnati numero scaffale e posizione 4.Cerca lo scaffale indicato 5.Accedi alla posizione indicata e preleva il libro 6.Scrivi i tuoi dati sulla "scheda prestito" Esempio: Biblioteca Il sotto-algoritmo di ricerca 1.Prendi la prima scheda. 2.Esamina se titolo e autore/i sono quelli cercati. In caso positivo la ricerca termina con successo, altrimenti passa alla scheda successiva e ripeti. 3.Se esaurisci le schede il libro cercato non esiste. Esempio: Biblioteca Un algoritmo per il prelievo 1.Decidi il libro da richiedere 2.Cerca la scheda del libro richiesto come segue: 2.1. Prendi la prima scheda. 2.2. Esamina se titolo e autore/i sono quelli cercati. In caso positivo la ricerca termina con successo, altrimenti passa alla scheda successiva e ripeti. 2.3. Se esaurisci le schede il libro cercato non esiste. 3.Segnati numero scaffale e posizione 4.Cerca lo scaffale indicato 5.Accedi alla posizione indicata e preleva il libro 6.Scrivi i tuoi dati sulla "scheda prestito"