Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoEnzo Visconti Modificato 10 anni fa
1
algoritmi proprietà e caratteristiche
2
ottobre 2002(c) Fabrizio d'Amore, IGEA 02-032 descrizione degli algoritmi codice e pseudo-codice codice e pseudo-codice usiamo pseudo-codice, useremo codice (Java) usiamo pseudo-codice, useremo codice (Java) rapportata allesecutore rapportata allesecutore persona o macchina? persona o macchina? se persona, adulto o bambino? se persona, adulto o bambino? se macchina, cosa è capace di fare? se macchina, cosa è capace di fare? leggibilità della descrizione leggibilità della descrizione fondamentale per operazioni di correzione, manutenzione, adattamento e riuso fondamentale per operazioni di correzione, manutenzione, adattamento e riuso
3
ottobre 2002(c) Fabrizio d'Amore, IGEA 02-033 pseudo-codice input, output input, output start, stop start, stop assegnazione assegnazione = = test testif(<condizione>) else
4
ottobre 2002(c) Fabrizio d'Amore, IGEA 02-034 pseudo-codice/2 ripetizione o ciclo ripetizione o ciclowhile(<condizione>) esempio: somma primi n interi positivi esempio: somma primi n interi positivistartinput(n) somma = 0 i = 0 while(i < n) somma = somma + i i = i + 1 output(somma)stop
5
ottobre 2002(c) Fabrizio d'Amore, IGEA 02-035 loop infiniti una classica causa del malfunzionamento del software una classica causa del malfunzionamento del software es.: somma dei primi n dispari 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
6
ottobre 2002(c) Fabrizio d'Amore, IGEA 02-036 esecutori gli algoritmi vanno formulati tenendo conto delle capacità dei loro 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 un computer sa di norma eseguire le quattro operazioni, confronti fra numeri e alcune semplici operazioni logiche si possono concepire esecutori molto limitati si possono concepire esecutori molto limitati es.: capacità di incrementare/decrementare numeri (una unità alla volta) e di confrontare un numero con zero es.: capacità di incrementare/decrementare numeri (una unità alla volta) e di confrontare un numero con zero è meno potente? è meno potente?
7
ottobre 2002(c) Fabrizio d'Amore, IGEA 02-037 somma a + b 1. c = a 2. temp = b 3. while(temp > 0) incrementa c decrementa temp
8
ottobre 2002(c) Fabrizio d'Amore, IGEA 02-038 leggibilità degli algoritmi qualità della descrizione degli algoritmi qualità della descrizione degli algoritmi non influenza correttezza ed efficienza! non influenza correttezza ed efficienza! fondamentale per operazioni di correzione, manutenzione, adattamento e riuso fondamentale per operazioni di correzione, manutenzione, adattamento e riuso oltre il 50% del tempo di sviluppo del software è dedicato alla correzione degli errori oltre il 50% del tempo di sviluppo del software è dedicato alla correzione degli errori la manutenzione del software viene spesso eseguita da terzi la manutenzione del software viene spesso eseguita da terzi spesso il software deve essere modificato per tener conto di modifiche delle specifiche 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 il buon riuso del software è alla base di una buona produttività ed abbattimento costi
9
ottobre 2002(c) Fabrizio d'Amore, IGEA 02-039 tecniche per la leggibilità indentazione indentazione non tutte le righe del codice (o pseudo-codice) hanno inizio alla stessa colonna non tutte le righe del codice (o pseudo-codice) hanno inizio alla stessa colonna si tiene conto della struttura dellalgoritmo si tiene conto della struttura dellalgoritmo commenti commenti per motivare scelte non ovvie e in generale per documentare il software per motivare scelte non ovvie e in generale per documentare il software uso di nomi evocativi uso di nomi evocativi usare variabili con nomi significativi usare variabili con nomi significativi somma è un nome migliore di xyz somma è un nome migliore di xyz
10
ottobre 2002(c) Fabrizio d'Amore, IGEA 02-0310 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
11
ottobre 2002(c) Fabrizio d'Amore, IGEA 02-0311 esempio giochiamo ad alto-basso giochiamo ad alto-basso quale algoritmo scegliere? quale algoritmo scegliere? cè differenza concettuale con la ricerca tabellare? 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!) es., ricerca su un elenco telefonico: supponendo 1ms per ogni controllo, come fa info412 a controllare oltre 10 milioni di numeri? (1000 secondi!)
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.