DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Ottobre 2014
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEObiettivi Costrutti iterativi do.. while While for 2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: caratteri MaIuScOli Si scriva un programma che, preso un carattere minuscolo da tastiera, ne riporta a video l’equivalente maiuscolo 3
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Maiuscolo: codice ottimizzato 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: caratteri MaIuScOli 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 5
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Pseudocodice V1 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 6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Pseudocodice V2 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 7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MaIuScOli: codice V2 8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MaIuScOli: codice V2 9 ATTENZIONE!!! 2. Finchè carattere inserito !corretto Identifica il carattere CORRETTO!
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MaIuScOli: codice corretto 10 1.Richiedere l’inserimento di un carattere 2.Finchè carattere inserito !corretto torna ad 1
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MaIuScOli: codice corretto 11 1.Richiedere l’inserimento di un carattere 2.Finchè carattere inserito !corretto torna ad 1
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MaIuScOli: codice corretto 12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 13 Itera l’esecuzione di una istruzione finché 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); Come traduco il finché? WHILE condizione di PERMANENZA nel ciclo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 14 Itera l’esecuzione di una istruzione fintantoché 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? la funzione f(a,b) = a*2 b se b>0 a se b≤0 Il ciclo (loop) while
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 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 15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il maggiore: codice 16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il maggiore tra N numeri: osservazione Osservazione: Perchè usare un while se conosco il numero di iterazioni del cliclo? 17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il maggiore: zoom sul codice 18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 19 cont = 0; while (cont < N) { …; cont++; } for (cont = 0; cont < N; cont++) { …; } Il ciclo for
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 20 ATTENZIONE Il ciclo for for ( exp.A; cond; exp.I ) { ist.1;... ist.N; } exp.A; while ( cond ) { ist.1;... ist.N; exp.I; }
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il maggiore – for : codice 21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il maggiore – while Vs for 22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ora dovrebbe essere chiara… 23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problemi di fine giornata… 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 24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 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 -