Sei sulla pagina 1di 49

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Algoritmi e basi del C

Marco D. Santambrogio – marco.santambrogio@polimi.it


Ver. 1
Obiettivi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

• Algoritmi
§ Pseudocodice
§ Diagramma di flusso

• Una prima introduzione al C


§ Un primo programma
§ Tipi di dato
§ Strutture di controllo

2
What it’s all about!
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

3
What it’s all about!
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

4
What it’s all about!
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

5
What it’s all about!
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

6
What it’s all about!
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Algoritmi

8
Algortimo e Programma
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

• Algoritmo
§ (idea) Descrizione della soluzione di problema scritta
in modo da poter essere eseguita da un esecutore
(eventualmente diverso dall’autore dell’algoritmo)
§ aka (= definizione di algoritmo) Sequenza finita di
passi atomici, non ambigui che operano su dati per
arrivare alla soluzione del problela

• Programma
§ Algoritmo scritto in modo da poter essere eseguito da
un calcolatore (esecutore automatico)

9
Come realizzare un algoritmo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

• Parte 0/4: La brutta notizia!

how to solve it di Poyla G. - http://math.hawaii.edu/home/pdf/putnam/PolyaHowToSolveIt.pdf

10
Come realizzare un algoritmo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

• Parte 1/4: Capire il problema


§ Quale e’ il problema generale che si
scerca di risolvere?

11
Come realizzare un algoritmo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

•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

12
Come realizzare un algoritmo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

• 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

13
Come realizzare un algoritmo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

• Parte 4/4: Ragionare e comprendere


§ Comprendere quello che si è fatto e
dove l’algoritmo individuato possa
essere applicato al meglio

La pratica è fondamentale!

14
Testare il proprio lavoro!!!
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

• Se vi è qualche cosa che non


funziona nel vostro
programma/algoritmo, gli utenti lo
troveranno!

15
Acquisto DVD
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Novita’
Novita’
Dove lo cerco? Azione
In quale settore? …

Indicatori di settore Trovato il settore, come


trovo il mio DVD?

Ordine alfabetico

16
Alogoritmo per l’acquisto DVD
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

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

17
CERCA: contesto e problema
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

• 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

18
Algoritmo CERCA
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

• Noti
§ s={d0, d1, …, dn}, ord. alfabeticamente
§ DVD cercato = dt

1.Ci sono DVD?


§ Allora
1. Leggo il titolo del primo DVD in s
2. Se il titolo e’ il titolo cercato
Allora concludo la ricerca con successo
Altrimenti passo al DVD successivo
§ Altrimenti concludo la ricerca con esito
negativo

19
CERCA: osservazioni
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

• 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

20
CERCA… migliorata
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

• 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 s
2. 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

21
Graficamente: Noti
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

dt

s={d0, d1, …, d11}

d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11

22
Leggo dx e lo confronto con dt
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

dx=d6 d6 = dt ?

NO

d6 < dt

23
Ricomincio sulla meta’ superiore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

d6 d7 d8 d9 d10 d11

dt
dx=d9

24
Leggo dx e lo confronto con dt
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

dx=d9 d9 = dt ?

SI d9

Termino con successo la


mia ricerca comprando d9
25
Come si specifica un algoritmo?
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

• Utilizzando dello pseudocodice


Se A > B allora B = A altrimenti A = B

• Utilizzando dei diagrammi di flusso


(aka schemi a blocchi)

Inizio Fine Assegnamento

Leggi Test Scrivi

26
Massimo Comune Divisore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

• 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

27
MCD: diagramma di flusso
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Inizio Leggi A e B

min=minimo{A,B}
tmp=1
MCD=1

no
Stampa MCD tmp<min?

si
tmp = tmp + 1
Fine
tmp divide A e no
B
si
MCD = tmp
28
MCD: diagramma di flusso
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Inizio Leggi A e B

min=minimo{A,B}
tmp=1
MCD=1

no
Stampa MCD tmp<min?

si
tmp = tmp + 1
Fine
tmp divide A e no
B
si
MCD = tmp
29
MCD: diagramma di flusso
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Inizio Leggi A e B

min=minimo{A,B}
tmp=1
MCD=1

no
Stampa MCD tmp<min?

si
tmp = tmp + 1
Fine
tmp divide A e no
B
si
MCD = tmp
30
MCD: diagramma di flusso
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Inizio Leggi A e B

min=minimo{A,B}
tmp=1
MCD=1

no
Stampa MCD tmp<min?

si
tmp = tmp + 1
Fine
tmp divide A e no
B
si
MCD = tmp
31
MCD: diagramma di flusso
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Inizio Leggi A e B

min=minimo{A,B}
tmp=1
MCD=1

no
Stampa MCD tmp<min?

si
tmp = tmp + 1
Fine
tmp divide A e no
B
si
MCD = tmp
32
MCD: diagramma di flusso
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Inizio Leggi A e B

min=minimo{A,B}
tmp=1
MCD=1

no
Stampa MCD tmp<min?

si
tmp = tmp + 1
Fine
tmp divide A e no
B
si
MCD = tmp
33
MCD: diagramma di flusso
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Inizio Leggi A e B

min=minimo{A,B}
tmp=1
MCD=1

no
Stampa MCD tmp<min?

si
tmp = tmp + 1
Fine
tmp divide A e no
B
si
MCD = tmp
34
MCD: pseudocodice
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

1. Leggi A e B
2. min= il minimo tra A e B
3. tmp = 1
4. MCD = 1
5. Finche’ tmp < min
1. tmp = tmp + 1
2. Se tmp divide A e B
1. Allora MCD = tmp
6. Stampa MCD
35
MCD: pseudocodice
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

1. Leggi A e B
2. min= il minimo tra A e B
3. tmp = 1
4. MCD = 1
5. Finche’ tmp < min
1. tmp = tmp + 1
2. Se tmp divide A e B
1. Allora MCD = tmp
6. Stampa MCD
36
MCD: pseudocodice
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

1. Leggi A e B
2. min= il minimo tra A e B
3. tmp = 1
4. MCD = 1
5. Finche’ tmp < min
1. tmp = tmp + 1
2. Se tmp divide A e B
1. Allora MCD = tmp
6. Stampa MCD
37
MCD: pseudocodice
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

1. Leggi A e B
2. min= il minimo tra A e B
3. tmp = 1
4. MCD = 1
5. Finche’ tmp < min
1. tmp = tmp + 1
2. Se tmp divide A e B
1. Allora MCD = tmp
6. Stampa MCD
38
MCD: pseudocodice
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

1. Leggi A e B
2. min= il minimo tra A e B
3. tmp = 1
4. MCD = 1
5. Finche’ tmp < min
1. tmp = tmp + 1
2. Se tmp divide A e B
1. Allora MCD = tmp
6. Stampa MCD
39
Come specificare un algortimo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Vorremmo farci nuovi amici…

40
Come specificare un algortimo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Vorremmo farci nuovi amici…

41
L’Algoritmo dell’amicizia
Dr. Sheldon Cooper, PhD DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

42
Un «ultimo» esempio….
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

43
HowTo: compilare ed eseguire
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

• Per poter eseguire il nostro programma, bisogna


tradurlo in codice macchina
§ Questa operazione viene eseguita dal compilatore (e.g.,
gcc)

• Scritto e salvato il file sorgente (e.g., sul Desktop,


nel file primo.c),
• Dobbiamo compilare ed eseguire un programma
utilizzando una shell (e.g., bash)
$ cd Desktop
$ gcc primo.c –o exe
$ ./exe
44
Piattaforme utilizzate…
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Indirizzo base:

base = https://santambrogio.faculty.polimi.it/dida/infob/

Strumenti usanti per sviluppare


codice/esercitarsi
base/2021/tools.htm

45
Il primo programma: ciao mondo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

46
Il primo programma: ciao mondo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

48
Fonti per lo studio + Credits
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

• Fonti per lo studio


§ how to solve it, Poyla G
• http://math.hawaii.edu/home/pdf/putnam/PolyaHowToS
olveIt.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

Potrebbero piacerti anche