DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – [email protected] Ver. aggiornata al 15 Ottobre 2014 Obiettivi DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Costrutti iterativi do.. while While for 2 Problema: caratteri MaIuScOli DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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 3 Pseudocodice V1 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Dati L’insieme dei caratteri ammissibili {a, b, c, …, z} 1.Richiedere l’inserimento di un carattere 2.Se carattere inserito corretto A.Allora stampa a video carattere-32 3.Altrimenti A.stampa a video un messaggio di errore B.ritorna ad 1 4 Pseudocodice V2 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Dati L’insieme dei caratteri ammissibili {a, b, c, …, z} 1.Richiedere l’inserimento di un carattere 2.Finchè carattere inserito !corretto torna ad 1 3.Stampa a video carattere-32 5 MaIuScOli: codice DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE ATTENZIONE!!! 2. Finchè carattere inserito !corretto Identifica il carattere CORRETTO! 6 MaIuScOli: codice corretto DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 1.Richiedere l’inserimento di un carattere 2.Finchè carattere inserito !corretto torna ad 1 7 Come traduco il finché? WHILE DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Itera l’esecuzione di una istruzione finché una certa condizione è vera int a, b; condizione di scanf("%d%d", &a, &b); PERMANENZA while ( b > 0 ) { nel ciclo a = a + a; --b; } printf ("Il valore di a ora è %d", a); 8 Il ciclo (loop) while DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Itera l’esecuzione di una istruzione fintantoché una certa condizione è vera int a, b; scanf("%d%d", &a, &b); Che cosa calcola? while ( b > 0 ) { a = a + a; a*2b se b>0 la funzione f(a,b) = --b; a se b≤0 } printf ("Il valore di a ora è %d", a); 9 Il maggiore tra N numeri DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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 10 Il maggiore: codice DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 11 Il maggiore tra N numeri: osservazione DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Osservazione: Perchè usare un while se conosco il numero di iterazioni del cliclo? 12 Il maggiore: zoom sul codice DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 13 Il ciclo for DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE cont = 0; while (cont < N) { …; …; cont++; } for (cont = 0; cont < N; cont++) { …; …; } 14 Il ciclo for DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE for ( exp.A; cond; exp.I ) { ist.1; ... ist.N; } exp.A; while ( cond ) { ist.1; ... ist.N; exp.I; } ATTENZIONE 15 Il maggiore – for : codice DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 16 Il maggiore – while Vs for DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 17 Ora dovrebbe essere chiara… DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 18 Problemi di fine giornata… DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Modificare gli esercizi di oggi, andando, dove necessario, ad inserire il controllo sugli ingressi • 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 19 Fonti per lo studio + Credits DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • 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/