Algoritmi
Download
1 / 11

algoritmi - PowerPoint PPT Presentation


  • 164 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'algoritmi' - ramiro


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Algoritmi

algoritmi

proprietà e caratteristiche


Descrizione degli algoritmi
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


Pseudo codice
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


Pseudo codice 2
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


Loop infiniti
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


Esecutori
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


Somma a b
somma a + b

  • c = a

  • temp = b

  • while(temp > 0)

    incrementa c

    decrementa temp

(c) Fabrizio d'Amore, IGEA 02-03


Leggibilit degli algoritmi
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


Tecniche per la leggibilit
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


Es max fra n numeri
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


Esempio
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