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 n Problema da risolvere èCome trovare la stazione èCome cucinare l’anatra all’arancia? n Procedimento per risolvere il problema èLa strada più breve per la stazione èUna ricetta per l’anatra all’arancia n Agente di calcolo èIl turista èIl cuoco Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 2 1 Problem Solving n Uno degli scopi fondamentali dell’informatica è èLa risoluzione di problemi n Problema: èCompito che si vuole fare risolvere automaticamente al calcolatore Agente Agente di di calcolo calcolo Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 3 Problem Solving (continuo…) n 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 2 Problem Solving (continuo…) Presentare i risultati Acquisire i dati Input Input Elaborazione Elaborazione Output Output 5 Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano Esempio: Somma n1, n1, n2 n2 Totale Totale == n1 + n1 +n2 n2 Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano Totale Totale 6 3 Attività per Risolvere un Problema n Comprendere il problema n Definire il procedimento risolutivo (algoritmo) n Implementare l’algoritmo in un linguaggio di programmazione n Prova n Documentazione n Manutenzione Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 7 Comprendere il Problema n Focalizzare gli obiettivi n Evidenziare èLe regole èI dati espliciti ed impliciti n Eliminare i dettagli inutili ed ambigui Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 8 4 Attività per Risolvere un Problema n Comprendere il problema n Definire il procedimento risolutivo (algoritmo) n Implementare l’algoritmo in un linguaggio di programmazione n Prova n Documentazione n Manutenzione Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 9 Algoritmo Descrizione Descrizione rigorosa rigorosa delle delle azioni azioni da da compiere compiere per per risolvere risolvere un un problema problema di di qualsiasi qualsiasi genere genere n 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 5 Descrizione Rigorosa n L’indicazione “prendi la seconda traversa a destra e poi la prima a sinistra ” può essere espressa in forma rigorosa così: 1. 2. 3. 4. 5. 6. 7. 8. C’e’ una strada a destra? Se sì, va al punto 3. Vai avanti fino ad un incrocio; vai al punto 1. Vai avanti fino ad un incrocio C’è una strada a destra? Se no, vai al punto 3. Svolta a destra Vai avanti fino ad un incrocio C’è una strada a sinistra? Se no, vai al punto 6. Svolta a sinistra 5 8 3 11 Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano Esempio: l’Area di una Campana r=b/2 h2 b h1 B Area della campana = A1 + A2 + A3 A3 = 1/2πr2 A1 = (B + b)×h1/2 A2 = b×h2 Sottoproblema 3 Sottoproblema 2 Sottoproblema 1 Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 12 6 Esempio: Gestione di una Biblioteca n Libri esposti sugli scaffali n La posizione di ogni libro è fissa ed individuata da due coordinate èNumero dello scaffale èPosizione nello scaffale n 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 7 Problema Trovare un libro! Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 15 Formulazione dell’Algoritmo n Cerca la scheda del libro nello schedario n Segnati numero scaffale e posizione n Cerca lo scaffale indicato n Accedi alla posizione indicata e preleva il libro Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 16 8 Primo sotto -algoritmo di Ricerca n Prendi la prima scheda dello schedario n Se titolo e autore sono quelli cercati, la ricerca termina con successo altrimenti passa alla scheda successiva n 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 n Esamina la scheda centrale dello schedario n Se la scheda centrale corrisponde al libro cercato allora la ricerca termina n 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 9 Qualità degli Algoritmi n Correttezza èL’algoritmo permette effettivamente di risolvere il problema n 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 n Entrambi gli algoritmi sono corretti n Il secondo algoritmo è più efficiente del primo Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 20 10 Attività per Risolvere un Problema n Comprendere il problema n Definire il procedimento risolutivo (algoritmo) n Implementare l’algoritmo in un linguaggio di programmazione n Prova n Documentazione n Manutenzione 21 Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano Implementazione di un Algoritmo n L’algoritmo deve essere codificato in un linguaggio Linguaggi Linguaggi naturali Usati dagli uomini per comunicare u Complessi u Ambigui Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano Linguaggi artificiali Usati in informatica (linguaggi di programmazione) 22 11 Alcuni Linguaggi di Programmazione n Fortran (metà degli anni ‘50) èFormula Translator n Cobol (metà degli anni ‘50) èCommon Business-Oriented Language n Pascal (inizio degli anni ‘70) èDal matematico francese Blaise Pascal primo ad ideare una macchina calcolatrice (la Pascalina) n C (inizi degli anni ‘70) n Prolog (inizi degli anni ‘70) èProgramming in Logic Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 23 Il Linguaggio C n Il linguaggio C è stato sviluppato intorno al 1972, nei Bell Laboratories AT&T americani, da Dennis Ritchie n E’ nato come linguaggio di sviluppo del Sistema Operativo Unix Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 24 12 Sintassi e Semantica Linguaggio Sintassi Insieme delle regole che consentono di scrivere correttamente le frasi di un linguaggio Livello Forma corretta Sintattico Sono andato a scuola Semantico Il gatto è un animale Semantica Disciplina che studia il significato delle parole e delle frasi Forma non corretta 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 13 Linguaggio Macchina n Un calcolatore non è in grado di eseguire direttamente programmi scritti in linguaggi ad alto livello n 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.) n 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 14 Traduzione n 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 n La traduzione può avvenire in due modi èCompilazione èInterpretazione Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 29 Compilazione n 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 Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 100101001010 010101001011 101010010101 101010100101 30 15 Interpretazione n 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 n La compilazione è assimilabile al processo di traduzione, da una lingua ad un’altra, di un libro n L’interpretazione è assimilabile al processo di traduzione simultanea Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 32 16 Compilazione vs. Interpretazione n Compilazione èVantaggi ü Creazione di programmi eseguibili ü Velocità di esecuzione del programma èSvantaggi ü Portabilità del codice su altre piattaforme n Interpretazione èVantaggi ü Portabilità del codice èSvantaggi ü Lenta esecuzione Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 33 Attività per Risolvere un Problema n Comprendere il problema n Definire il procedimento risolutivo (algoritmo) n Implementare l’algoritmo in un linguaggio di programmazione n Prova n Documentazione n Manutenzione Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 34 17 Prova compilazione Compilatore Compilatore Inserimento e correzione Errori di sintassi esecuzione Sistema Sistemadi di esecuzione esecuzione Risultati ed errori in esecuzione verifica Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 35 Attività per Risolvere un Problema n Comprendere il problema n Definire il procedimento risolutivo (algoritmo) n Implementare l’algoritmo in un linguaggio di programmazione n Prova n Documentazione n Manutenzione Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 36 18 Documentazione n Scrivere un manuale d’uso che accompagni il programma n 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 n Comprendere il problema n Definire il procedimento risolutivo (algoritmo) n Implementare l’algoritmo in un linguaggio di programmazione n Prova n Documentazione n Manutenzione Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano 38 19 Manutenzione n Non esistono parti del programma soggette ad usura! n Manutenzione del programma = èModificarlo èAggiornarlo èEstenderlo èRenderlo più veloce è... 39 Master ITER ♦ Informatica di Base ♦ Maurizio Palesi, Salvatore Serrano Riepilogo Problema Algoritmo Programma n Problema èCompito che si vuole fare risolvere automaticamente al calcolatore n Algoritmo èDescrizione rigorosa delle azioni da compiere per risolvere il problema n 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 20