Upload
andrea-baldini
View
212
Download
0
Embed Size (px)
Citation preview
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Algoritmi e basi del Algoritmi e basi del CC
Marco D. Santambrogio – [email protected]. aggiornata al 13 Marzo 2014
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Lab e FeedbackLab e Feedback
• Ho solo 7 gruppi… tutti al lunedì
2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Lab e FeedbackLab e Feedback
• Ho solo 7 gruppi… tutti al lunedì
3
WAT
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Lab e FeedbackLab e Feedback
• Ho solo 7 gruppi… tutti al lunedì
• Feedback 1ma lezione: Hai trovato piu' utili gli esempi "descrittivi" o quelli in C?
Entrambi egualmente utili
4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Lab e FeedbackLab e Feedback
• Ho solo 7 gruppi… tutti al lunedì
• Feedback 1ma lezione: Hai trovato piu' utili gli esempi "descrittivi" o quelli in C?
Entrambi egualmente utili
5
WAT
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Linguaggio naturaleLinguaggio naturale
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Linguaggio naturale: Linguaggio naturale: ambiguo!ambiguo!
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
What it’s all about!What it’s all about!
8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
What it’s all about!What it’s all about!
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
What it’s all about!What it’s all about!
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
ObiettiviObiettivi
• Algoritmi Pseudocodice Diagramma di flusso
• Una prima introduzione al C Un primo programma Tipi di dato Strutture di controllo
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
AlgoritmiAlgoritmi
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Algortimo e ProgrammaAlgortimo e Programma
• Algoritmo DescrizioneDescrizione della soluzione di problemasoluzione di problema scritta in modo da poter essere eseguita da un esecutoreesecutore (eventualmente diverso dall’autore dell’algoritmo)
Sequenza di istruzioniistruzioni che operano su datidati.
• Programma AlgoritmoAlgoritmo scritto in modo da poter essere eseguito da un calcolatorecalcolatore (esecutore automatico)
1313
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Come realizzare un algoritmoCome realizzare un algoritmo
• Parte 0/4: La brutta notizia!
14
how to solve it di Poyla G. - http://math.hawaii.edu/home/pdf/putnam/PolyaHowToSolveIt.pdf
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Come realizzare un algoritmoCome realizzare un algoritmo
• Parte 1/4: Capire il problema Quale e’ il problema generale che si scerca di risolvere?
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Come realizzare un algoritmoCome realizzare un algoritmo
•Parte 2/4: Fare/creare un piano
Ci possono essere diverse strategie per risolvere lo stesso problema•Ipotizzare e verificare•Cercare dei pattern•Risolvere problemi più piccoli•Disegnare uno schema
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Come realizzare un algoritmoCome realizzare un algoritmo
• Parte 3/4: Portare avanti il piano Mettere in azione il vostro piano! Rimanere sul piano deciso a meno che non vi siano evidenti motivi per credere che esso non funzionerà più
La pazienza è il vostro miglior alleato
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Come realizzare un algoritmoCome realizzare un algoritmo
• Parte 4/4: Ragionare e comprendere Comprendere quello che si è fatto e dove l’algoritmo individuato possa essere applicato al meglio
La pratica è fondamentale!
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Testare il proprio Testare il proprio lavoro!!!lavoro!!!
• Se vi è qualche cosa che non funziona nel vostro programma/algoritmo, gli utenti lo troveranno!
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Acquisto DVDAcquisto DVD
20
Dove lo cerco?In quale settore?
Novita’Azione
…
Indicatori di settore
Novita’
Trovato il settore, come trovo il mio DVD?
Ordine alfabetico
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alogoritmo per lAlogoritmo per l’’acquisto acquisto DVDDVD
1.Acquisisci il nome del settore (s) del DVD (d)
2.Vai al settore (s)3.Cerca (t)4.Prendi il DVD (d)
• Acquisisci e Cerca sono anche loro algoritmi
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CERCA: contesto e CERCA: contesto e problemaproblema
• Contesto Sei nel settore (s) corretto Nel settore sono presenti diversi DVD• Il settore puo’ essere visto come un insieme di DVD: s={d0, d1, …, dn}
• Problema Devo trovare il DVD (dt) tra tutti i DVD presenti nel settore (s)
Aiuto: il settore e’ ordinato• I DVD sono ordinati alfabeticamente
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Algoritmo CERCAAlgoritmo CERCA
• Noti s={d0, d1, …, dn}, ord. alfabeticamente
DVD cercato = dt
1.Ci sono DVD? Allora
• Leggo il titolo del primo DVD in s• Se il titolo e’ il titolo cercato
Allora concludo la ricerca con successoAltrimenti passo al DVD successivo
Altrimenti concludo la ricerca con esito negativo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CERCA: osservazioniCERCA: osservazioni
• Cosa succede se il settore e’ vuoto?
• Come funziona la mia ricerca? Se in s vi sono 10000 DVD e io cerco Zorro?
Scenario ancora peggiore•Voglio cercare il numero del mio professore di IEIM (Santambrogio) nella rubrica telefonica di Milano..
• Esistono diversi modi per risolvere un problema
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CERCA… migliorataCERCA… migliorata
• Noti s={d0, d1, …, dn}, ord. alfabeticamente DVD cercato = dt
1.Ci sono DVD? Allora
• Leggo il titolo del DVD (dx) nel mezzo di s• Se il titolo di dx e’ il titolo cercato
1.Allora concludo la ricerca con successo2.Altrimenti se dx < dt
» allora ricomincio da 1 considerando la meta’ superiore di s
» Altrimenti ricomincio da 1 considerando la meta’ inferiore di s
Altrimenti concludo la ricerca con esito negativo
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Graficamente: NotiGraficamente: Noti
26
d0d0 d1d1 d2d2 d3d3 d4d4 d5d5 d6d6 d7d7 d8d8 d9d9 d10d10 d11d11
s={d0, d1, …, d11}
dt dt
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Leggo dLeggo dx x e lo confronto con e lo confronto con ddtt
27
dx=d6
d6d6 dt dt <
d6d6 dt dt = ?
NO
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Ricomincio Ricomincio sulla metasulla meta’’ superioresuperiore
28
dt dt
d6d6 d7d7 d8d8 d9d9 d10d10 d11d11
dx=d9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Leggo dLeggo dx x e lo confronto con e lo confronto con ddtt
29
dx=d9 d9d9 dt dt = ?
SI
Termino con successo la mia ricerca comprando d9
d9d9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Come si specifica un Come si specifica un algoritmo?algoritmo?
• Utilizzando dello pseudocodice
• Utilizzando dei diagrammi di flusso (aka schemi a blocchi)
30
Se A > B allora B = A altrimenti A = BSe A > B allora B = A altrimenti A = B
TestTestLeggi Scrivi
Inizio Fine Assegnamento
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Massimo Comune DivisoreMassimo Comune Divisore
• Definizione Dicesi Massimo Comune Divisore (M.C.D.) il piu’ grande tra i divisori comuni a due o piu’ numeri
• Esempi Dati A=12, B=15
•Divisori comuni: 1, 3 - MCD=3
Dati A=10, B=30 e C=20•Divisori comuni: 1, 2, 5, 10 - MCD=10
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MCD: pseudocodiceMCD: pseudocodice
1.Leggi A e B2.min= il minimo tra A e B3.tmp = 14.MCD = 15.Finche’ tmp < min
1. tmp = tmp + 12. Se tmp divide A e B
1. Allora MCD = tmp
6.Stampa MCD
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MCD: diagramma di flussoMCD: diagramma di flusso
33
Inizio Leggi A e B
min=minimo{A,B}tmp=1MCD=1
tmp<min?tmp<min?
tmp = tmp + 1
tmp divide A e B
tmp divide A e B
MCD = tmp
Stampa MCD
Fine
no
no
si
si
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Fonti per lo studio + CreditsCredits• Fonti per lo studio
how to solve it, Poyla G• http://math.hawaii.edu/home/pdf/putnam/PolyaHowToSolveIt.pdf
Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill• Capitolo 3
Introduzione ai sistemi informatici, D. Sciuto, G. Buonanno, L. Mari, 4a Ed, McGrawHill• Capitolo 3, 4
The Art & Craft of Computing, S. Ceri, D. Mandrioli, L. Sbattella, Addison-Wesley• Capitolo 3