45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Algoritmi e basi del C Struttura di un Struttura di un programma programma Marco D. Santambrogio – [email protected] Ver. aggiornata al 17 Marzo 2015

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – [email protected] Ver. aggiornata

Embed Size (px)

Citation preview

Page 1: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Algoritmi e basi del CAlgoritmi e basi del CStruttura di un programmaStruttura di un programma

Marco D. Santambrogio – [email protected]. aggiornata al 17 Marzo 2015

Page 2: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

CompitiniCompitini

• Compitini di INFO: 24 Aprile 2015• 4.15pm @ C.G.1 (Ed. 9)

21 Maggio 2015• 10.30am @ S.0.2 (Ed. 3)

17 Giugno 2015• 1.30pm @ I.0.1 (Ed. 4)

2

Page 3: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

CompitiniCompitini

• Compitini di INFO: 24 Aprile 2015• 4.15pm @ C.G.1 (Ed. 9)

21 Maggio 2015• 10.30am @ S.0.2 (Ed. 3)

17 Giugno 2015• 1.30pm @ I.0.1 (Ed. 4)

3

Page 4: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Primo Lab: Installation Primo Lab: Installation PartyParty

• Dove: EG.7: per studenti senza PC L26.14: per PC muniti

• Quando: 23 Marzo @ 3.30pm

4

Page 5: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Per i labPer i lab

Indirizzo base:base = home.deib.polimi.it/santambr/dida/ieim/2015

•Info in generale sui labbase/labs.htm

•Strumenti usanti in labbase/tools.htm

5

Page 6: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Benvenuti nel Benvenuti nel fantastico mondo fantastico mondo del Cdel C

6

Page 7: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il primo programma: ciao Il primo programma: ciao mondomondo

7

Page 8: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ciao Mondo: stdio.hCiao Mondo: stdio.h

• Come prima cosa, dobbiamo includere le librerie necessarie al funzionamento del nostro programma.

• La libreria stdio.h Standard Input Output Permette di utilizzare I

comandi necessari per richiedere dati o visualizzare dei messaggi.

8

Page 9: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ciao Mondo: mainCiao Mondo: main

• Tutti i programmi in C contengono un elemento principale: Il main

• main contiene le istruzioni che verranno eseguite all’avvio del nostro programma

9

Page 10: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ciao Mondo: mainCiao Mondo: main

• La sequenza di istruzioni che caratterizzano il main sono racchiuse tra parentesi graffe

• Tale blocco di istruzioni e’ anche noto come corpo

• Ogni istruzione deve essere seguita da un punto e virgola

10

Page 11: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ciao Mondo: printfCiao Mondo: printf

11

Page 12: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ciao Mondo: printfCiao Mondo: printf

• Stampa a video il mesaggio “Ciao Mondo!”

• printf e’ contenuta in stdio.h

• Il messaggio da stampare e’ contenuto tra “”

12

Page 13: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ciao Mondo: printfCiao Mondo: printf

• return e' un comando che ci permette di comunicare con il sistema ospite

• In questo caso viene utilizzato per comunicare lo stato di terminazione del programma

• 0 indica una terminazione corretta del nostro programma

13

Page 14: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

14

Struttura di un Struttura di un programma Cprogramma C

Page 15: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

15

• Parte dichiarativa: contiene le dichiarazioni degli elementi del programma Dati, ed eventualmente funzioni (ma solo nella parte

globale)

Struttura di un Struttura di un programma Cprogramma C

Page 16: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

16

Struttura di un Struttura di un programma Cprogramma C

inclusione librerie / per poter invocare funzioni utili (i/o, ...) /dichiarazione di variabili globali e funzioni

parte dichiarativa globale

Page 17: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

17

Struttura di un Struttura di un programma Cprogramma C

inclusione librerie / per poter invocare funzioni utili (i/o, ...) /dichiarazione di variabili globali e funzioni

int main ( ) {

}

parte dichiarativa globale

Ogni programma C deve contenere un modulo int main() {...}

Page 18: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

18

Struttura di un Struttura di un programma Cprogramma C

inclusione librerie / per poter invocare funzioni utili (i/o, ...) /dichiarazione di variabili globali e funzioni

int main ( ) {

dichiarazione di variabili locali

}

parte dichiarativa locale

parte dichiarativa globale

Ogni programma C deve contenere un modulo int main() {...}

Page 19: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

19

• Parte dichiarativa: contiene le dichiarazioni degli elementi del programma Dati, ed eventualmente funzioni (ma solo nella parte

globale)

• Parte esecutiva: contiene le istruzioni da eseguire, che ricadono nelle categorie: Istruzioni di assegnamento () Strutture di controllo:• Condizionali (if-then-else e switch)• Iterative, o cicli (while, do e for)

Istruzioni di Input/Output (printf, scanf, ...)

Struttura di un Struttura di un programma Cprogramma C

Page 20: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

20

Struttura di un Struttura di un programma Cprogramma C

inclusione librerie / per poter invocare funzioni utili (i/o, ...) /dichiarazione di variabili globali e funzioni

int main ( ) {

dichiarazione di variabili locali

istruzione 1; / tutti i tipi di operazioni, e cioè: /istruzione 2; / istr. di assegnamento / istruzione 3; / istr. di input / output /istruzione 4; / istr. di controllo (condizionali, cicli) /...istruzione N;

}

parte esecutiva

parte dichiarativa locale

parte dichiarativa globale

Ogni programma C deve contenere un modulo int main() {...}

Page 21: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

21

Istruzioni semplici e Istruzioni semplici e compostecomposte

• Sequenze di istruzioni semplici Ogni istruzione semplice termina con ; ; è detto il “terminatore” dell’istruzione

• Si possono raggruppare più istruzioni in sequenza tra { e } a costituire un blocco Il blocco costituisce una “super-istruzione”

• Non è necessario il ; dopo }, in quanto il blocco è già una istruzione e non necessita del terminatore per

diventarla

Page 22: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Mostra caratteriMostra caratteri

• Problema Si scriva un programma che richieda

l’inserimento di un carattere e lo mostri a video

22

Page 23: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Mostra caratteriMostra caratteri

• Problema Si scriva un programma che richieda

l’inserimento di un carattere e lo mostri a video

• Sotto-problema E dove lo salvo il carattere???

23

Page 24: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili e assegnamentiVariabili e assegnamenti

24

Le variabili non sono altro che dei contenitori (aree di memoria) identificati da un nome univoco.Le variabili vengono definite da un tipo e da un nome.

Page 25: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Mostra caratteriMostra caratteri

• Problema Si scriva un programma che richieda

l’inserimento di un carattere e lo mostri a video

25

Page 26: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Mostra caratteriMostra caratteri

• Problema Si scriva un programma che richieda

l’inserimento di un carattere e lo mostri a video

26

Page 27: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo carattere e codifica ASCIITipo carattere e codifica ASCII

27

Page 28: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ricordate il Ricordate il ““3232””

28

Page 29: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di calcolo Un esempio di calcolo

29

Page 30: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili e loro valoreVariabili e loro valore

• Problema Come assegno un valore ad un

variabile???

30

Page 31: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

31

Esecuzione degli Esecuzione degli assegnamentiassegnamenti

• valutazione dell’espressione che compare a destra del simbolo =

il valore delle variabili che vi compaiono si trova memorizzato nelle celle corrispondenti, e da lì è letto

• memorizzazione del risultato dell'espressione nella variabile a sinistra del simbolo =

Page 32: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

32

x = 23;w = 'a';y = z;alfa = x + y;r3 = ( alfa * 43 – xgg ) * ( delta – 32 * j );x = x + 1;

Abbreviazioni (operatori di assegnamento):

a = a + 7; a = a * 5; a = a + 1; a = a - 1;a += 7; a *= 5; ++a; --a;

Esempi di assegnamentoEsempi di assegnamento

Istruzioni della forma variabile = variabile operatore espressione;si possono scrivere come: variabile operatore = espressione;

Page 33: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

33

• Operatori aritmetici in C: * per la moltiplicazione e / per la divisione La divisione tra interi elimina il resto (quoziente):

13 / 5 è uguale a 2 L’operatore modulo calcola il resto della

divisione: 13 % 5 è uguale a 3

• Precedenza degli operatori: Come in aritmetica, moltiplicazione e divisione

hanno priorità su addizione e sottrazione• si usano le parentesi quando c’è ambiguità

Per esempio: la media aritmetica di a, b, c: a + b + c / 3 NO !!!! (a + b + c ) / 3 SI

Aritmetica (1/2)Aritmetica (1/2)

Page 34: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

34

Aritmetica (2/2)Aritmetica (2/2)Operazione Operatore C Espressione

aritmeticaEspressione C

Addizione + f+7 f + 7Sottrazione - p-c p – cMoltiplicazione * bm b * mDivisione / x/y x / yModulo % r mod s r % s

Operatori C Operazioni Precedenza

( ) Parentesi Valutate per prime. Se ci sono degli annidamenti, si valuta prima la coppia più interna. Se ci sono più coppie allo stesso livello, si valuta da sinistra a destra.

* , / , % Moltiplicazione, Divisione, Modulo

Valutate per seconde. Se ce ne sono diverse, si valutano da sinistra a destra.

+ , – Addizione, Sottrazione

Valutate per ultime. Se ce ne sono diverse, si valutano da sinistra a destra.

Page 35: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Come interagiamo con Come interagiamo con ““l’esternol’esterno”?”?

• Input printf viene utiizzata per fornire un

output del programma a video

35

Page 36: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Come interagiamo con Come interagiamo con ““l’esternol’esterno”?”?

• Input printf viene utiizzata per fornire un

output del programma a video

• Output scanf viene utilizzato per fornire degli

input, e.g. da tastiera, al nostro programma

36

Page 37: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Inserimento datiInserimento dati

• Problema Richiedi all’utente la sua altezza in

centrimentri e mostrala a video in metri

• Pseudocodice1.Scrivi “quanto sei alto?”2.Leggi altezzacm3.Altezzam = alteccacm/1004.Scrivi “sei alto: altezzam”

37

Page 38: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Pseudocodice vs Codice CPseudocodice vs Codice C

• Pseudocodice

1. Scrivi “quanto sei alto?”2. Leggi altezzacm3. Altezzam = alteccacm/1004. Scrivi “sei alto: altezzam”

38

Page 39: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un primo errore Un primo errore

39

Page 40: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un secondo erroreUn secondo errore

40

Page 41: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un terzo erroreUn terzo errore

41

Page 42: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione correttaSoluzione corretta

42

L ’importanza dei tipi di dato

Page 43: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipi di dato in CTipi di dato in C

• In C esistono diversi tipi di dato built-in, tra cui int: numeri interi float: numeri con virgola (singola precisione) double: numeri con virgola (doppia

precisione) char: caratteri (sono interi che possono

variare tra 0-255)

• Inoltre il C fornisce anche la possibilità di definire dei nuovi tipi di dato

43

Page 44: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Problemi di fine giornata…Problemi di fine giornata…

• Scrivere un programma che, letti due numeri, individua quello maggiore

• Rappresentare in pseudocodice l’agoritmo che, letti 3 numeri, ne calcola il minimo comune multiplo

44

Page 45: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata

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

45