presentazione di powerpoint · arabo al-khwarizmi (ix sec. dc) metodo per sommare due numeri nel...

35
M. Tomaiuolo – Fondamenti di informatica M. Tomaiuolo – Fondamenti di informatica Dip. Ingegneria dell'informazione – UniPR Dip. Ingegneria dell'informazione – UniPR http://www.ce.unipr.it/people/tomamic/ http://www.ce.unipr.it/people/tomamic/ Algoritmi Fondamenti di informatica Michele Tomaiuolo [email protected] http://www.ce.unipr.it/people/tomamic

Upload: others

Post on 20-Sep-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 2: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 3: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 4: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 5: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 6: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 7: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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”

Page 8: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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)

Page 9: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 10: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 11: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 12: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 13: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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; …

Page 14: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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; …

Page 15: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 16: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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!

Page 17: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 18: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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++

Page 19: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 20: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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)

Page 21: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 22: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 23: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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”

Page 24: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 25: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 26: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 27: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 28: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 29: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 30: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 31: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 32: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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)

Page 33: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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

Page 34: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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)

Page 35: Presentazione di PowerPoint · arabo Al-Khwarizmi (IX sec. DC) Metodo per sommare due numeri nel sistema hindu Medioevo: algorismus = complesso di operazioni nel calcolo con numeri

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