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

Algoritmi e basi del C - Intranet DEIBhome.deib.polimi.it/santambr/dida/ieim/2016/doc/lezioni/PDF/IEIM... · DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Obiettivi • Algoritmi §

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

Algoritmi

3

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