1 / 36

Costrutti iterativi

Costrutti iterativi. Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 26 Marzo 2014. Mi mancano…. Mi mancano…. Obiettivi. Costrutti iterativi do.. while While for. Problema : caratteri MaIuScOli.

yosefu
Télécharger la présentation

Costrutti iterativi

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. Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 26 Marzo 2014

  2. Mi mancano…

  3. Mi mancano…

  4. Obiettivi • Costrutti iterativi • do.. while • While • for

  5. Problema: caratteriMaIuScOli • Si scriva un programma che, preso un carattere minuscolo da tastiera, ne riporta a video l’equivalente maiuscolo • Si continui a chiedere l’inserimento del carattere, fino a quando questo non è corretto

  6. Pseudocodice • Dati • L’insieme dei caratteri ammissibili {a, b, c, …, z} • Richiedere l’inserimento di un carattere • Se carattere inserito corretto • Allorastampa a video carattere-32 • Altrimenti • stampa a video un messaggio di errore • ritorno ad 1

  7. MaIuScOli: codice

  8. MaIuScOli: codicecorretto

  9. MCD: pseudocodice • Leggi A e B • min= il minimo tra A e B • trovato = 0; MCD = min; • Finche’ trovato != 1 • Se MCD divide A e B • Allora trovato = 1 • Altrimenti MCD = MCD - 1 • Stampa MCD

  10. MCD: diagramma di flusso min=minimo{A,B} trovato = 0 MCD=min trovato!=1? no si no Inizio Fine MCD divide A e B MCD=MCD -1 Stampa MCD Leggi A e B si trovato = 1

  11. Come traduco il finché? WHILE • Itera l’esecuzione di unaistruzionefinché una certa condizione è vera int a, b; scanf("%d%d", &a, &b); while ( b > 0 ) { a = a + a; --b; } printf ("Il valore di a ora è %d", a); condizione di PERMANENZA nel ciclo

  12. Il ciclo (loop) while a*2bse b>0 a se b≤0 la funzione f(a,b) = • Itera l’esecuzione di unaistruzionefintantoché una certa condizione è vera int a, b; scanf("%d%d", &a, &b); while ( b > 0 ) { a = a + a; --b; } printf ("Il valore di a ora è %d", a); Che cosa calcola?

  13. Tornando al MCD… il codice • trovato = 0; • Leggi A e B • min= il minimo tra A e B • MCD = min; • Finche’ trovato != 1 • Se MCD divide A e B • Allora trovato = 1 • Altrimenti MCD = MCD - 1 • Stampa MCD

  14. MCD: zoom

  15. Il maggiore tra N numeri • Problema • Trovare il maggiore tra N numeri positivi inseriti da tastiera • Soluzione • Conoscere N • Richiedere l’inserimento degli N valori • Ricerca del maggiore tra gli N valori

  16. Il maggiore: codice

  17. La gara di nuoto • Problema • Si hanno10 giudici • 1 giudice = 1 voto • Ogni voto è nell’itervallo 0-10 • Dato un tuffo, calcolare • La media dei voti • Il voto massimo ed il voto minimo

  18. Nuoto: codice - errori Cosa succede a giudice ad ogni iterazione? NIENTE!!!! Ciclo infinito!!!

  19. Nuoto: codice

  20. Osservazioni • Problema 1 • Si continui a chiedere l’inserimento del carattere, fino a quando questo non è corretto • Problema 2 • Trovare il maggiore tra N numeri inseriti da tastiera Del problema 2 conosco il numero di iterazioni!

  21. Il 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

  22. Il maggiore: zoom sul codice

  23. Il maggiore tra N numeri: osservazione Osservazione: Perchè usare un while se conosco il numero di iterazioni del cliclo?

  24. Il ciclo for cont = 0; while (cont < N) { …; …; cont++; } for (cont = 0; cont < N; cont++) { …; …; }

  25. for ( exp.A; cond; exp.I ) { ist.1; ... ist.N; } exp.A; while (cond) { ist.1; ... ist.N; exp.I; } Il ciclo for ATTENZIONE

  26. Il maggiore – for : codice

  27. Il maggiore – while Vs for

  28. Ora dovrebbe essere chiara…

  29. Il fattoriale • Dato n, intero positivo, si definisce n fattoriale e si indica con n! il prodotto dei primi n numeri interi positivi minori o uguali di quel numero. In formule • Nota: • 0! = 1 • 1! = 1 • 2! = 2, 3! = 6,…

  30. Il fattoriale: codice

  31. Nota sul fattoriale: permutazioni Vi sono n! diverse sequenze formate da n oggetti distinti • Vi sono n! permutazioni di n oggetti • iI fattoriali enumerano le permutazioni

  32. Coefficiente binomiale • Il numero di scelte di k oggetti fra quelli che costituiscono un insieme di n elementi • Quindi il numero dei sottoinsiemi di k elementi di un dato insieme di n oggetti, è dato dal cosiddetto coefficiente binomiale:

  33. Coefficiente binomiale: flusso • Inserire K e N • Verifico K e N • Se corretti • Calcolare il fattoriale di N (FatN) • Calcolare il fattoriale di K (FatK) • Calcolare il fattoriale di N-K (FatNK) • CoefBin = FatN/(FatK)*FatNK • Altrimenti torno a 1

  34. Coefficiente binomiale: codice

  35. Problemi di fine giornata… • Modificaregliesercizi di oggi, andando, dove necessario, ad inserireilcontrollosugliingressi • Trovareilmaggioretra N numeripositiviinseriti da tastiera (richiedendoilnumero se negativo) • Dati N numeri, dire se questisonotuttipositivi • Dati N numeri, riportarne a video ilmodulo

  36. Fonti per lo studio + Credits • Fonti per lo studio • Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill • Capitolo 6 • Credits • Daniele Braga - http://home.dei.polimi.it/braga/

More Related