Top Banner
Daniele Loiacono Algoritmi Fondamenti di Informatica
16

Algoritmi - Intranet DEIBhome.deib.polimi.it/.../Teaching/Fondamenti/FI1718_Algoritmi.pdf · Daniele Loiacono Cos’è un algoritmo? qUna sequenza finita di operazioni elementari

Feb 06, 2018

Download

Documents

trinhnga
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Algoritmi - Intranet DEIBhome.deib.polimi.it/.../Teaching/Fondamenti/FI1718_Algoritmi.pdf · Daniele Loiacono Cos’è un algoritmo? qUna sequenza finita di operazioni elementari

Daniele Loiacono

AlgoritmiFondamenti di Informatica

Page 2: Algoritmi - Intranet DEIBhome.deib.polimi.it/.../Teaching/Fondamenti/FI1718_Algoritmi.pdf · Daniele Loiacono Cos’è un algoritmo? qUna sequenza finita di operazioni elementari

Daniele Loiacono

Cos’è l’informatica?

q È la scienza che si occupa della rappresentazionedell’informazione e della sua elaborazione e gestione

Si occupa dell’informazione, che fa parte di ogni attività umana, e non riguarda solo i calcolatoriSi occupa della rappresentazione, cioè di come modellare la realtà astraendo gli aspetti importanti da quelli trascurabiliSi occupa di elaborare e gestire l’informazione, cioè di trasformarla opportunamente per raggiungere lo scopo desiderato

q È lo studio sistematico degli algoritmi che descrivono e trasformano l’informazione: la loro teoria, analisi, progetto, efficienza, realizzazione e applicazione

Page 3: Algoritmi - Intranet DEIBhome.deib.polimi.it/.../Teaching/Fondamenti/FI1718_Algoritmi.pdf · Daniele Loiacono Cos’è un algoritmo? qUna sequenza finita di operazioni elementari

Daniele Loiacono

Page 4: Algoritmi - Intranet DEIBhome.deib.polimi.it/.../Teaching/Fondamenti/FI1718_Algoritmi.pdf · Daniele Loiacono Cos’è un algoritmo? qUna sequenza finita di operazioni elementari

Daniele Loiacono

Cos’è un algoritmo?

q Una sequenza finita di operazioni elementari tali che:siano comprensibili ad uno specifico esecutore possano essere eseguite senza ambiguitàpermettano di risolvere uno specifico problema

q Es. istruzioni IKEApassi elementarisenza ambiguitàraggiungono lo scopo

Page 5: Algoritmi - Intranet DEIBhome.deib.polimi.it/.../Teaching/Fondamenti/FI1718_Algoritmi.pdf · Daniele Loiacono Cos’è un algoritmo? qUna sequenza finita di operazioni elementari

Daniele Loiacono

Un esempio

q Come si calcola la radice quadrata di x?

q Definisce la radice quadrata ma non come si calcolaq Invece…

1. x ß radicando2. y ß (x+1)/23. Se y2 è abbastanza vicino ad x, y è la radice cercata4. Altrimenti,

y ß 0.5 * (y + x/y)5. Ricomincia dal punto 3

Page 6: Algoritmi - Intranet DEIBhome.deib.polimi.it/.../Teaching/Fondamenti/FI1718_Algoritmi.pdf · Daniele Loiacono Cos’è un algoritmo? qUna sequenza finita di operazioni elementari

Daniele Loiacono

Un esempio

q Come si calcola la radice quadrata di x?

q Definisce la radice quadrata ma non come si calcolaq Invece…

1. x ß radicando2. y ß (x+1)/23. Se y2 è abbastanza vicino ad x, y è la radice cercata4. Altrimenti,

y ß 0.5 * (y + x/y)5. Ricomincia dal punto 3 VARIABILI

Page 7: Algoritmi - Intranet DEIBhome.deib.polimi.it/.../Teaching/Fondamenti/FI1718_Algoritmi.pdf · Daniele Loiacono Cos’è un algoritmo? qUna sequenza finita di operazioni elementari

Daniele Loiacono

Un esempio

q Come si calcola la radice quadrata di x?

q Definisce la radice quadrata ma non come si calcolaq Invece…

1. x ß radicando2. y ß (x+1)/23. Se y2 è abbastanza vicino ad x, y è la radice cercata4. Altrimenti,

y ß 0.5 * (y + x/y)5. Ricomincia dal punto 3 OPERAZIONI

ARITMETICHE

Page 8: Algoritmi - Intranet DEIBhome.deib.polimi.it/.../Teaching/Fondamenti/FI1718_Algoritmi.pdf · Daniele Loiacono Cos’è un algoritmo? qUna sequenza finita di operazioni elementari

Daniele Loiacono

Un esempio

q Come si calcola la radice quadrata di x?

q Definisce la radice quadrata ma non come si calcolaq Invece…

1. x ß radicando2. y ß (x+1)/23. Se y2 è abbastanza vicino ad x, y è la radice cercata4. Altrimenti,

y ß 0.5 * (y + x/y)5. Ricomincia dal punto 3 I/O

Page 9: Algoritmi - Intranet DEIBhome.deib.polimi.it/.../Teaching/Fondamenti/FI1718_Algoritmi.pdf · Daniele Loiacono Cos’è un algoritmo? qUna sequenza finita di operazioni elementari

Daniele Loiacono

Un esempio

q Come si calcola la radice quadrata di x?

q Definisce la radice quadrata ma non come si calcolaq Invece…

1. x ß radicando2. y ß (x+1)/23. Se y2 è abbastanza vicino ad x, y è la radice cercata4. Altrimenti,

y ß 0.5 * (y + x/y)5. Ricomincia dal punto 3 DECISIONI

Page 10: Algoritmi - Intranet DEIBhome.deib.polimi.it/.../Teaching/Fondamenti/FI1718_Algoritmi.pdf · Daniele Loiacono Cos’è un algoritmo? qUna sequenza finita di operazioni elementari

Daniele Loiacono

Un altro esempio

q Cercare, in una lista ordinata, il codice IATA corrispondentead un dato areoporto

q Cercare, in una lista ordinata, a che aeroporto corrispondeun certo codice IATA

IATA

Page 11: Algoritmi - Intranet DEIBhome.deib.polimi.it/.../Teaching/Fondamenti/FI1718_Algoritmi.pdf · Daniele Loiacono Cos’è un algoritmo? qUna sequenza finita di operazioni elementari

Daniele Loiacono

Un ultimo esempio

q https://www.youtube.com/watch?v=6hfOvs8pY1k&t=1sq Proviamo qualcosa di completamente diverso

1. Alzatevi tutti in piedi2. Ognuno di voi vale 13. Trova un compagno/a ancora in piedi

a) sommate i vostri due valori, il risultato èil vostro nuovo valore

b) uno dei due si deve sedere e l’altro deve restare in piedi4. Se al punto 3. non avete trovato un compagno, il vosto

valore non cambia e dovete restare in piedi5. Ricominciate dal punto 3, finchè non resta in piedi una sola

persona in tutta la stanza6. Il valore dell’ultima persona rimasta in piedi è il numero di

persone presenti nella stanza

Page 12: Algoritmi - Intranet DEIBhome.deib.polimi.it/.../Teaching/Fondamenti/FI1718_Algoritmi.pdf · Daniele Loiacono Cos’è un algoritmo? qUna sequenza finita di operazioni elementari

Daniele Loiacono

Dal problema alla soluzione automatica

q Ci occuperemo di problemi che riguardano la gestione e l’elaborazione dell’informazione

q Vedremo come passare dalla specifica di un problema alla sua soluzione automatica attraverso l’uso di un calcolatore

La specifica è una descrizione semi-formale del problemaÈ necessario passare dalla specifica ad un algoritmo che risolve il problema datoInfine affinché l’algoritmo trovato sia eseguibile dal calcolatore dovrà essere definito in un linguaggio comprensibile al calcolatore stesso

Page 13: Algoritmi - Intranet DEIBhome.deib.polimi.it/.../Teaching/Fondamenti/FI1718_Algoritmi.pdf · Daniele Loiacono Cos’è un algoritmo? qUna sequenza finita di operazioni elementari

Daniele Loiacono

Dalla specifica all’algoritmo

q Il processo che porta dalla specifica di un problema ad un algoritmo che lo risolve non è automatico e non è facile da formalizzare

La specifica spesso può essere poco chiara o ambiguaLa scrittura di un algoritmo richiede uno sforzo creativo

q Come si impara a progettare un algoritmo?Utilizzare un approccio incrementaleRealizzarlo per raffinamenti successiviFare molta pratica

q QualitàCorrettezza: risolve il problema e prende in considerazione tutti i casi possibiliEfficienza: usa con parsimonia le risorse (es. tempo)

q La correttezza è fondamentale ma difficile da verificare, l’efficienza è desiderabile e facile da misurare

Page 14: Algoritmi - Intranet DEIBhome.deib.polimi.it/.../Teaching/Fondamenti/FI1718_Algoritmi.pdf · Daniele Loiacono Cos’è un algoritmo? qUna sequenza finita di operazioni elementari

Daniele Loiacono

Come si formalizza un algoritmo?

q Una buon processo di progettazione si conclude con la definizione precisa e concisa dell’algoritmo ideato

q Alcuni linguaggi semi-formali spesso usatiPseudo-codice

se A > 0 allora A = A + 1 altrimenti A = 0

Diagrammi di flusso (o schemi a blocchi)

• Blocco di input dati

• Blocchi di inizio/fine dell’esecuzione

• Blocco esecutivo

• Blocco condizionale

• Blocco di output dati

• Flusso di controllo delle operazioni

leggi…

…test…?

inizio fine

scrivi…

assegnamento

…test… ?

Page 15: Algoritmi - Intranet DEIBhome.deib.polimi.it/.../Teaching/Fondamenti/FI1718_Algoritmi.pdf · Daniele Loiacono Cos’è un algoritmo? qUna sequenza finita di operazioni elementari

Daniele Loiacono

1. Leggi N ed M2. MIN = il minimo tra N ed M3. X = 1 4. MCD = 15. Fintantoché X < MIN

I. X = X + 1II. se X divide sia N che M, allora MCD = X

6. Scrivi MCD

Esempio: M.C.D. di due naturali positivi

Page 16: Algoritmi - Intranet DEIBhome.deib.polimi.it/.../Teaching/Fondamenti/FI1718_Algoritmi.pdf · Daniele Loiacono Cos’è un algoritmo? qUna sequenza finita di operazioni elementari

Daniele Loiacono

Leggere i valori delle coordinate dei vertici

Triangolo degenere?

Calcolare la lunghezza dei lati

Calcolare il perimetro come somma delle lunghezze

Vuoi continuare?

no

no

q Date le coordinate di tre punti, riconoscere se sono i vertici di un triangolo non degenere, e nel caso calcolarne il perimetro

Scrivi: “Triangolodegenere”

INIZIO

FINE

Scrivi il valore del perimetro

Esempio: perimetro di un triangolo