Upload
nguyenbao
View
215
Download
0
Embed Size (px)
Citation preview
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Algoritmi e basi del C
Marco D. Santambrogio – [email protected]
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Obiettivi
• Algoritmi§ Pseudocodice§ Diagramma di flusso
• Una prima introduzione al C§ Un primo programma§ Tipi di dato§ Strutture di controllo
2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Algortimo e Programma
• Algoritmo§ Descrizione della soluzione di problema scritta in
modo da poter essere eseguita da un esecutore (eventualmente diverso dall’autore dell’algoritmo)
§ Sequenza di istruzioni che operano su dati.
• Programma§ Algoritmo scritto in modo da poter essere eseguito da
un calcolatore (esecutore automatico)
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Come realizzare un algoritmo
• Parte 0/4: La brutta notizia!
5
how to solve it di Poyla G. - http://math.hawaii.edu/home/pdf/putnam/PolyaHowToSolveIt.pdf
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Come realizzare un algoritmo
• Parte 1/4: Capire il problema§ Quale e’ il problema generale che si
scerca di risolvere?
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Come 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
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Come 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
8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Come 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!
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Testare il proprio lavoro!!!
• Se vi è qualche cosa che non funziona nel vostro programma/algoritmo, gli utenti lo troveranno!
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Acquisto DVD
11
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 l’acquisto DVD
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
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CERCA: contesto e problema
• 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
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Algoritmo CERCA
• Noti§ s={d0, d1, …, dn}, ord. alfabeticamente§ DVD cercato = dt
1. Ci sono DVD?§ Allora
1. Leggo il titolo del primo DVD in s2. Se il titolo e’ il titolo cercato
Allora concludo la ricerca con successoAltrimenti passo al DVD successivo
§ Altrimenti concludo la ricerca con esito negativo
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CERCA: 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
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CERCA… migliorata
• Noti§ s={d0, d1, …, dn}, ord. alfabeticamente§ DVD cercato = dt
1. Ci sono DVD?§ Allora
1. Leggo il titolo del DVD (dx) nel mezzo di s2. Se il titolo di dx e’ il titolo cercato
– Allora concludo la ricerca con successo– 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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Graficamente: Noti
17
d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11
s={d0, d1, …, d11}
dt
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Leggo dx e lo confronto con dt
18
dx=d6
d6 dt <
d6 dt = ?
NO
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Ricomincio sulla meta’ superiore
19
dt
d6 d7 d8 d9 d10 d11
dx=d9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Leggo dx e lo confronto con dt
20
dx=d9 d9 dt = ?
SI
Termino con successo la mia ricerca comprando d9
d9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Come si specifica un algoritmo?
• Utilizzando dello pseudocodice
• Utilizzando dei diagrammi di flusso (aka schemi a blocchi)
21
Se A > B allora B = A altrimenti A = B
TestLeggi Scrivi
Inizio Fine Assegnamento
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Massimo 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
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MCD: 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
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MCD: diagramma di flusso
24
Inizio Leggi A e B
min=minimo{A,B}tmp=1MCD=1
tmp<min?
tmp = tmp + 1
tmp divide A e B
MCD = tmp
Stampa MCD
Fine
no
no
si
si
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
• 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