DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio –...

35
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Lab 2 – Info B Marco D. Santambrogio – [email protected] Riccardo Cattaneo – [email protected] Ver. aggiornata al 9 Agosto 2013

Transcript of DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio –...

Page 1: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Lab 2 – Info B Lab 2 – Info B

Marco D. Santambrogio – [email protected] Cattaneo – [email protected]

Ver. aggiornata al 9 Agosto 2013

Page 2: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Lab 2: ObiettiviLab 2: Obiettivi

Strutture di controllo e cicli, array e stringhe

2

Page 3: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Lab 2: AgendaLab 2: Agenda

• Esercizi Lab2 Warm Up (50’)

• Da int a ASCII (10’)• La ricerca del maggiore su N numeri (20’ +10’)• Inserisci nome (10’)

Qualche cosa un pò più divertente (85’)• calcolatrice (35’)• La gara di tuffi, con salvataggio (40’)• Inserisci nome e copia stringa (10’)

Altri exe… (105’)• MCD (50’)• mcm (55’)

3

Page 4: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Lab 2: AgendaLab 2: Agenda

• Esercizi Lab2 Warm Up (50’)

• Da int a ASCII (10’)• La ricerca del maggiore su N numeri (20’ +10’)• Inserisci nome (10’)

Qualche cosa un pò più divertente (85’)• calcolatrice (35’)• La gara di tuffi, con salvataggio (40’)• Inserisci nome e copia stringa (10’)

Altri exe… (105’)• MCD (50’)• mcm (55’)

4

Page 5: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Da int a ASCIIDa int a ASCII

• Problema Si scriva un programma che richieda

l'inserimento di un carattere. Si mostri quindi a video:

1. il carattere inserito2. la codifica ASCII del

carattere

5

Page 6: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

6

Da int a ASCIIDa int a ASCII

Page 7: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggiore tra N numeriIl maggiore tra N numeri

• Problema Trovare il maggiore tra N numeri inseriti

da tastiera

• Soluzione Conoscere N Richiedere l’inserimento degli N valori Ricerca del maggiore tra gli N valori

7

Page 8: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggiore - forIl maggiore - for: codice: codice

8

Page 9: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

9

ATTENZIONE

Il ciclo forIl ciclo for

for ( exp.A; cond; exp.I ) {ist.1;...ist.N;

}

exp.A;while ( cond )

{ist.1;...ist.N;exp.I;

}

Page 10: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

10

cont = 0;while (cont < N) {

…;…;cont++;

}for (cont = 0; cont < N; cont++) {

…;…;

}

Il ciclo Il ciclo forfor

Page 11: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggiore – Il maggiore – while Vs forwhile Vs for

11

Page 12: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

12

Inserisci nomeInserisci nome

• Si scriva un programma in C che mostri a video la scritta: “Ciao Nome”, dove: “Ciao” è stato inserito in una stringa

di lunghezza “non definita a priori” “Nome” è un dato inserito dall’utente • Si supponga che possa essere salvato in

una stringa di 10 caratteri

Page 13: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Inserisci nomeInserisci nome

13

Page 14: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Lab 2: AgendaLab 2: Agenda

• Esercizi Lab2 Warm Up (50’)

• Da int a ASCII (10’)• La ricerca del maggiore su N numeri (20’ +10’)• Inserisci nome (10’)

Qualche cosa un pò più divertente (85’)• calcolatrice (35’)• La gara di tuffi, con salvataggio (40’)• Inserisci nome e copia stringa (10’)

Altri exe… (105’)• MCD (50’)• mcm (55’)

14

Page 15: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Problema 1: la calcolatriceProblema 1: la calcolatrice

• Si realizzi una calcolatrice capace di: Letti due numeri da tastiera Richieda di eseguire una della 4

operazioni di base (+, -, *. /)

15

Page 16: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una prima soluzione con IFUna prima soluzione con IF

16

Page 17: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Proviamo con lo Proviamo con lo switchswitch

17

Page 18: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

LL ’’importanza di importanza di breakbreak

18

Page 19: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Aggiornameto sui tipi di Aggiornameto sui tipi di datodato

• Per una divisione corretta… Usiamo i float

19

Page 20: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Controlliamo gli ingressiControlliamo gli ingressi

20

Page 21: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Gara di tuffi, Gara di tuffi, con con salvataggiosalvataggio• Problema

Si hanno10 giudici • 1 giudice = 1 voto

Si vogliono memorizzare i 10 voti, per poterli rileggere

Ogni voto è nell’itervallo 0-10 Dato un tuffo, calcolare

• La media dei voti• Il voto massimo ed il voto minimo

21

Page 22: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Come Come salvaresalvare i voti... i voti...

22

Page 23: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

23

char str1[32]; / str1 ha spazio per 32 char. /char str2[64]; / str2 ha spazio per 64 char. /

/ inizializza str1 con la stringa "alfa" /strcpy(str1, "alfa"); / str1 contiene "alfa" /

/ copia str1 in str2 /strcpy(str2, str1); / str2 contiene "alfa" /

/ lunghezza di str1 /x = strlen(str1); / x assume valore 4 /

/ scrivi str1 su standard output /printf("%s", str1); / scrive str1 su stdout /

/ leggi str1 da standard input /scanf("%s", str1); / str1 “riceve” da stdin /

Operazioni su stringheOperazioni su stringhe

Page 24: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

24

char str1[32];char str2[64];

scanf("%s", str1);> ciao / ora str1 contiene "ciao" /

strcpy(str2, str1);/ str2 riceve "ciao"/val = strlen(str2); / val = 4 /

printf("%s\n", str2);> ciao / stampa "ciao" /

Attenzione: strlen("") vale 0 !

Operazioni su stringheOperazioni su stringhe

Page 25: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

25

Inserisci nome con copia Inserisci nome con copia stringastringa

• Si scriva un programma in C che mostri a video la scritta: “Ciao Nome”, dove: “Ciao” è stato inserito in una stringa

di lunghezza “non definita a priori” “Nome” è un dato inserito dall’utente • Si supponga che possa essere salvato in

una stringa di 10 caratteri Nome deve essere salvato in una

stringa “stringa1” e copiato in una seconda stringa “stringa3”

Page 26: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Inserisci nome con copia Inserisci nome con copia stringastringa

26

Page 27: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Lab 2: AgendaLab 2: Agenda

• Esercizi Lab2 Warm Up (50’)

• Da int a ASCII (10’)• La ricerca del maggiore su N numeri (20’ +10’)• Inserisci nome (10’)

Qualche cosa un pò più divertente (85’)• calcolatrice (35’)• La gara di tuffi, con salvataggio (40’)• Inserisci nome e copia stringa (10’)

Altri exe… (105’)• MCD (50’)• mcm (55’)

27

Page 28: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

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

28

Page 29: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

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

29

Page 30: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MCD: codiceMCD: codice

Page 31: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

mcmmcm

• Si scriva un programma che, accettati due numeri interi positivi da tastiera, ne calcola il minimo comune multiplo

31

Page 32: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

mcm: una prima soluzione mcm: una prima soluzione

32

Possiamo rimuoverlo?

Provateci a casa ;)

Page 33: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ora dovrebbe essere Ora dovrebbe essere chiara…chiara…

33

Page 34: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Problemi di fine giornata…Problemi di fine giornata…

• Trovare il maggiore tra N numeri positivi inseriti da tastiera (richiedendo il numero se negativo)

• Dati N numeri, dire se questi sono tutti positivi

• Dati N numeri, riportarne a video il modulo

• Dati N numeri, riportarne a video il modulo, dopo averli letti tutti N

34

Page 35: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – marco.santambrogio@polimi.it Riccardo Cattaneo – cattaneo@elet.polimi.it.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Fonti per lo studio + CreditsCredits• Fonti per lo studio

Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill• Capitolo 3 e 6

• Credits Emanuele Panigati https://sites.google.com/site/engpanigati/

35