La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 18 Ottobre.

Presentazioni simili


Presentazione sul tema: "DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 18 Ottobre."— Transcript della presentazione:

1 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 18 Ottobre 2013

2 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEWAT È la prima esercitazione non è funzionale dare meno di 5 min per fare un programma nonostante la semplicità A mio parere il tempo concesso per ogni esercizio non era sufficiente, soprattutto considerando che stiamo ancora familiarizzando con C Si sarebbe dovuta fare prima un'introduzione generale sulle modalità di esercitazione e poi passare agli esercizi […] 2

3 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEWAT 3

4 WAT 4 WAT

5 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 Il nostro problema: Dati due numeri interi, si trovi il MCD 5

6 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Parte 0/4: La brutta notizia! Abbiamo un problema!!!! Dati due numeri interi, si trovi il MCD 6 how to solve it di Poyla G. - http://math.hawaii.edu/home/pdf/putnam/PolyaHowToSolveIt.pdf

7 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? 7

8 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Parte 1/4: Capire il problema Abbiamo un solo problema? Dati due numeri interi, si trovi il MCD P1: Ci servono due numeri interi P2: Dobbiamo trovare il MCD di due numeri 8

9 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Abbiamo solo P1 e P2? Dati due numeri interi, si trovi il MCD P1: Ci servono due numeri interi P1.1: Ci servono due scatole per salvare i due numeri P1.2: I numeri devono essere maggiori uguali a 1 P2: Dobbiamo trovare il MCD di due numeri P2.1: Dobbiamo trovare tutti i divisori di un numero (X) P2.2: Dobbiamo trovare tutti i numeri {C} in comune a due sequenze {S1, S2} di numeri P2.3: Dobbiamo trovare il maggiore tra N numeri 9

10 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 10

11 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Parte 2/4: Fare/creare un piano Dati due numeri interi, si trovi il MCD P1: Ci servono due numeri interi P1.1: Ci servono due scatole per salvare i due numeri P1.2: I numeri devono essere maggiori uguali a 1 P2: Dobbiamo trovare il MCD di due numeri P2.1: Dobbiamo trovare tutti i divisori di un numero (X) P2.2: Dobbiamo trovare tutti i numeri {C} in comune a due sequenze {S1, S2} di numeri P2.3: Dobbiamo trovare il maggiore tra N numeri 11

12 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P1: Fare/creare un piano P1: Ci servono due numeri interi P1.1: Ci servono due scatole per salvare i due numeri Di che tipo sono i numeri che ci servono? P1.2: I numeri devono essere maggiori uguali A 1 Come facciamo a garantire che il numero inserito sia maggiore uguale a 1? 12

13 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P1.2: Fare/creare un piano P1.2: I numeri devono essere maggiori uguale a 1 Come facciamo a garantire che il numero inserito sia maggiore uguale a 1? A.Inserisci il numero B.Il numero è maggiore o uguale a 1 a.Se si FINE b.Se no, torna a A 13

14 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P1.2: Chiariamo meglio… P1.2: I numeri devono essere maggiori uguale a 1 Come facciamo a garantire che il numero inserito sia maggiore uguale a 1? A.Inserisci il numero B.Finché Il numero è minore di 1, torna ad A 14

15 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P1.1+P1.2: P1 risolto 1.P1.1: Leggo un dato intero N1 2.P1.2: Finché N1 è minore di 1, torna ad 1 3.P1.1: Leggo un dato intero N2 4.P1.2: Finché N2 è minore di 1, torna ad 3 15

16 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P2: Fare/creare un piano P2: Dobbiamo trovare il MCD di due numeri P2.1: Dobbiamo trovare tutti i divisori di un numero (X) P2.2: Dobbiamo trovare tutti i numeri {C} in comune a due sequenze {S1, S2} di numeri P2.3: Dobbiamo trovare il maggiore tra N numeri 16

17 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P2.1: Fare/creare un piano P2.1: Dobbiamo trovare tutti i divisori di un numero (X) Definisco D come numero che varia tra 1 e X Dati X e D, interi positivi se X/D da resto 0, – D è divisore di X 17

18 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P2.2: Fare/creare un piano P2.2: Dobbiamo trovare tutti i numeri {C} in comune a due sequenze {S1, S2} di numeri Dato X1 appartenente a S1 Dato X2 appartenente a S2 Se X1 è uguale a X2 allora il valore è comune a S1 e S2 18

19 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P2.3: Chiariamo meglio… P2.3: Dobbiamo trovare il maggiore tra N numeri 1.Il maggiore è il primo numero di N 2.Vi è un altro numero in N? A.Si a.Confronto il maggiore con il successivo b.Il successivo è maggiore? c.Si: il maggiore diventa il successivo d.Vado a 2 B.No: vado a 3 3.Il maggiore è maggiore 19

20 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P2.3: Fare/creare un piano P2.3: Dobbiamo trovare il maggiore tra N numeri 1.Il maggiore è il primo numero di N 2.Finché vi sono numeri in N? a.Confronto il maggiore con il successivo b.Il successivo è maggiore? c.Si: il maggiore diventa il successivo d.Vado a 2 3.Il maggiore è maggiore 20

21 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P2.1+P2.2: Fare/creare un piano P2.1: Dobbiamo trovare tutti i divisori di un numero P2.2: Dobbiamo trovare tutti i numeri {C} in comune a due sequenze {S1, S2} di numeri 21 Come sono i numeri in {C}? (P2.2) Sono divisori di un numero! (P1.1)

22 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P2.1+P2.2: Ricordiamo… P2.1: Dobbiamo trovare tutti i divisori di un numero (X) Definisco D come numero che varia tra 1 e X Dati X e D, interi positivi se X/D da resto 0, D è divisore di X P2.2: Dobbiamo trovare tutti i numeri {C} in comune a due sequenze {S1, S2} di numeri Dato D1 appartenente a S1 Dato D2 appartenente a S2 Se D1 è uguale a D2 allora il valoro è comune a S1 e S2 22

23 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P2.1+P2.2: ma quindi… Dati due numeri N1 e N2 P2.1: D1 divide N1 (appartiene a S1) P2.1: D2 divide N2 (appartiene a S2) P2.2: D1 è uguale a D2? SI: D1 (o D2) è un divisore comune a N1 e a N2 23 Se D1 è maggiore di N2? Se D2 è maggiore di N1?

24 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P2.1+P2.2: e ancora… Dati due numeri N1 e N2 X = 1 Finché X è minore o uguale a N1 e a N2 P2.1: X divide N1? e X divide N2? SI: P2.2 X è divisore comune a N1 e a N2 Incremento X 24 E cosa facciamo a P2.3?

25 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P2.3: Fare/creare un piano P2.3: Dobbiamo trovare il maggiore tra N numeri 1.Il maggiore è il primo numero di N 2.Finché vi sono numeri in N? a.Confronto il maggiore con il successivo b.Il successivo è maggiore? c.Si: il maggiore diventa il successivo d.Vado a 2 3.Il maggiore è maggiore 25 E se gli N numeri fossero ordinati in ordine crescente?

26 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P2.3: Numeri ordinati P2.3: Dobbiamo trovare il maggiore tra N numeri 1.Il maggiore è lultimo numero di N 26 Essendo ordinati in ordine crescente Ogni successero è maggiore del precedente Come usiamo questa idea?

27 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEP2.1+P2.2+P2.3 Dati due numeri N1 e N2 X = 1 Finché X è minore o uguale a N1 e a N2 P2.1: X divide N1? e X divide N2? SI: P2.2 X è divisore comune a N1 e a N2 Incremento X P2.3: Dobbiamo trovare il maggiore tra N numeri 27 Come varia X?In ordine crescente :)

28 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P2: risolto Dati due numeri N1 e N2 X = 1 e TMP = 1 Finché X è minore o uguale a N1 e a N2 P2.1: X divide N1? e X divide N2? SI: –P2.2: X è divisore comune a N1 e a N2 –P2.3: TMP = X Incremento X TMP è il MCD 28

29 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P1 + P2: mettiamo tutto insieme 1.P1.1: Leggo un dato intero N1 2.P1.2: Finché N1 è minore di 1, torna ad 1 3.P1.1: Leggo un dato intero N2 4.P1.2: Finché N2 è minore di 1, torna ad 3 5.X = 1 e TMP = 1 6.Finché X è minore o uguale a N1 e a N2 1.P2.1: X divide N1? e X divide N2? 1.SI: 1.P2.2: X è divisore comune a N1 e a N2 2.P2.3: TMP = X 2.Incremento X 7.TMP è il MCD 29

30 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 30

31 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Parte 3/4: Portare avanti il piano 1.P1.1: Leggo un dato intero N1 2.P1.2: Finché N1 è minore di 1, torna ad 1 3.P1.1: Leggo un dato intero N2 4.P1.2: Finché N2 è minore di 1, torna ad 3 5.X = 1 e TMP = 1 6.Finché X è minore o uguale a N1 e a N2 1.P2.1: X divide N1? e X divide N2? 1.SI: 1.P2.2: X è divisore comune a N1 e a N2 2.P2.3: TMP = X 2.Incremento X 7.TMP è il MCD 31 Quante e quali variabili ci servono?

32 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Parte 3/4: Portare avanti il piano 32 Quante e quali variabili ci servono?

33 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Parte 3/4: Portare avanti il piano 1.P1.1: Leggo un dato intero N1 2.P1.2: Finché N1 è minore di 1, torna ad 1 33

34 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Parte 3/4: Portare avanti il piano 5. X = 1 e TMP = 1; 34

35 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Definisco la condizione 35 A: X <= N1 B: X <= N2 6. Finché X è minore o uguale a N1 e a N2 A B uscita 0 0 0 0 1 0 1 0 0 11 1 6. Finché ((X<=N1) AND (X<=N2))

36 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Parte 3/4: Portare avanti il piano 6. Finché X è minore o uguale a N1 e a N2 1.P2.1: X divide N1? e X divide N2? 1.SI: 1.P2.2: X è divisore comune a N1 e a N2 2.P2.3: TMP = X 2.Incremento X 36

37 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni equivalenti 1 37 A: N1%X B: 0 A B uscita 0 0 0 !0 0 1 uscita è identica ad A uscita = A NO!!!!!

38 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Vediamo il codice 38

39 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Vediamo il codice: debug 39

40 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Vediamo il codice: debug 40

41 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni equivalenti 1: corretta 41 A: N1%X B: 0 A B uscita 0 0 1 !0 0 0 uscita è identica allinverso di A uscita = !A

42 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Funzioni equivalenti 2 42 è equivalente a

43 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Parte 3/4: Portare avanti il piano 1.P1.1: Leggo un dato intero N1 2.P1.2: Finché N1 è minore di 1, torna ad 1 3.P1.1: Leggo un dato intero N2 4.P1.2: Finché N2 è minore di 1, torna ad 3 5.X = 1 e TMP = 1; 6.Finché X è minore o uguale a N1 e a N2 1.P2.1: X divide N1? e X divide N2? 1.SI: 1.P2.2: X è divisore comune a N1 e a N2 2.P2.3: TMP = X 2.Incremento X 7.TMP è il MCD 43

44 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MCD: Finito… 44

45 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come realizzare un algoritmo Parte 4/4: Ragionare e comprendere Comprendere quello che si è fatto e dove lalgoritmo individuato possa essere applicato al meglio La pratica è fondamentale! 45

46 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma scusate… N1 = 200000 N2 = 100000 46 Vogliamo veramente partire da 1 Finché ((X<=N1) AND (X<=N2)) ??????

47 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P2: risolto Dati due numeri N1 e N2 X = 1 e TMP = 1 Finché X è minore o uguale a N1 e a N2 P2.1: X divide N1? e X divide N2? SI: –P2.2: X è divisore comune a N1 e a N2 –P2.3: TMP = X Incremento X TMP è il MCD 47

48 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tornado nel passato… 48

49 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE P2: risolto Dati due numeri N1 e N2 X = min (N1,N2) Finché P2.1: X non divide N1 e N2 Decremento X P2.2 e P2.3: X è divisore comune a N1 e a N2 49

50 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Definisco la condizione 50 A: N1%X B: N2%X Finché X non divide N1 e N2 A B uscita 0 0 1 0 1 0 1 0 0 11 0 Finché !(!(N1%x) AND !(N2%X))

51 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Definisco la condizione 51 A B !A !B (!A && !B) !(!A && !B) 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 0 1 Continuo finché 1

52 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MCD: Finito! 52


Scaricare ppt "DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 18 Ottobre."

Presentazioni simili


Annunci Google