MASTER Information Technology Excellence Road (I.T.E.R.) Problemi, Algoritmi e Programmi Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Introduzione Problema da risolvere Come trovare la stazione Come cucinare l anatra all arancia? Procedimento per risolvere il problema La strada più breve per la stazione Una ricetta per l anatra all arancia Agente di calcolo Il turista Il cuoco Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 2
Problem Solving Uno degli scopi fondamentali dell informatica è La risoluzione di problemi Problema: Compito che si vuole fare risolvere automaticamente al calcolatore Agente di di calcolo Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 3 Problem Solving (continuo ) I problemi che siamo interessati a risolvere sono di natura molto varia Trovare il maggiore tra due numeri Dato un elenco di nomi e numeri di telefono trovare il numero di una certa persona Dati a e b risolvere l equazione ax+b=0 Stabilire se una parola precede alfabeticamente un altra Prenotare aerei, treni, hotel, Ordinare un elenco di nomi Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 4
Problem Solving (continuo ) Acquisire i dati Input Elaborazione Presentare i risultati Output Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 5 Esempio: Somma Totale n1, n2 n2 = Totale n1 n1 + n2 n2 Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 6
Attività per Risolvere un Problema Comprendere il problema Definire il procedimento risolutivo (algoritmo) Implementare l algoritmo in un linguaggio di programmazione Prova Documentazione Manutenzione Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 7 Comprendere il Problema Focalizzare gli obiettivi Evidenziare Le regole I dati espliciti ed impliciti Eliminare i dettagli inutili ed ambigui Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 8
Attività per Risolvere un Problema Comprendere il problema Definire il procedimento risolutivo (algoritmo) Implementare l algoritmo in un linguaggio di programmazione Prova Documentazione Manutenzione Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 9 Algoritmo Descrizione rigorosa delle azioni da compiere per risolvere un problema di qualsiasi genere Esempi La strada più breve per la stazione Una ricetta per l anatra all arancia Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 10
Descrizione Rigorosa L indicazione prendi la seconda traversa a destra e poi la prima a sinistra può essere espressa in forma rigorosa così: 1. C e una strada a destra? Se sì, va al punto 3. 2. Vai avanti fino ad un incrocio; vai al punto 1. 3. Vai avanti fino ad un incrocio 4. C è una strada a destra? Se no, vai al punto 3. 5. Svolta a destra 6. Vai avanti fino ad un incrocio 7. C è una strada a sinistra? Se no, vai al punto 6. 8. Svolta a sinistra 5 8 3 Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 11 Esempio: l Area di una Campana r=b/2 h 2 b h 1 B Area della campana = A1 + A2 + A3 A1 = (B + b) h 1 /2 Sottoproblema 1 A2 = b h 2 A3 = 1/2πr 2 Sottoproblema 2 Sottoproblema 3 Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 12
Esempio: Gestione di una Biblioteca Libri esposti sugli scaffali La posizione di ogni libro è fissa ed individuata da due coordinate Numero dello scaffale Posizione nello scaffale La biblioteca è dotata di uno schedario (ordinato per autore. Ogni scheda contiene Cognome e nome dell autore Titolo del libro Numero dello scaffale Posizione nello scaffale Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 13 Esempio di scheda Autore: Manzoni Titolo: I promessi Sposi Scaffale: 33 Posizione: 13 Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 14
Problema Trovare un libro! Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 15 Formulazione dell Algoritmo Cerca la scheda del libro nello schedario Segnati numero scaffale e posizione Cerca lo scaffale indicato Accedi alla posizione indicata e preleva il libro Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 16
Primo sotto-algoritmo di Ricerca Prendi la prima scheda dello schedario Se titolo e autore sono quelli cercati, la ricerca termina con successo altrimenti passa alla scheda successiva Continua di scheda in scheda finchè non trovi quella cercata. Se vengono esaurite le schede, il libro cercato non esiste. Devi cercare il libro in un altra biblioteca. Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 17 Secondo sotto-algoritmo di Ricerca Esamina la scheda centrale dello schedario Se la scheda centrale corrisponde al libro cercato allora la ricerca termina In caso contrario procedi allo stesso modo nella metà superiore o inferiore dello schedario a seconda che il libro cercato segua o preceda quello indicato sulla scheda Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 18
Qualità degli Algoritmi Correttezza L algoritmo permette effettivamente di risolvere il problema Efficienza L esecutore dell algoritmo richiede un numero limitato di risorse Un algoritmo è tanto più efficiente quanto meno risorse richiede per la sua esecuzione. Una risorsa importante è il tempo di esecuzione Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 19 Esempio: Gestione Biblioteca Entrambi gli algoritmi sono corretti Il secondo algoritmo è più efficiente del primo Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 20
Attività per Risolvere un Problema Comprendere il problema Definire il procedimento risolutivo (algoritmo) Implementare l algoritmo in un linguaggio di programmazione Prova Documentazione Manutenzione Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 21 Implementazione di un Algoritmo L algoritmo deve essere codificato in un linguaggio Linguaggi Linguaggi naturali Linguaggi artificiali Usati dagli uomini per comunicare Complessi Ambigui Usati in informatica (linguaggi di programmazione) Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 22
Alcuni Linguaggi di Programmazione Fortran (metà degli anni 50) Formula Translator Cobol (metà degli anni 50) Common Business-Oriented Language Pascal (inizio degli anni 70) Dal matematico francese Blaise Pascal primo ad ideare una macchina calcolatrice (la Pascalina) C (inizi degli anni 70) Prolog (inizi degli anni 70) Programming in Logic Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 23 Il Linguaggio C Il linguaggio C è stato sviluppato intorno al 1972, nei Bell Laboratories AT&T americani, da Dennis Ritchie E nato come linguaggio di sviluppo del Sistema Operativo Unix Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 24
Sintassi e Semantica Linguaggio Sintassi Semantica Insieme delle regole che consentono di scrivere correttamente le frasi di un linguaggio Disciplina che studia il significato delle parole e delle frasi Livello Forma corretta Forma non corretta Sintattico Semantico Sono andato a scuola Il gatto è un animale Ho andato a scuola L albero è un animale Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 25 Programma Testo (cioè sequenza di istruzioni) scritto in accordo alla sintassi e semantica di un linguaggio di programmazione Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 26
Linguaggio Macchina Un calcolatore non è in grado di eseguire direttamente programmi scritti in linguaggi ad alto livello Un calcolatore è in grado di eseguire direttamente solo programmi scritti nel proprio linguaggio macchina 100101001010 010101001011 101010010101 101010100101 Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 27 Linguaggio macchina (cont.) Il linguaggio macchina è: Linguaggio di programmazione comprensibile direttamente dal calcolatore Molto elementare e primitivo: sequenza di cifre binarie. Ad esempio una possibile istruzione potrebbe essere: 11101011110100101010010101001010 per identificare un operazione di somma tra operandi contenuti nel primo e nel terzo registro e che pone il risultato nel dodicesimo registro E difficile da comprendere per un essere umano Specifico per un calcolatore Calcolatori differenti supportano linguaggi macchina differenti Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 28
Traduzione Per rendere un programma (scritto in un linguaggio ad alto livello) eseguibile sul calcolatore occorre tradurre il programma in un programma equivalente scritto nel linguaggio macchina del calcolatore La traduzione può avvenire in due modi Compilazione Interpretazione Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 29 Compilazione Un programma scritto in un linguaggio ad alto livello viene trasformato in un programma scritto in linguaggio macchina e poi può essere eseguito più volte senza dover tradurre nuovamente il programma Programma scritto in linguaggio C Compilatore 100101001010 010101001011 101010010101 101010100101 Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 30
Interpretazione Traduzione riga per riga Ciscuna istruzione del programma scritto in un linguaggio di programmazione ad alto livello viene trasformata in istruzioni del linguaggio macchina ed eseguita Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 31 Compilazione ed Interpretazione La compilazione è assimilabile al processo di traduzione, da una lingua ad un altra, di un libro L interpretazione è assimilabile al processo di traduzione simultanea Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 32
Compilazione vs. Interpretazione Compilazione Vantaggi Creazione di programmi eseguibili Velocità di esecuzione del programma Svantaggi Portabilità del codice su altre piattaforme Interpretazione Vantaggi Portabilità del codice Svantaggi Lenta esecuzione Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 33 Attività per Risolvere un Problema Comprendere il problema Definire il procedimento risolutivo (algoritmo) Implementare l algoritmo in un linguaggio di programmazione Prova Documentazione Manutenzione Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 34
Prova compilazione Compilatore Errori di sintassi Inserimento e correzione esecuzione Sistema di di esecuzione Risultati ed errori in esecuzione verifica Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 35 Attività per Risolvere un Problema Comprendere il problema Definire il procedimento risolutivo (algoritmo) Implementare l algoritmo in un linguaggio di programmazione Prova Documentazione Manutenzione Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 36
Documentazione Scrivere un manuale d uso che accompagni il programma Questo manuale deve essere scritto facendo uso della terminologia tipica del problema e non in gergo computeristico Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 37 Attività per Risolvere un Problema Comprendere il problema Definire il procedimento risolutivo (algoritmo) Implementare l algoritmo in un linguaggio di programmazione Prova Documentazione Manutenzione Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 38
Manutenzione Non esistono parti del programma soggette ad usura! Manutenzione del programma = Modificarlo Aggiornarlo Estenderlo Renderlo più veloce... Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 39 Riepilogo Problema Algoritmo Programma Problema Compito che si vuole fare risolvere automaticamente al calcolatore Algoritmo Descrizione rigorosa delle azioni da compiere per risolvere il problema Programma Sequenza di istruzioni in un linguaggio di programmazione. Scopo del programma: fornire al calcolatore le capacità per risolvere un dato problema Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 40