M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Algoritmi
Fondamentidi informatica
Michele [email protected]
http://www.ce.unipr.it/people/tomamic
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Informatica
Informatica: information automatique
Programmatore: individua una sequenza di istruzioni per risolvere un problema
Calcolatore, o automa: esegue istruzioni
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Dal problema alla soluzione
AnalisiAnalisiPro
blem
a
CodificaCodifica
CompilazioneCompilazione
EsecuzioneEsecuzione
DescrizioneDescrizione
Soluzio
ne
infor
male
Algorit
mo
sem
i-for
male
Codice
alto
livell
o
Codice
mac
china
Soluzio
ne
Programmatore
Calcolatore
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Algoritmo
Il termine deriva dal matematicoarabo Al-Khwarizmi (IX sec. DC)
Metodo per sommare duenumeri nel sistema hindu
Medioevo: algorismus = complesso di operazioni nel calcolo con numeri arabi
Oggi: algoritmo = sequenza finita di passi effettuabili per risolvere una classe di problemi in un tempo finito
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Elementi di un algoritmo
Passi elementari: azioni atomiche non scomponibili in azioni più semplici
Processo, o anche esecuzione: sequenza ordinata di passi
Dati in ingresso: istanza del problema
Dati in uscita:soluzione
Una ricettadi cucina è un
esempio dialgoritmo
Una ricettadi cucina è un
esempio dialgoritmo
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Proprietà degli algoritmi
Finitezza: composto da un numero finito di passi elementari
Non ambiguità (determinismo): i risultati non variano in funzione della macchina/persona che esegue l'algoritmo
Realizzabilità: deve essere eseguibile con le risorse a disposizione
Efficienza: preferibile uso minimo delle risorse
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Classi di problemi
Problemi non risolvibibiliEs. Questa frase è falsa
Incompletezza Gödel; indecidibilità terminazione
∀ formalizzazione della matematica che assiomatizza ℕ→ ∃ proposizione né dimostrabile né confutabile
RisolvibiliTrattabili (costo accettabile, “polinomiale”)
Non trattabili (costo “esponenziale”)
Calcolabilità: classificare risolvibili e non risolvibili
Complessità: “facili” e “difficili”
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
L'algoritmo della biblioteca
Per prendere un libro in biblioteca...
1. Si cerca la scheda del libro nello schedario(schede in ordine per autore e poi per titolo)
2. Si segna su un foglietto il numero di scaffale e la posizione del libro
3. Si ricerca lo scaffale indicato
4. Si accede alla posizione del libro
5. Lo si preleva
6. Si registra: data del prestito e nome dell'utente
Passi non elementari: scomposizione ricorsivain sottoproblemi via via più semplici (top-down)
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Cercare una scheda
Il primo passo può essereespanso nel seguente insiemedi passi (sottoprocedura):
1. Si prende la prima scheda dello schedario
2. Autore e titolo coincidono con quello ricercato?Si: scheda trovata, ricerca conclusaNo: si passa alla scheda successiva
3. Si torna a ripetere il controllo (2)
4. Esaurite le schede, il libro non è nella biblioteca
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Cercare più velocemente
Su schedario ordinato si può fare più in fretta1. Prendere scheda centrale tra quelle considerate
(all'inizio tutte)
2. Autore/titolo coincidono con quelli ricercati?Si: scheda trovata; ricerca finita
3. Autore/titolo vengono dopo quelli cercati?Si: interessa solo la prima parte delle schedeNo: interessa solo la seconda parte delle schede
4. Si ripete tutto sull'insieme dimezzato (1)
5. Esaurite le schede, il libro non è nella biblioteca
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Calcolo MCD (1)
Dati due numeri naturali, determinare il loro Massimo Comun Divisore MCD(m, n)
1. Costruire insieme divisori 1° numero
2. Costruire insieme divisori 2° numero
3. Intersecare i due insiemi
4. Individuare nell'intersezione l'elemento più grande
Nota: scomposizione in passi non elementari
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Calcolo MCD (2)
Dati due numeri naturali, determinare il loro Massimo Comun Divisore MCD(m, n)
1. Scomporre in fattori primi i due numeri
2. Considerare solo fattori comuni
3. Prendere quelli con esponente più piccolo
4. Moltiplicarli tra loro
Es. 54 = 21 · 33; 48 = 24 · 31
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Calcolo MCD (3)
Dati due numeri naturali, determinare il loro Massimo Comun Divisore MCD(m, n)
1. Se n = 0 → MCD = m; finito
2. r ← m – n; m ← n; n ← r
3. Ripetere dal punto 1
Euclide: MCD(m, n) = MCD(n, m-n), se n > 0
x è divisore di m ed n ↔ x è divisore di n ed m-n
m=kx; n=hx; → m-n=kx-hx=(k-h)x; …
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Calcolo MCD (4)
Dati due numeri naturali, determinare il loro Massimo Comun Divisore MCD(m, n)
1. Se n = 0 → MCD = m; finito
r ← m mod n (resto divisione intera); m ← n; n ← r
1. Ripetere dal punto 1
Euclide: MCD(m, n) = MCD(n, m mod n), se n > 0
x è divisore di m ed n ↔ x è divisore di n ed m mod n;
m mod n = m - n·q = kx - hxq = (k – hq)x; …
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Rappresentazione algoritmi
Occorre rappresentare:
I dati
I passi necessari
Il loro corretto ordinedi esecuzione
Due formalismi principali
Diagrammi di flusso
Pseudo codice
Anche unorigami è unesempio dialgoritmo
Anche unorigami è unesempio dialgoritmo
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Descrizione dei dati
Variabili (contenitori di valori)necessarie per esprimere levarie istanze di problemi
Una variabile si definisce in termini di:
Nome: il suo identificatore
Tipo: l’insieme dei valori che può assumere (carattere, stringa, intero, reale, booleano)
Valore: il valore assunto attualmente dalla var.
Non confondere nome, tipo e valore!
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Tipi di istruzioni
Assegnamento ed espressioni aritmetico-logiche
Istruzioni di I/O
Strutture di controllo
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Istruzioni di assegnamento: depositare un valore in una variabile
A ← 5
Espressioni aritmetiche: eseguire un calcolo aritmetico (e depositarne il risultato)
B + C
A ← A + B
Espressioni logiche: confronto o valutazione della veracità di una espressione logica
A = 5
A ≤ B
Operazioni aritmetiche...
Non è un assegnamento,
come sarebbe in C++
Non è un assegnamento,
come sarebbe in C++
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Istruzioni di I/O
Istruzioni di lettura: leggere dei dati da un dispositivo esterno (es. tastiera)
Leggi A
Istruzioni di scrittura: scrivere dei dati su un dispositivo esterno (es. schermo)
Scrivi A
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Strutture di controllo
Tre tipi di strutture di controllo:Sequenza lineare
Esecuzuione condizionata
Iterazione
Teorema di Böhm-Jacopini: è possibile scrivere algoritmi per risolvere qualunque problema usando solo queste strutture di
controllo (purché esista un algoritmo risolutivo)
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Diagramma di flusso
Flow-chart: formalismo grafico per gli algoritmiDescrizione più efficace e meno ambigua di una descrizione a parole
Costituito da due tipi di entità:Nodi
Archi
È un grafo orientatoPassi di un algoritmo e loro sequenza
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Tipi di nodi
StartStart
StopStop
Var ← ExprVar ← Expr
Condiz.Condiz.No
VarVar
ExprExpr
Si
Inizio
Fine
Elaborazione / assegnamento
Decisione
Lettura dati
Scrittura dati
Expr1 = Expr2
Expr1 ≠ Expr2
Expr1 < Expr2
Expr1 ≤ Expr2
Expr1 > Expr2
Expr1 ≥ Expr2
Expr1 = Expr2
Expr1 ≠ Expr2
Expr1 < Expr2
Expr1 ≤ Expr2
Expr1 > Expr2
Expr1 ≥ Expr2
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Strutture di controllo
While
Si
NoI O
Do-While
Si
No
I
O
If-Then-Else
If-Then
No
SiOI
No
SiOI
Es. “Batteregli albumifinché nonmontano”
Es. “Batteregli albumifinché nonmontano”
Es. “Se nonc'è il lievito, usaredue cucchiaini di
bicarbonato”
Es. “Se nonc'è il lievito, usaredue cucchiaini di
bicarbonato”
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Somma di 3 numeri
StartStart
Var1Var1
Var2Var2
Var3Var3
Somma ← Var1 + Var2 + Var3Somma ← Var1 + Var2 + Var3
SommaSomma
StopStop
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Somma di N numeri
StartStart
I ← 0
Somma ← 0
I ← 0
Somma ← 0
No
NN
Si
I < NI < N VarVarI ← I + 1
Somma ← Somma + Var
I ← I + 1
Somma ← Somma + Var
SommaSomma
StopStop
Controllo suvariabile I
Controllo suvariabile I
Variabile Iincrementata
nel corpodel ciclo
Variabile Iincrementata
nel corpodel ciclo
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Pseudo codice
Sorta di linguaggio che descrive un algoritmo attraverso istruzioni simili alle istruzioni di un linguaggio di programmazione
Si descrivono algoritmi utilizzando pseudo codice perché:
Più rapidi per appuntare bozze di soluzioni
Semplice (…) passare dalla descrizione in pseudo codice alla effettiva descrizione in un linguaggio di programmazione
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Strutture di controllo
Condizione semplice
Se condizione { …}
Condizione a due vie
Se condizione { …} Altrimenti { …}
Iterazione
Finché condizione { …}
Iterazione
Ripeti { …} Finché condizione
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Somma di 3 numeri
Leggi Var1Leggi Var2Leggi Var3Somma ← Var1 + Var2 + Var3Scrivi Somma
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Somma di N numeri
Leggi NI ← 0Somma ← 0Finché I < N {
Leggi VarSomma ← Somma + VarI ← I + 1
}Scrivi Somma
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Programmazione top-down
Tecnica consistente nella scomposizione ricorsiva di un problema in sotto problemi
Si presta molto bene per la definizione di algoritmi con i diagrammi di flusso
All’inizio il diagramma di flusso è rappresentato da un nodo (“soluzione al problema”)
Questo nodo viene scomposto in una rete di nodi, in modo ricorsivo
La scomposizione termina quando i singoli nodi rappresentano solo istruzioni eseguibili
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Somma di N numeri
StartStart
StopStop
Leggi e somma i numeriLeggi e somma i numeri
InizializzazioneInizializzazione
Stampa il risultatoStampa il risultato
I ← 0
Somma ← 0
I ← 0
Somma ← 0NN
I < NI < N
No
VarVar
Si
SommaSomma
StartStart
StopStop
Somma di N numeriSomma di N numeri
I ← I + 1
Somma ← Somma + Var
I ← I + 1
Somma ← Somma + Var
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Sistema software ad oggetti
Sistema procedurale
Insieme di procedure che si chiamano tra loro
Sistema ad oggetti
Insieme di oggetti che si scambiano messaggi
Per richiedere ad altri l’esecuzione di servizi
La complessità diminuisce tanto più quanto…
Lo stato dei singoli oggetti è nascosto
L’insieme dei servizi offerti dai singoli oggetti è coeso (ma generale)
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Approccio allo sviluppo
Programmazione procedurale: top-downAnalisi problema x trovare algoritmo risolutore
Scomposizione problema in problemi più semplici
OOP: top-down e bottom-up (riuso)Analisi problema e descrizione degli oggetti che ne fanno parte (astrazioni generali e coese)
Scomposizione oggetti in parti più semplici (e messaggi/servizi scambiati)
Definizione e riuso oggetti relativamente semplici
Composizione in oggetti più complessi
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Modularità e astrazione
Modularità
Codice di un oggetto scritto e mantenuto indipendentemente dal resto
Oggetto già creato passato facilmente tra gli altri componenti all'interno del sistema
Information-hiding o data-encapsulation
Interazione solo con i metodi di un oggetto
→ Dettagli interni dell'implementazione nascosti al mondo esterno (black-box)
M.
To
mai
uo
lo –
Fo
nd
amen
ti d
i in
form
atic
aM
. T
om
aiu
olo
– F
on
dam
enti
di
info
rmat
ica
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
Dip
. In
geg
ner
ia d
ell'i
nfo
rmaz
ion
e –
Un
iPR
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
htt
p:/
/ww
w.c
e.u
nip
r.it
/peo
ple
/to
mam
ic/
Riuso e sostituibilità
Riuso del codice
Oggetto già esistente → riusato in altri programmi
Anche se sviluppato (progetto/implem./test/debug) da altri, specialisti di un certo dominio
Sostituibilità e facilità di debugging
Oggetto problematico → rimosso dall'applicazione e sostituito con una diversa implementazione
Più facile isolare e risolvere i problemi
Come nel mondo reale: se un bullone si rompe, si sostituisce quello e non l'intera macchina