1 / 11

algoritmi

algoritmi. proprietà e caratteristiche. descrizione degli algoritmi. codice e pseudo-codice usiamo pseudo-codice, useremo codice (Java) rapportata all’esecutore persona o macchina? se persona, adulto o bambino? se macchina, cosa è capace di fare? leggibilità della descrizione

ramiro
Download Presentation

algoritmi

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 proprietà e caratteristiche

  2. descrizione degli algoritmi • codice e pseudo-codice • usiamo pseudo-codice, useremo codice (Java) • rapportata all’esecutore • persona o macchina? • se persona, adulto o bambino? • se macchina, cosa è capace di fare? • leggibilità della descrizione • fondamentale per operazioni di correzione, manutenzione, adattamento e riuso (c) Fabrizio d'Amore, IGEA 02-03

  3. pseudo-codice • input, output • start, stop • assegnazione <variabile> = <risultato di una espressione> • test if(<condizione>) <istruzioni se condizione vera> else <istruzioni se condizione falsa> (c) Fabrizio d'Amore, IGEA 02-03

  4. pseudo-codice/2 • ripetizione o ciclo while(<condizione>) <istruzioni da ripetere finché condizione è vera> • esempio: somma primi n interi positivi start input(n) somma = 0 i = 0 while(i < n) somma = somma + i i = i + 1 output(somma) stop (c) Fabrizio d'Amore, IGEA 02-03

  5. loop infiniti • una classica causa del malfunzionamento del software • es.: somma dei primi n dispari i = 1 j = 0 somma = 0 while(j < i) // errato! somma = somma + i i = i + 2 j = j + 1 (c) Fabrizio d'Amore, IGEA 02-03

  6. esecutori • gli algoritmi vanno formulati tenendo conto delle capacità dei loro esecutori • un computer sa di norma eseguire le quattro operazioni, confronti fra numeri e alcune semplici operazioni logiche • si possono concepire esecutori molto limitati • es.: capacità di incrementare/decrementare numeri (una unità alla volta) e di confrontare un numero con zero • è meno “potente”? (c) Fabrizio d'Amore, IGEA 02-03

  7. somma a + b • c = a • temp = b • while(temp > 0) incrementa c decrementa temp (c) Fabrizio d'Amore, IGEA 02-03

  8. leggibilità degli algoritmi • qualità della descrizione degli algoritmi • non influenza correttezza ed efficienza! • fondamentale per operazioni di correzione, manutenzione, adattamento e riuso • oltre il 50% del tempo di sviluppo del software è dedicato alla correzione degli errori • la manutenzione del software viene spesso eseguita da terzi • spesso il software deve essere modificato per tener conto di modifiche delle specifiche • il buon riuso del software è alla base di una buona produttività ed abbattimento costi (c) Fabrizio d'Amore, IGEA 02-03

  9. tecniche per la leggibilità • indentazione • non tutte le righe del codice (o pseudo-codice) hanno inizio alla stessa colonna • si tiene conto della “struttura” dell’algoritmo • commenti • per motivare scelte non ovvie e in generale per documentare il software • uso di nomi evocativi • usare variabili con nomi significativi • somma è un nome migliore di xyz (c) Fabrizio d'Amore, IGEA 02-03

  10. es: max fra N numeri input(N) // lettura N input(x) // lettura primo valore letti = 1 // conta quanti valori letti max = x // max provvisorio! while(letti < N) input(x) // legge prossimo if(x > max) max = x // se grande aggiorna max letti = letti + 1 // aggiorna contatore output(max) // output risultato stop // termine (c) Fabrizio d'Amore, IGEA 02-03

  11. esempio • giochiamo ad “alto-basso” • quale algoritmo scegliere? • c’è differenza concettuale con la ricerca tabellare? • es., ricerca su un elenco telefonico: supponendo 1ms per ogni controllo, come fa info412 a controllare oltre 10 milioni di numeri? (1000 secondi!) (c) Fabrizio d'Amore, IGEA 02-03

More Related