1 / 57

Algoritmi: Modelli per Risolvere Problemi

Algoritmi: Modelli per Risolvere Problemi. Fabio Massimo Zanzotto. Cosa vedremo nelle lezioni. Sfida: Creazione di App su Android Mattoni base Algoritmo, modello per risolvere problemi Rappresentazione dell’informazione Architettura del calcolatore Costruzioni sovrastanti

sue
Download Presentation

Algoritmi: Modelli per Risolvere Problemi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Algoritmi: Modelli per Risolvere Problemi Fabio Massimo Zanzotto

  2. Cosa vedremo nelle lezioni • Sfida: Creazione di App su Android • Mattoni base • Algoritmo, modello per risolvere problemi • Rappresentazione dell’informazione • Architettura del calcolatore • Costruzioni sovrastanti • Sistema operativo • Reti di calcolatori e WWW • Programmi applicativi

  3. Problemi ed Algoritmi • Domanda fondamentale: Cos’è un problema e quando è risolubile? • Esempio di Problema e Processo di risoluzione • Definizione di algoritmo • “Processo di soluzione=Esecutore+Algoritmo” • Parametrizzazione dei problemi • Un algoritmo più complesso: • Sommare e moltiplicare due numeri • Trovare il massimo comun denominatore tra due numeri • Storia… la pascalina(1642) • Scegliere tra algoritmi (complessità)

  4. Cos’è un problema e quando è risolubile? Problema Un contadino ha venduto Kg 125 di uva a 0,55 € al chilogrammo e con il ricavo ha acquistato 3 metri di stoffa pagandola 15,80 € al metro. Quale somma gli è rimasta? Domanda fondamentale Apriamo il libro dei problemi!!

  5. Soluzione del problema (1) Soluzione 0,55 €/kg125kg= € 68,75RICAVO UVA VENDUTA 15,80 €/m3m= € 47,40SPESA STOFFA € 68,75- €47,40 = €21,35SOMMA RIMASTA RISULTATO Al contadino rimangono €21,35

  6. Soluzione del problema (2) Attenzione! c’è anche una Procedura Risolutiva Passi della procedura 1) Si moltiplichi la quantità di uva venduta per il prezzo al Kg: ottengo così il ricavo 2) Si moltiplichi la quantità di stoffa acquistata per il prezzo al metro, ottenendo così la cifra spesa. 3) Si sottragga dal ricavo la cifra spesa. Il risultato così ottenuto è la somma rimasta al contadino.

  7. Procedura Risolutiva: osservazioni • Ricercare ed esprimere una procedura risolutiva • è un atto creativo • è un atto distinto dalla attività “Meccanica” delle azioni volte a raggiungere il risultato finale. • Per risolvere il precedente problema, non è sufficente essere capaci di eseguire le quattro operazioni

  8. Procedura Risolutiva: Algortimo Definizione: • Un algoritmo(o procedura risolutiva) specifica come ottenere il risultato finale mediante una sequenza di istruzioni (Ordini). Si faccia attenzione: • Un algoritmo non è l’ esecuzione materiale delle azioni volte a raggiungere il risultato finale è affidata ad un esecutore • L’esecuzione delle azioni atte ad eseguire un algoritmo è detto processo

  9. Procedura Risolutiva: sistemiamo i ruoli Algoritmo Risolutore Problema Esecutore Risultato

  10. Osservazione: L’algoritmo per il precedente esempio risolve solo il problema posto. Per raggiungere un ulteriore livello di generalizzazione possiamo far presente come esistano problemi per i quali uno stesso elenco di istruzioni può servire a condurre alla soluzione di problemi che differiscono solo per le informazioni iniziali (parametri). Primo mattone importante: Parametrizzazione

  11. Parametrizzazione: ritorniamo all’esempio Andiamo per esempi… Problema Un contadino ha venduto Kg 125 di uva a 0,55 € al chilogrammo e con il ricavo ha acquistato 3 metri di stoffa pagandola 15,80 € al metro. Quale somma gli è rimasta? Procedura Somma= 125*0,55-3*15,80 Andiamo per esempi… Problema Un contadino ha venduto Kg X di uva a Y € al chilogrammo e con il ricavo ha acquistato Z metri di stoffa pagandola K € al metro. Quale somma gli è rimasta? Procedura Somma= X*Y-Z*K

  12. Procedura Risolutiva con parametri Algoritmo Risolutore Problema Esecutore Dato Iniziale Risultato

  13. Processi, Algoritmi ed Istruzioni

  14. Un altro problema Dati due numeri interi (positivi): A e B sommarli!

  15. Un primo algoritmo • Capacità base: sappiamo sommare e sottrarre una unità al numero Metodo pallottoliere!!! A B 7 8 9 2 1 0

  16. Un primo algoritmo Razionalizziamo Dati i due numeri A e B • Si metta in A ciò che si ottiene facendo A + 1 • Si metta in B ciò che si ottiene facendo B – 1 • Se B non è uguale a 0 allora si torni al passo 1) altrimenti A contiene la somma tra l’originale A e l’originale B

  17. Un primo algoritmo Osserviamo l’istruzione • Si metta in A ciò che si ottiene facendo A + 1 E’ uguale all’istruzione che abbiamo già visto:

  18. Un primo algoritmo L’istruzione: 3) Se B non è uguale a 0 allora si torni al passo 1) altrimenti A contiene la somma tra l’originale A e l’originale B E’ simile a:

  19. Un secondo algoritmo • Capacità base: contare fino a 10 e sommare due cifre 1 1 1 7897 345 8 2 4 2

  20. Un altro algoritmo: somma di due numeri Razionalizziamo Dati due numeri A e B • Scrivere A e scrivere B di modo che le unità stiano una sotto l’altra • Si scriva dopo il numero A il simbolo + e dopo il numero B il simbolo = • Si tracci un linea sotto il numero B • Considerare la colonna delle unità come colonna attiva • Se nella colonna attiva non ci sono cifre da sommare ci si fermi si è ottenuto il risultato • Si sommino le cifre della colonna attiva e si scriva l’unità sotto le due cifre considerate e l’eventuale decina sopra le cifre della colonna successiva a quella attiva • Si sposti la colonna attiva alla colonna successiva sulla sinistra • Si torni al passo 5)

  21. Algoritmi per la somma di due numeri Il problema: sommare due numeri Due algoritmi: • pallottoliere Passo basilare: saper sommare e sottrarre una unità • “modo normale” Passo basilare: saper sommare due cifre Perché sono due?

  22. Un altro problema Dati due numeri interi (positivi): A e B moltiplicarli!

  23. Un primo algoritmo • Capacità base : sappiamo sommare due qualsiasi cifre e sottrarre una unità al numero A B C 45 4 0 Passo 0 3 45 Passo 1 2 90 Passo 2 Passo 3 1 135 0 180 Passo 4

  24. Un primo algoritmo Razionalizziamo Dati i due numeri A e B • Si prepari un contenitore C con valore 0 • Si sommi A a C e si ponga il risultato in C • Si sottragga 1 a B e si metta il risultato in B • Se B non è uguale a 0 allora si torni al passo 2) altrimenti C contiene la il prodotto tra l’originale A e B

  25. Un primo algoritmo • Capacità base: moltiplicare 2 cifre e sommare 47 45 23 5 18 8 2 1 1 5

  26. Un primo algoritmo • Capacità base: moltiplicare 2 cifre e sommare 47 45 35 20 28 16 2 1 1 5

  27. Un altro algoritmo: moltiplicazione di due numeri Razionalizzate voi?

  28. Esercizi • Descrivere almeno due algoritmi per ciascuna di queste operazioni: • Sottrazione • Divisione • Elevamento a Potenza

  29. Un altro algoritmo: MCD • Problema: Determinare il M.C.D. di due numeri naturali dati diversi da 0 • Algoritmo M.C.D. 1 1. Si scompongono i due numeri in fattori primi 2. Si prendono in considerazione i soli fattori comuni 3. Dall’elenco di fattori comuni ottenuti nei passi di esecuzione dell’istr.2 si considerino quelli con l’esponente più piccolo 4. Si moltiplicano fra di loro i fattori individuali nei passi di esecuzione dell’istr.3 - il risultato è il M.C.D cercato.

  30. Un altro algoritmo: MCD (euclide) • Problema: Determinare il M.C.D. di due numeri naturali dati diversi da 0 • Algoritmo Euclide (1) 1. Dividere il primo numero per il secondo. Chiamare R il resto della divisione 2. Se R=0 hai finito: il secondo numero è il M.C.D. 3. Se R¹0 si operino i seguenti cambiamenti: primo numero ¬ secondo numero; secondo numero ¬ R. 4. Torna all’istr.1.

  31. Osservazioni • Risolvere problemi richiede • Algoritmo • Esecutore • Diversi problemi richiederanno algoritmi diversi • Lo stesso problema ammette algoritmi diversi

  32. Storia… la pascalina

  33. Storia… la macchina per fare la maglia

  34. Ragioniamo e revisioniamo Un algoritmo è Una sequenza ... finita di passi (o istruzioni) che risolve un problema (parametrico) dato Un processo1è l’esecuzione di un algoritmo 1 Prima accezione: esisteranno degli altri significati per questa parola

  35. Domanda • Dato il primo algoritmo della somma definito, si ridescriva • l’algoritmo • l’esecuzione dell’algoritmo (detta processo?)

  36. Risposta Algoritmo Dati i due numeri A e B • Si metta in A ciò che si ottiene facendo A + 1 • Si metta in B ciò che si ottiene facendo B – 1 • Se B non è uguale a 0 allora si torni al passo 1) altrimenti A contiene la somma tra l’originale A e l’originale B Processo di soluzione A B 45 63 Passo 0 46 62 Passo 1 47 61 Passo 2 … 108 0 Passo 64

  37. Algoritmi per la somma di due numeri Il problema: sommare due numeri Due algoritmi: • pallottoliere Passo basilare: saper sommare e sottrarre una unità • “modo normale” Passo basilare: saper sommare due cifre E’ uno migliore dell’altro?

  38. Valutazione degli algoritmi Domanda: come capiamo se un algoritmo è migliore di un altro? • Possiamo guardare come è scritto? [guardiamo le istruzioni dell’algoritmo] • Comprensibilità • Numero di istruzioni • Possiamo guardare le sue ipotetiche esecuzioni? [guardiamo i possibili processi] • Numero di passi da fare a seconda dei parametri di ingresso

  39. Algoritmi della somma: valutazione Osserviamo gli algoritmi Metodo Pallottoliere Dati i due numeri A e B • Si metta in A ciò che si ottiene facendo A + 1 • Si metta in B ciò che si ottiene facendo B – 1 • Se B non è uguale a 0 allora si torni al passo 1) altrimenti A contiene la somma tra l’originale A e l’originale B Metodo normale • Dati due numeri A e B • Scrivere A e scrivere B di modo che le unità stiano una sotto l’altra • Si scriva dopo il numero A il simbolo + e dopo il numero B il simbolo = • Si tracci un linea sotto il numero B • Considerare la colonna delle unità come colonna attiva • Se nella colonna attiva non ci sono cifre da sommare ci si fermi si è ottenuto il risultato • Si sommino le cifre della colonna attiva e si scriva l’unità sotto le due cifre considerate e l’eventuale decina sopra le cifre della colonna successiva a quella attiva • Si sposti la colonna attiva alla colonna successiva sulla sinistra • Si torni al passo 5) Sembra più semplice il metodo pallottoliere!!

  40. Algoritmi della somma: valutazione Osserviamo i processi Algoritmo pallottoliere Osservazione generale A B 45 63 Passo 0 Occorrono proprio B passi per sommare i due numeri 46 62 Passo 1 47 61 Passo 2 … 108 0 Passo 64

  41. Algoritmi della somma: valutazione Osserviamo i processi Algoritmo normale Osservazione generale 1 1 1 7897 345 Dato N il numero di cifre di B, occorrono N+1 passi per sommare i due numeri 8 2 4 2

  42. Algoritmi della somma: valutazione Osserviamo i processi Algoritmo Pallottoliere Algoritmo normale Occorrono proprio B passi per sommare i due numeri Dato N il numero di cifre di B, occorrono N+1 passi per sommare i due numeri B è molto maggiore di N+1 L’algoritmo normale è migliore

  43. Algoritmi della somma: valutazione • Osservando gli algoritmi • È più semplice l’algoritmo pallottoliere • Osservando i possibili processi • È migliore (impiega meno passi) l’algoritmo normale • E’ meglio valutare gli algoritmi rispetto ai possibili processi! Sono i passi che l’esecutore fà! Meno ne fa e più è contento!

  44. AIUTOOOO! LO ZANZOTTO VI HA CONVINTO CHE UN ALGORITMO E’ MIGLIORE DI UN ALTRO! Domanda: Il simpatico professore ha fatto le cose correttamente? Secondo me ci ha ingannato con le parole!!!

  45. Algoritmi della somma: valutazione Riosserviamo i processi Algoritmo Pallottoliere Algoritmo normale Dato N il numero di cifre di B, occorrono N+1 passi per sommare i due numeri Occorrono proprio B passi per sommare i due numeri passo passo Capacità base : sappiamo sottrarre e sommare una unità Capacità base: contare fino a 10 e sommare due cifre PassoPallottoliere PassoNormale=10 x PassoPallottoliere

  46. Algoritmi della somma: valutazione Riosserviamo i processi Algoritmo Pallottoliere Algoritmo normale Dato N il numero di cifre di B, occorrono N+1 passi per sommare i due numeri Occorrono proprio B passi per sommare i due numeri PassoPallottoliere PassoNormale=10 x PassoPallottoliere Dato N il numero di cifre di B, occorrono (N+1)x10passi pallottoliere per sommare i due numeri Occorrono proprio Bpassi pallottoliere per sommare i due numeri B è maggiore di 10(N+1) L’algoritmo normale è migliore

  47. Algoritmi: tipi di passi salienti Metodo Pallottoliere • Dati i due numeri A e B • Si prepari un contenitore C con valore 0 • Si sommi A a C e si ponga il risultato in C • Si sottragga 1 a B e si metta il risultato in B • Se B non è uguale a 0 allora si torni al passo 3) altrimenti C contiene la il prodotto tra l’originale A e B affermazione condizione salto

  48. Algoritmi: un modo di rappresentare Linguaggio: diagrammi di flusso Affermazione affermazione Condizione vera condizione falsa salto

  49. Algoritmi: tipi di passi salienti Metodo Pallottoliere • Dati i due numeri A e B • Si metta in A ciò che si ottiene facendo A + 1 • Si metta in B ciò che si ottiene facendo B – 1 • Se B non è uguale a 0 allora si torni al passo 2) altrimenti A contiene la somma tra l’originale A e l’originale B A=A+1 B = B-1 B=0 falso vero

  50. A = 6, B= -1 vero B<=0 falso A=A+1 B = B-1

More Related