34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del Algoritmi e basi del C C Marco D. Santambrogio – [email protected] Ver. aggiornata al 13 Marzo 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – [email protected] Ver. aggiornata al 13 Marzo 2014

Embed Size (px)

Citation preview

Page 1: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Algoritmi e basi del Algoritmi e basi del CC

Marco D. Santambrogio – [email protected]. aggiornata al 13 Marzo 2014

Page 2: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Lab e FeedbackLab e Feedback

• Ho solo 7 gruppi… tutti al lunedì

2

Page 3: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Lab e FeedbackLab e Feedback

• Ho solo 7 gruppi… tutti al lunedì

3

WAT

Page 4: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 5: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 6: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Linguaggio naturaleLinguaggio naturale

6

Page 7: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Linguaggio naturale: Linguaggio naturale: ambiguo!ambiguo!

7

Page 8: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

What it’s all about!What it’s all about!

8

Page 9: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

What it’s all about!What it’s all about!

9

Page 10: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

What it’s all about!What it’s all about!

10

Page 11: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 12: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

AlgoritmiAlgoritmi

12

Page 13: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 14: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 15: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 16: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 17: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 18: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 19: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 20: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 21: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 22: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 23: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 24: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 25: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 26: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 27: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 28: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ricomincio Ricomincio sulla metasulla meta’’ superioresuperiore

28

dt dt

d6d6 d7d7 d8d8 d9d9 d10d10 d11d11

dx=d9

Page 29: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 30: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 31: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 32: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 33: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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

Page 34: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Marzo 2014

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