algoritmo - mauriziomancini.org

annuncio pubblicitario
Click to edit
Algoritmo
Master title style
•
algoritmo: un insieme ordinato di operazioni non
ambigue ed effettivamente computabili che, quando
eseguito, produce un risultato e si arresta in un tempo
finito
•
in termini informali: un algoritmo è una sequenza
ordinata di operazioni che risolve un problema specifico
Click to edit
Proprietà
Master title style
•
un algoritmo deve essere:
•
non ambiguo (i risultati non devono variare in funzione della
macchina o persona che esegue l'algoritmo)
•
corretto (deve risolvere un dato problema)
•
realizzabile (deve essere eseguibile con le risorse a disposizione)
•
finito (deve essere composto da un numero finito di passi elementari;
le operazioni sono eseguite un numero finito di volte)
•
efficiente (deve avere un costo accettabile, se non ottimo, in termini
di risorse consumate: tempo di CPU richiesto per completare, quantità
di memoria utilizzata, quantità di bit trasferiti)
Click to edit
Efficienza
Master title style
• efficienza è il termine usato per descrivere l’uso attento delle
risorse da parte di un algoritmo
• come si misurano il tempo e lo spazio consumati da un
algoritmo, in modo da determinare se è efficiente?
– efficienza rispetto allo spazio: si può giudicare in base alla quantità di
informazioni che l’algoritmo deve registrare nella memoria del computer per
svolgere il proprio compito, oltre ai dati iniziali sui quali opera
– efficienza rispetto al tempo: è un’indicazione della quantità di “lavoro”
richiesto dall’algoritmo stesso; è una misura dell’efficienza implicita del
metodo, indipendente dalla velocità della macchina su cui è eseguito, dai
valori dei dati di ingresso elaborati ma non dalla loro quantità
Click to edit
Complessità
Master title style
• descrive l'efficienza dell'algoritmo
– numero di operazioni svolte dall'algoritmo relativamente alla
misura dell'informazione su cui opera l'algoritmo
• esempio: per mettere in ordine una lista di N numeri interi
un algoritmo può eseguire N*N operazioni oppure logN
operazioni
• complessità tipiche degli algoritmi, in ordine crescente:
– logN, N, NlogN, N2, 2N
Click
Descrizione
to edit Master
di un algoritmo
title style
• un algoritmo è descritto in linguaggio
• il linguaggio di descrizione di un algoritmo deve essere
adeguato alle caratteristiche del suo esecutore
•
esecutore umano:
– linguaggio naturale
– linguaggio grafico (ad esempio i diagrammi di flusso)
• esecutore automatico (computer):
– linguaggio di programmazione
Click to editEsecuzione
Master title style
• l'esecuzione delle azioni nell'ordine specificato
dall'algoritmo consente di ottenere, a partire dai dati
di ingresso, i risultati che risolvono il problema
Metodo
Risolutivo
(algoritmo)
DATI
Esecutore
RISULTATI
ESECUTORE
una macchina astratta
capace di eseguire le
azioni specificate dallo
algoritmo.
Click to edit
Esempio
Master title style
• scrivere un algoritmo per decidere se l'assicurazione della
macchina è scaduta
–
–
–
–
–
–
–
anno corrente < anno scadenza polizza? non è scaduta, fine
anno corrente > anno scadenza polizza? è scaduta, fine
mese corrente < mese scadenza polizza? non è scaduta, fine
mese corrente > mese scadenza polizza? è scaduta, fine
giorno corrente < giorno scadenza polizza? non è scaduta, fine
giorno corrente > giorno scadenza polizza? è scaduta, fine
non è scaduta ma lo sarà tra 24 ore
Click to editVariabili
Master title style
• una variabile rappresenta una zona di memoria RAM che
può essere usata per memorizzare un valore
• analogia con una scatola di scarpe etichettata in uno
scaffale (che rappresenta la RAM):
–
–
–
–
la scatola ha un nome
una posizione nello scaffale
un valore (le scarpe che si trovano dentro la scatola)
[un tipo (forma della scatola)]*
(* vedremo più avanti cos'è e a che serve il tipo di una variabile)
Click to editVariabili
Master title style
• A = Valore oppure A ← Valore significa che "Valore" viene
memorizzato nella zona di memoria RAM etichettata con
l'etichetta "A":
Valore
A
Click to editVariabili
Master title style
• B = A oppure B ← A significa che "Valore",
precedentemente memorizzato nella zona di memoria
etichettata con "A" viene copiato nella zona di memoria
etichettata con "B":
Valore
A
B
Click Diagrammi
to edit Master
di flusso
title style
• un diagramma di flusso (flow chart) è la definizione grafica
delle operazioni che costituiscono un algoritmo
• è uno strumento efficace per la descrizione degli algoritmi
• i diagrammi di flusso usano forme geometriche diverse
per rappresentare:
– trasferimento di informazioni (lettura dati, scrittura risultati,
visualizzazione dati intermedi)
– esecuzione di calcoli
– assunzione di decisioni
– esecuzione di iterazioni (ripetizione di sequenze di operazioni)
Click Diagrammi
to edit Master
di flusso
title style
– elaborazione – i blocchi rettangolari
rappresentano istruzioni di assegnazione di
valori o una modifica dello stato globale della
computazione
– input/output - i blocchi a forma di
parallelogramma corrispondono a operazioni di
input/output dei dati (lettura da tastiera,
visualizzazione su video)
– decisione – i blocchi a forma di rombo vengono
yes
utilizzati per rappresentare istruzioni di salto
condizionato
– inizio/fine – i blocchi ovali vengono utilizzati per
rappresentare l’inizio e la fine dell’algoritmo
vE
operation
condition
no
start
stop
Calcolo
Click to
dell’area
edit Master
di untitle
rettangolo
style
•
•
•
•
leggi da input l’altezza (H)
leggi da input la base (B)
calcola l’area H*B
dai in output il risultato
Calcola
Click to l’area
edit Master
di un rettangolo
title style
START
Leggi Altezza
Leggi Base
Area = Base*Altezza
Stampa Area
STOP
Click
Conversione
to edit Master
lire in
title
euro
style
• leggi da input l’importo in lire
• calcola il corrispettivo in Euro
• dai in output il risultato
Click
Conversione
to edit Master
lire in
title
Euro
style
START
Leggi Lire
Euro = Lire/1936,27
Stampa Euro
STOP
Click to edit
IF-THEN-ELSE
Master title style
• selezione tra due istruzioni sulla base di una condizione
I
Then
Else
O
Click
Massimo
to edit tra
Master
due numeri
title style
• leggi X
• leggi Y
• se X > Y
– stampa X
altrimenti
– stampa Y
Click
Massimo
to edit tra
Master
due numeri
title style
Click to edit
Pari Master
o disparititle style
• leggi N
• dividi N per 2
• se resto = 0
– scrivi “N è pari”
altrimenti
– scrivi “N è dispari”
Click to edit
Pari Master
o disparititle style
Click to edit
WHILE-DO
Master title style
I
O
Click to edit
ESEMPIO
Master title style
• CALCOLO DEL FATTORIALE
• N!=N*(N-1)*(N-2)*…*2
START
Leggi N
F=N
N>1?
no
yes
N=N-1
Stampa F
F=F*N
STOP
Click to REPEAT-UNTIL
edit Master title style
I
O
Click to edit
ESEMPIO
Master title style
• CALCOLO DEL FATTORIALE
• N!=N*(N-1)*(N-2)*…*2
Scambio
Click todei
editvalori
Master
di due
titlevariabili
style
•
•
•
•
•
•
•
Leggi valore prima variabile X
Leggi valore seconda variabile Y
Conserva X in una variabile temporanea Aux
Assegna il valore di Y ad X
Assegna il valore di Aux a Y
Scrivi X
Scrivi Y
dei valori
di due variabili
ClickScambio
to edit
Master
title style
Click to editEsercizi
Master title style
•
•
•
•
•
dati 2 numeri in input trovare e stampare in output il max
dati 3 numeri in input trovare e stampare in output il max
dati 3 numeri in input stamparli in ordine crescente
dati 2 numeri in input stampare in output la somma
sul prezzo di un prodotto viene praticato lo sconto del 3% se costa
meno di 1.000.000 e del 5% se costa di più; dato in input il prezzo P,
calcolare il prezzo da pagare secondo la regola sopra descritta
• sul prezzo di un biglietto di un treno viene applicato un supplemento
del 7% se il treno è di tipo "a", del 12% se è di tipo "b" e del 18% se è
di tipo "c"; per gli altri treni non c'è supplemento; calcolare il prezzo
totale del biglietto, a seconda del tipo di treno e comunicare il tipo di
treno con il prezzo calcolato
Click to editEsercizi
Master title style
• dati in input i min, ore e sec stampare in output il totale
dei secondi
• data in input una data verificare se è giusta
• dato in input 100 valori stampare in output la somma dei
numeri positivi e la somma dei negativi
• dato in input una parola stampare in output se è una
palindrome o no
• dato in input una parola stampare in output il numero
delle vocali
Click
Algoritmo
to edit Master
e programma
title style
• ogni computer è una macchina in grado di
eseguire azioni elementari su dati
• l'esecuzione delle azioni elementari viene
attivata tramite sequenze di istruzioni
• le istruzioni sono espresse attraverso frasi di
un opportuno linguaggio di
programmazione
• un programma non è altro che la formulazione testuale di un algoritmo in un
linguaggio di programmazione
Algoritmo
e programma
Click to
edit Master
title style
problema
algoritmo
metodo
risolutivo
programma
linguaggio
di
programmazione
un programma è la formulazione testuale, in un
certo linguaggio di programmazione, di un
algoritmo che risolve un dato problema.
Scarica