La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Ing.Tomarchio,Ing.TestaFondamenti di Informatica1 Esercitazioni su: -Algoritmi -Diagrammi di flusso -Notazione lineare strutturata (pseudo-codice) -Codifica.

Presentazioni simili


Presentazione sul tema: "Ing.Tomarchio,Ing.TestaFondamenti di Informatica1 Esercitazioni su: -Algoritmi -Diagrammi di flusso -Notazione lineare strutturata (pseudo-codice) -Codifica."— Transcript della presentazione:

1 Ing.Tomarchio,Ing.TestaFondamenti di Informatica1 Esercitazioni su: -Algoritmi -Diagrammi di flusso -Notazione lineare strutturata (pseudo-codice) -Codifica in C (di problemi semplici)

2 Ing.Tomarchio,Ing.TestaFondamenti di Informatica2 Esercizio 1: Dati due numeri interi non negativi, calcolarne il prodotto (supponendo che lesecutore non abbia a disposizione loperatore di moltiplicazione) Dati di Input: M, N con M, N >= 0 Dati di Output: P (il prodotto tra M ed N) Note: bisogna effettuare delle somme successive, cioè sommare M a se stesso per N volte.

3 Ing.Tomarchio,Ing.TestaFondamenti di Informatica3 Esempio 1

4 Ing.Tomarchio,Ing.TestaFondamenti di Informatica4 Esempio 1: pseudocodice leggi M, N P = 0 WHILE (N <> 0) { P = P + M N = N – 1 } scrivi P

5 Ing.Tomarchio,Ing.TestaFondamenti di Informatica5 Esempio 1: codifica in C #include main () { int M, N, P; printf(Inserisci due valori interi positivi: ); scanf(%d%d, &M,&N); P = 0; while (N != 0) { P = P + M; N = N – 1; } printf(\n Il prodotto vale %d\n,P); }

6 Ing.Tomarchio,Ing.TestaFondamenti di Informatica6 Esercizio 2: Trovare quoziente e resto di una divisione intera per differenze successive (supponendo cioè di non disporre delloperatore di divisione) Dati di Input: D, D1 ( supponiamo D1>0 ) Dati di Output: Q, R ( quoziente e resto )

7 Ing.Tomarchio,Ing.TestaFondamenti di Informatica7 Esempio 2

8 Ing.Tomarchio,Ing.TestaFondamenti di Informatica8 Esempio 2: pseudocodice leggi D, D1 R = D Q = 0 WHILE (R >= D1) { R = R – D1 Q = Q + 1 } scrivi Q, R

9 Ing.Tomarchio,Ing.TestaFondamenti di Informatica9 Esempio 2: codifica in C #include main () { int D, D1, R, Q; printf(Inserisci due valori interi positivi: ); scanf(%d%d, &D, &D1); R = D; Q = 0; while (R >= D1) { R = R – D1; Q = Q + 1; } printf(Quoziente = %d, Resto = %d \n, Q, R); }

10 Ing.Tomarchio,Ing.TestaFondamenti di Informatica10 Esercizio 3: Sommare i primi N numeri interi positivi e scrivere il risultato Dati di Input: N (con N >= 0) Dati di Output: S (somma dei primi N numeri)

11 Ing.Tomarchio,Ing.TestaFondamenti di Informatica11 Esempio 3

12 Ing.Tomarchio,Ing.TestaFondamenti di Informatica12 Esempio 3: pseudocodice leggi N I = 0 S = 0 DO { S = S + I I = I + 1 } WHILE (I <= N) scrivi S

13 Ing.Tomarchio,Ing.TestaFondamenti di Informatica13 Esempio 3: codifica in C #include main () { int N, S, i; printf(Somma dei primi N interi positivi\n\n); printf(Inserisci N: ); scanf(%d, &N); i = 0; S = 0; do { S = S + i; i++; } while (i <= N) printf(La somma dei primi %d numeri e %d\n, N, S); }

14 Ing.Tomarchio,Ing.TestaFondamenti di Informatica14 Esempio 3: codifica in C (uso di for) #include main () { int N, S, i; printf(Somma dei primi N interi positivi\n\n); printf(Inserisci N: ); scanf(%d, &N); for(i = 1, S = 0; i <= N; i++) S = S + i; printf(La somma dei primi %d numeri e %d\n, N, S); }

15 Ing.Tomarchio,Ing.TestaFondamenti di Informatica15 Esercizio 4: Leggere N numeri e scrivere la loro somma Dati di Input: N, ed N numeri Dati di Output: S (somma di questi N numeri)

16 Ing.Tomarchio,Ing.TestaFondamenti di Informatica16 Esempio 4

17 Ing.Tomarchio,Ing.TestaFondamenti di Informatica17 Esempio 4: pseudocodice leggi N I = 1 S = 0 WHILE (I <= N) { leggi NUM S = S + NUM I = I + 1 } scrivi S

18 Ing.Tomarchio,Ing.TestaFondamenti di Informatica18 Esempio 4: codifica in C (uso del while) #include main () { int N, S, i, num; printf(Somma di N numeri interi\n\n); printf(Inserisci N: ); scanf(%d, &N); i = 1; S = 0; while (i <= N) { printf(Inserisci il numero %d :,i); scanf(%d, &num); S = S + num; i++; } printf(La somma vale: %d, S); }

19 Ing.Tomarchio,Ing.TestaFondamenti di Informatica19 Esempio 4: codifica in C (uso del for) #include main () { int N, S, i, num; printf(Somma di N numeri interi\n\n); printf(Inserisci N: ); scanf(%d, &N); for(i=1, S=0; i <= N; i++) { printf(Inserisci il numero %d :,i); scanf(%d, &num); S = S + num; } printf(La somma vale: %d, S); }

20 Ing.Tomarchio,Ing.TestaFondamenti di Informatica20 Esercizio 5: Scrivere il valore massimo di una sequenza illimitata di interi positivi chiusa da uno zero Dati di Input: N1, N2, N3, ….., 0 Dati di Output: MAX (valore massimo dei precedenti numeri letti da input)

21 Ing.Tomarchio,Ing.TestaFondamenti di Informatica21 Esempio 5

22 Ing.Tomarchio,Ing.TestaFondamenti di Informatica22 Esempio 5: pseudocodice MAX = 0 DO { leggi N IF (N > MAX) MAX = N } WHILE (N <> 0) scrivi MAX

23 Ing.Tomarchio,Ing.TestaFondamenti di Informatica23 Esempio 5: codifica in C #include main () { int N, MAX; MAX = 0; do { printf(Inserisci un valore intero positivo (0 per finire)\n); scanf(%d, &N); if (N > MAX) MAX = N; } while (N != 0); printf(Il massimo dei valori inseriti e: %d \n,MAX); }

24 Ing.Tomarchio,Ing.TestaFondamenti di Informatica24 Esercizio 6: Dato un intero N>1, scrivere una sola volta tutti i suoi fattori primi (supponendo di avere a disposizione loperatore di divisione intera) Dati di Input: N Dati di Output: elenco dei fattori primi di N Note: lespressione Q = (Q / D) * D se verificata mi indica che D è un divisore di Q

25 Ing.Tomarchio,Ing.TestaFondamenti di Informatica25 Esempio 6

26 Ing.Tomarchio,Ing.TestaFondamenti di Informatica26 Esempio 6: pseudocodice leggi N Q = N GIA_SCRITTO = 0 D = 2 WHILE (Q <> 1) { WHILE (Q <> (Q/D) * D ) { D = D + 1 GIA_SCRITTO = 0 } IF (GIA_SCRITTO <> 1) { scrivi D GIA_SCRITTO = 1 } Q = Q/D }

27 Ing.Tomarchio,Ing.TestaFondamenti di Informatica27 Esempio 6: codifica in C #include main () { int N, Q, D, GIA_SCRITTO; printf(Inserisci un numero intero positivo \n); do scanf(%d, &N); while (N<=0); Q = N; GIA_SCRITTO = 0; D = 2; while (Q > 1) { while (Q != (Q/D) * D ) { D = D + 1; GIA_SCRITTO = 0; } if (GIA_SCRITTO == 0) { printf(divisore trovato %d \n, D); GIA_SCRITTO = 1; } Q = Q/D; }

28 Ing.Tomarchio,Ing.TestaFondamenti di Informatica28 Esercizio 7: Gioco dei fiammiferi: Da un insieme di N fiammiferi, ciascun giocatore ne toglie a turno un numero qualunque che vada da 1 a K; perde chi toglie lultimo fiammifero Spieghiamo la strategia e risolviamo il problema per N=21 e K=5. Ipotesi di base : –vi sono due giocatori, A e B; –il giocatore che effettua la prima mossa è sempre il calcolatore (A). Strategia: –Isolo 1 fiammifero, e divido i rimanenti in gruppi da 6; –Prima mossa: tolgo i 2 fiammiferi rimasti; –Mosse successive:tolgo un numero di fiammiferi pari al complemento a 6 di quelli tolti dallavversario (sempre possibile per le ipotesi fatte)

29 Ing.Tomarchio,Ing.TestaFondamenti di Informatica29 Esempio 7 DFD di alto livello

30 Ing.Tomarchio,Ing.TestaFondamenti di Informatica30 Esempio 7: pseudocodice (di alto livello) scrivi le regole del gioco DO { scrivi Comincio io! A toglie due fiammiferi WHILE (ci sono ancora fiammiferi?) { scrivi Quanti fiammiferi vuoi togliere? leggi NB; B toglie NB fiammiferi A toglie (6-NB) fiammiferi } scrivi Ho vinto! Vuoi giocare ancora? leggi RISP } WHILE (RISP = sì)


Scaricare ppt "Ing.Tomarchio,Ing.TestaFondamenti di Informatica1 Esercitazioni su: -Algoritmi -Diagrammi di flusso -Notazione lineare strutturata (pseudo-codice) -Codifica."

Presentazioni simili


Annunci Google