Come ragiona il computer Problemi e algoritmi Il problema Abbiamo un problema quando ci poniamo un obiettivo da raggiungere e per raggiungerlo dobbiamo mettere a punto una strategia Per risolvere il problema individuiamo una sequenza di istruzioni elementari che, partendo dai dati noti, arrivi a dare la soluzione 2 I problemi tipici dell’informatica Ricerca di informazioni Elaborazione Decisioni Ottimizzazioni 3 1 Ricerca di informazione Trovare il numero di telefono di una persona, individuare il numero più piccolo di una sequenza, stabile se una parola precede alfabeticamente un’altra 4 Problemi di elaborazione di informazioni Calcolare il costo totale di un certo numero di prodotti, trovare perimetro e area di una figura geometria, … 5 Problemi di decisione Decidere se per andare a scuola è più conveniente il motorino, l’autobus, andare a piedi, farsi accompagnare da un genitore 6 2 Problemi di ottimizzazione Trovare tra tutte le soluzioni possibili del problema quella che rende minimo un certo fattore, per esempio scegliere il mezzo di trasporto più economico per andare a Parigi oppure quello con il quale si impiega meno tempo 7 Risolvere un problema Interpretare l’enunciato Individuare i dati noti e quelli da trovare Costruire un modello Descrivere il procedimento risolutivo Eseguire le operazioni stabilite nel processo risolutivo Verificare se i risultati ottenuti corrispondono alla soluzione del problema reale 8 Risolvere un problema Verifica dei risultati Problema Interpretazione Esecuzione Modello algoritmo 9 3 Algoritmo Un algoritmo è una sequenza finita di operazioni elementari che porta alla soluzione del problema. 10 Algoritmo Serie di prescrizioni o istruzioni che specifica l’insieme delle azioni da compiere per poter risolvere un problema [Al-Khowarizmi, IX sec.] Regole per eseguire le 4 operazioni aritmetiche sui numeri scritti in notazione decimale 11 Algoritmi: Requisiti Finitezza Spaziale Temporale Generalità Classe di problemi di definizione Dominio Completezza Non ambiguità Eseguibilità 12 4 Diagramma di flusso o diagrammi a blocchi È uno metodi più comuni usati per la rappresentazione di algoritmi. Si presenta come un insieme di figure geometriche collegate da frecce. 13 Inizio Inizio Tutti i diagrammi a blocchi cominciano con un’ellisse che contiene la parola inizio 14 Dati in ingresso Dati in ingresso I dati in ingresso sono i dati noti del problema, quelli che devono essere elaborati per arrivare alla soluzione 15 5 Operazioni Operazioni Le operazioni da svolgere sui dati sono racchiuse in rettangoli 16 Scelta Vero o falso? Quando si deve fare una scelta tra due possibilità si usa il rombo 17 Dati in uscita Dati in uscita I dati in uscita sono quelli che si vuole conoscere e costituiscono il risultato dell’elaborazione 18 6 Fine fine Ogni diagramma di flusso si conclude con un’ellisse che contiene la parola fine 19 Diagrammi di Flusso Regole di Costruzione Un solo blocco iniziale e un solo blocco finale Ogni Il blocco è raggiungibile da quello iniziale blocco finale è raggiungibile da ogni blocco I blocchi sono in numero finito Ogni blocco di azione (calcolo o ingresso/uscita) ha una freccia entrante ed una uscente Ogni blocco di decisione ha una freccia entrante e due uscenti Ogni freccia parte da un blocco e termina in un blocco o su un’altra freccia 20 Problema della chiave Trovare in un mazzo di chiavi quella che apre il lucchetto 21 7 Programmazione Strutturata Uso di schemi fondamentali Uso di soli diagrammi strutturati Configurazioni standard di blocchi elementari, comuni a molti processi della vita quotidiana Sviluppo per raffinamenti successivi Ogni schema fondamentale ha un solo punto di ingresso ed un solo punto di uscita Sostituibile ad un blocco di azione Nella sostituzione, si possono omettere i blocchi di inizio e fine dello schema che si sta inserendo 22 Programmazione Strutturata Schemi fondamentali Sequenza Selezione Concatenazione Scelta di azioni di azioni alternative Dipendenza da una condizione Iterazione Ripetizione di una certa azione Dati potenzialmente diversi Dipendenza da una condizione 23 Programmazione Strutturata Schemi fondamentali Sequenza Selezione A1 A1 C … An A2 C A Iterazione C A A C 24 8