1 / 30

Esercitazioni su: Algoritmi Diagrammi di flusso Notazione lineare strutturata (pseudo-codice)

Esercitazioni su: Algoritmi Diagrammi di flusso Notazione lineare strutturata (pseudo-codice) Codifica in C (di problemi semplici). Esercizio 1: Dati due numeri interi non negativi, calcolarne il prodotto (supponendo che l’esecutore non abbia a disposizione l’operatore di moltiplicazione).

pancho
Download Presentation

Esercitazioni su: Algoritmi Diagrammi di flusso Notazione lineare strutturata (pseudo-codice)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Esercitazioni su: • Algoritmi • Diagrammi di flusso • Notazione lineare strutturata (pseudo-codice) • Codifica in C (di problemi semplici) Fondamenti di Informatica

  2. Esercizio 1: Dati due numeri interi non negativi, calcolarne il prodotto (supponendo che l’esecutore non abbia a disposizione l’operatore 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. Fondamenti di Informatica

  3. Esempio 1 Fondamenti di Informatica

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

  5. Esempio 1: codifica in C #include <stdio.h> 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); } Fondamenti di Informatica

  6. Esercizio 2: Trovare quoziente e resto di una divisione intera per differenze successive (supponendo cioè di non disporre dell’operatore di divisione) Dati di Input: D, D1 (supponiamo D1>0) Dati di Output: Q, R (quoziente e resto) Fondamenti di Informatica

  7. Esempio 2 Fondamenti di Informatica

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

  9. Esempio 2: codifica in C #include <stdio.h> 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); } Fondamenti di Informatica

  10. 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) Fondamenti di Informatica

  11. Esempio 3 Fondamenti di Informatica

  12. Esempio 3: pseudocodice leggi N I = 0 S = 0 DO { S = S + I I = I + 1 } WHILE (I <= N) scrivi S Fondamenti di Informatica

  13. Esempio 3: codifica in C #include <stdio.h> 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); } Fondamenti di Informatica

  14. Esempio 3: codifica in C (uso di for) #include <stdio.h> 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); } Fondamenti di Informatica

  15. 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) Fondamenti di Informatica

  16. Esempio 4 Fondamenti di Informatica

  17. Esempio 4: pseudocodice leggi N I = 1 S = 0 WHILE (I <= N) { leggi NUM S = S + NUM I = I + 1 } scrivi S Fondamenti di Informatica

  18. Esempio 4: codifica in C (uso del while) #include <stdio.h> 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); } Fondamenti di Informatica

  19. Esempio 4: codifica in C (uso del for) #include <stdio.h> 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); } Fondamenti di Informatica

  20. 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) Fondamenti di Informatica

  21. Esempio 5 Fondamenti di Informatica

  22. Esempio 5: pseudocodice MAX = 0 DO { leggi N IF (N > MAX) MAX = N } WHILE (N <> 0) scrivi MAX Fondamenti di Informatica

  23. Esempio 5: codifica in C #include <stdio.h> 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); } Fondamenti di Informatica

  24. Esercizio 6: Dato un intero N>1, scrivere una sola volta tutti i suoi fattori primi (supponendo di avere a disposizione l’operatore di divisione intera) Dati di Input: N Dati di Output: elenco dei fattori primi di N • Note: l’espressione Q = (Q / D) * D se verificata mi indica che D è un divisore di Q Fondamenti di Informatica

  25. Esempio 6 Fondamenti di Informatica

  26. 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 } Fondamenti di Informatica

  27. Esempio 6: codifica in C #include <stdio.h> 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; } } Fondamenti di Informatica

  28. 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 l’ultimo 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 dall’avversario (sempre possibile per le ipotesi fatte) Fondamenti di Informatica

  29. Esempio 7DFD di alto livello Fondamenti di Informatica

  30. 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ì”) Fondamenti di Informatica

More Related