Laboratorio di Programmazione...
Transcript of Laboratorio di Programmazione...
![Page 1: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/1.jpg)
Errori frequentiComandi iterativi
Array
Costrutti Iterativi e array
Laboratorio di Programmazione I
Corso di Laurea in InformaticaA.A. 2019/2020
![Page 2: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/2.jpg)
Errori frequentiComandi iterativi
Array
Argomenti del Corso
Ogni lezione consta di una spiegazione assistita da slide, eseguita da esercizi in classe
Introduzione all’ambiente LinuxIntroduzione al CTipi primitivi e costrutti condizionaliCostrutti iterativi ed arrayFunzioni, stack e visibilità variabiliPuntatori e memoriaDebuggingTipi di dati utenteListe concatenate e librerieRicorsione
![Page 3: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/3.jpg)
Errori frequentiComandi iterativi
Array
Sommario
1 Errori frequenti
2 Comandi iterativiCicli forCicli whileCicli do-while
3 ArrayArrayArray e cicli
![Page 4: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/4.jpg)
Errori frequentiComandi iterativi
Array
Errori frequenti
int x; printf ( "%d\n" x);
int x; scanf("%d\n", x) ;
float x; scanf("%d", &x);
int x; scanf("%d\n", &x);
printf ( " Inserisci il valore :\ n") ;
int x; printf ( " Il risultato e ’: %d\n", x) ;
Consiglio: Quando la piattaforma vi da errore:Leggete l’errore.Controllate su che caso di test si verifica l’errore e cercatedi capire perché.
![Page 5: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/5.jpg)
Errori frequentiComandi iterativi
Array
Errori frequenti
int x; printf ( "%d\n" x);
int x; scanf("%d\n", x) ;
float x; scanf("%d", &x);
int x; scanf("%d\n", &x);
printf ( " Inserisci il valore :\ n") ;
int x; printf ( " Il risultato e ’: %d\n", x) ;
Consiglio: Quando la piattaforma vi da errore:Leggete l’errore.Controllate su che caso di test si verifica l’errore e cercatedi capire perché.
![Page 6: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/6.jpg)
Errori frequentiComandi iterativi
Array
Errori frequenti
int x; printf ( "%d\n" x);
int x; scanf("%d\n", x) ;
float x; scanf("%d", &x);
int x; scanf("%d\n", &x);
printf ( " Inserisci il valore :\ n") ;
int x; printf ( " Il risultato e ’: %d\n", x) ;
Consiglio: Quando la piattaforma vi da errore:Leggete l’errore.Controllate su che caso di test si verifica l’errore e cercatedi capire perché.
![Page 7: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/7.jpg)
Errori frequentiComandi iterativi
Array
Errori frequenti
int x; printf ( "%d\n" x);
int x; scanf("%d\n", x) ;
float x; scanf("%d", &x);
int x; scanf("%d\n", &x);
printf ( " Inserisci il valore :\ n") ;
int x; printf ( " Il risultato e ’: %d\n", x) ;
Consiglio: Quando la piattaforma vi da errore:Leggete l’errore.Controllate su che caso di test si verifica l’errore e cercatedi capire perché.
![Page 8: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/8.jpg)
Errori frequentiComandi iterativi
Array
Errori frequenti
int x; printf ( "%d\n" x);
int x; scanf("%d\n", x) ;
float x; scanf("%d", &x);
int x; scanf("%d\n", &x);
printf ( " Inserisci il valore :\ n") ;
int x; printf ( " Il risultato e ’: %d\n", x) ;
Consiglio: Quando la piattaforma vi da errore:Leggete l’errore.Controllate su che caso di test si verifica l’errore e cercatedi capire perché.
![Page 9: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/9.jpg)
Errori frequentiComandi iterativi
Array
Errori frequenti
int x; printf ( "%d\n" x);
int x; scanf("%d\n", x) ;
float x; scanf("%d", &x);
int x; scanf("%d\n", &x);
printf ( " Inserisci il valore :\ n") ;
int x; printf ( " Il risultato e ’: %d\n", x) ;
Consiglio: Quando la piattaforma vi da errore:Leggete l’errore.Controllate su che caso di test si verifica l’errore e cercatedi capire perché.
![Page 10: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/10.jpg)
Errori frequentiComandi iterativi
Array
Errori frequenti
int x; printf ( "%d\n" x);
int x; scanf("%d\n", x) ;
float x; scanf("%d", &x);
int x; scanf("%d\n", &x);
printf ( " Inserisci il valore :\ n") ;
int x; printf ( " Il risultato e ’: %d\n", x) ;
Consiglio: Quando la piattaforma vi da errore:Leggete l’errore.Controllate su che caso di test si verifica l’errore e cercatedi capire perché.
![Page 11: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/11.jpg)
Errori frequentiComandi iterativi
Array
Errori frequenti
int x; printf ( "%d\n" x);
int x; scanf("%d\n", x) ;
float x; scanf("%d", &x);
int x; scanf("%d\n", &x);
printf ( " Inserisci il valore :\ n") ;
int x; printf ( " Il risultato e ’: %d\n", x) ;
Consiglio: Quando la piattaforma vi da errore:Leggete l’errore.Controllate su che caso di test si verifica l’errore e cercatedi capire perché.
![Page 12: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/12.jpg)
Errori frequentiComandi iterativi
Array
Attenti ai Newline
Il newline (e.s. quando premete invio) è un carattere conun suo codice ASCII
State attenti quando in un esercizio avete una scanf("%c" ,...)dopo aver letto un numero da tastiera, es.scanf("%d", &n);scanf("%c", &x);
La seconda scanf non leggerà il carattere da tastiera macatturerà il newline che termina l’immissione del numeronella scanf precedentePer non aver problemi inserite uno spazio prima delsegnaposto del carattere in modo da catturare i caratteriwhitespace (e.g. il newline, lo spazio, il tab)scanf(" %c", &x);
![Page 13: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/13.jpg)
Errori frequentiComandi iterativi
Array
Attenti ai Newline
Il newline (e.s. quando premete invio) è un carattere conun suo codice ASCIIState attenti quando in un esercizio avete una scanf("%c" ,...)dopo aver letto un numero da tastiera, es.scanf("%d", &n);scanf("%c", &x);
La seconda scanf non leggerà il carattere da tastiera macatturerà il newline che termina l’immissione del numeronella scanf precedentePer non aver problemi inserite uno spazio prima delsegnaposto del carattere in modo da catturare i caratteriwhitespace (e.g. il newline, lo spazio, il tab)scanf(" %c", &x);
![Page 14: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/14.jpg)
Errori frequentiComandi iterativi
Array
Attenti ai Newline
Il newline (e.s. quando premete invio) è un carattere conun suo codice ASCIIState attenti quando in un esercizio avete una scanf("%c" ,...)dopo aver letto un numero da tastiera, es.scanf("%d", &n);scanf("%c", &x);
La seconda scanf non leggerà il carattere da tastiera macatturerà il newline che termina l’immissione del numeronella scanf precedente
Per non aver problemi inserite uno spazio prima delsegnaposto del carattere in modo da catturare i caratteriwhitespace (e.g. il newline, lo spazio, il tab)scanf(" %c", &x);
![Page 15: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/15.jpg)
Errori frequentiComandi iterativi
Array
Attenti ai Newline
Il newline (e.s. quando premete invio) è un carattere conun suo codice ASCIIState attenti quando in un esercizio avete una scanf("%c" ,...)dopo aver letto un numero da tastiera, es.scanf("%d", &n);scanf("%c", &x);
La seconda scanf non leggerà il carattere da tastiera macatturerà il newline che termina l’immissione del numeronella scanf precedentePer non aver problemi inserite uno spazio prima delsegnaposto del carattere in modo da catturare i caratteriwhitespace (e.g. il newline, lo spazio, il tab)scanf(" %c", &x);
![Page 16: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/16.jpg)
Errori frequentiComandi iterativi
Array
Indentazione
![Page 17: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/17.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
Tre costrutti
Eseguire un blocco di codice per più di una iterazione.Tre costrutti: for, while, e do-while
Regole d’oro delle buone pratiche di programmazione:for: si sa in anticipo il numero di iterazioni;while: non si sa in anticipo il numero di iterazioni;do-while: non si sa in anticipo il numero di iterazioni, masappiamo che deve essere eseguita almeno unaiterazione.
Come vedremo, for, while e do-while hanno la stessapotenza espressiva.
![Page 18: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/18.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
Sintassi for
for: esegui un blocco di istruzioni per un numero di iterazionipre-fissato. Sintassi:
f o r ( espr1 ; guard ia ; espr2 )b l o c c o _ i s t r u z i o n i
Semantica:1 Esegui espr12 Se la guardia è falsa, salta al passo 63 Esegui blocco_istruzioni4 Esegui espr25 Vai al punto 2.6 continua con l’esecuzione del programma (esci dal ciclo)
![Page 19: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/19.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
for: uso tipico
Tipicamente, espr1 è l’inizializzazione di una variabile,guardia è una condizione su questa variabile, espr2 èl’incremento di questa variabile. blocco_istruzioni utilizzail valore di questa variabile a seconda del risultato chevogliamo ottenere.
i n t i ;f o r ( i =0; i <10; i ++) {
p r i n t f ( "%d \ n " , i ∗3) ;}
Cosa fa questo programma?
Stampa la tabellina del 3.
![Page 20: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/20.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
for: uso tipico
Tipicamente, espr1 è l’inizializzazione di una variabile,guardia è una condizione su questa variabile, espr2 èl’incremento di questa variabile. blocco_istruzioni utilizzail valore di questa variabile a seconda del risultato chevogliamo ottenere.
i n t i ;f o r ( i =0; i <10; i ++) {
p r i n t f ( "%d \ n " , i ∗3) ;}
Cosa fa questo programma? Stampa la tabellina del 3.
![Page 21: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/21.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
for: uso tipico
i n t i ;f o r ( i =0; i <10; i ++) {
i f ( i%2 == 0)p r i n t f ( "%d \ n " , i ) ;
}
Cosa fa questo programma?
Stampa i numeri pari minori di 10.
![Page 22: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/22.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
for: uso tipico
i n t i ;f o r ( i =0; i <10; i ++) {
i f ( i%2 == 0)p r i n t f ( "%d \ n " , i ) ;
}
Cosa fa questo programma? Stampa i numeri pari minori di 10.
![Page 23: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/23.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
for: altro esempio
In realtà, le espressioni possono essere qualunque:
i n t n ;f o r ( n=1; n>−50 && n<150; n∗=−2) {
p r i n t f ( "%d \ n " , n ) ;}
Cosa fa questo programma?
Partendo da n = 1, moltiplica nper −2 finché non esce dall’intervallo (−50,150).
![Page 24: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/24.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
for: altro esempio
In realtà, le espressioni possono essere qualunque:
i n t n ;f o r ( n=1; n>−50 && n<150; n∗=−2) {
p r i n t f ( "%d \ n " , n ) ;}
Cosa fa questo programma? Partendo da n = 1, moltiplica nper −2 finché non esce dall’intervallo (−50,150).
![Page 25: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/25.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
for: cicli infiniti
Per uscire dal ciclo for la guardia deve diventare falsa. Cosasuccede se la guardia del for è sempre verificata?
i n t i ;f o r ( i =0; i%2 == 0; i +=2) {
p r i n t f ( "%d \ n " , i ) ;}
Ciclo infinito: il programma non termina.
i n t i ;f o r ( i =0; i <=0; i −−) {
p r i n t f ( "%d \ n " , i ) ;}
Questo è uno degli errori tipici contenuti nei programmi.
![Page 26: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/26.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
for: cicli infiniti
Per uscire dal ciclo for la guardia deve diventare falsa. Cosasuccede se la guardia del for è sempre verificata?
i n t i ;f o r ( i =0; i%2 == 0; i +=2) {
p r i n t f ( "%d \ n " , i ) ;}
Ciclo infinito: il programma non termina.
i n t i ;f o r ( i =0; i <=0; i −−) {
p r i n t f ( "%d \ n " , i ) ;}
Questo è uno degli errori tipici contenuti nei programmi.
![Page 27: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/27.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
for: cicli infiniti
Per uscire dal ciclo for la guardia deve diventare falsa. Cosasuccede se la guardia del for è sempre verificata?
i n t i ;f o r ( i =0; i%2 == 0; i +=2) {
p r i n t f ( "%d \ n " , i ) ;}
Ciclo infinito: il programma non termina.
i n t i ;f o r ( i =0; i <=0; i −−) {
p r i n t f ( "%d \ n " , i ) ;}
Questo è uno degli errori tipici contenuti nei programmi.
![Page 28: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/28.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
Sintassi while
while: esegui un blocco di istruzioni per un numero diiterazioni non pre-fissato. Sintassi:
whi le ( guard ia )b l o c c o _ i s t r u z i o n i
Semantica:1 Se la guardia è falsa, salta al passo 3.2 Esegui blocco_istruzioni; vai al passo 1.3 continua con l’esecuzione del programma (esci dal ciclo)
![Page 29: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/29.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
while: esempio
i n t somma = 0;i n t n ;wh i le (somma < 100) {
scanf ( "%d " , &n ) ;somma += n ;
}p r i n t f ( "%d \ n " , somma) ;
Cosa fa questo programma?
Legge interi da terminale finché lasomma non supera 100, quindi stampa la somma. A priori, èimpossibile sapere quanti numeri saranno letti, quindi si usawhile.
![Page 30: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/30.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
while: esempio
i n t somma = 0;i n t n ;wh i le (somma < 100) {
scanf ( "%d " , &n ) ;somma += n ;
}p r i n t f ( "%d \ n " , somma) ;
Cosa fa questo programma? Legge interi da terminale finché lasomma non supera 100, quindi stampa la somma.
A priori, èimpossibile sapere quanti numeri saranno letti, quindi si usawhile.
![Page 31: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/31.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
while: esempio
i n t somma = 0;i n t n ;wh i le (somma < 100) {
scanf ( "%d " , &n ) ;somma += n ;
}p r i n t f ( "%d \ n " , somma) ;
Cosa fa questo programma? Legge interi da terminale finché lasomma non supera 100, quindi stampa la somma. A priori, èimpossibile sapere quanti numeri saranno letti, quindi si usawhile.
![Page 32: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/32.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
while: esempio
i n t n ;i n t i ;scanf ( "%d " , &n ) ;i = 2 ;wh i le ( n%i && i <n ) {
i ++;}p r i n t f ( "%d \ n " , i <n ) ;
Cosa fa questo programma?
Stampa 0 se n è primo, 1altrimenti (esiste un numero i ∈ [2,n − 1] t.c. n è divisibile peri). A priori, è impossibile sapere quanti valori di i sarannotestati, quindi si usa while.Esempio:n = 9, i = 2,3n = 7, i = 2,3,4,5,6,7
![Page 33: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/33.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
while: esempio
i n t n ;i n t i ;scanf ( "%d " , &n ) ;i = 2 ;wh i le ( n%i && i <n ) {
i ++;}p r i n t f ( "%d \ n " , i <n ) ;
Cosa fa questo programma? Stampa 0 se n è primo, 1altrimenti (esiste un numero i ∈ [2,n − 1] t.c. n è divisibile peri).
A priori, è impossibile sapere quanti valori di i sarannotestati, quindi si usa while.Esempio:n = 9, i = 2,3n = 7, i = 2,3,4,5,6,7
![Page 34: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/34.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
while: esempio
i n t n ;i n t i ;scanf ( "%d " , &n ) ;i = 2 ;wh i le ( n%i && i <n ) {
i ++;}p r i n t f ( "%d \ n " , i <n ) ;
Cosa fa questo programma? Stampa 0 se n è primo, 1altrimenti (esiste un numero i ∈ [2,n − 1] t.c. n è divisibile peri). A priori, è impossibile sapere quanti valori di i sarannotestati, quindi si usa while.Esempio:n = 9, i = 2,3n = 7, i = 2,3,4,5,6,7
![Page 35: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/35.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
Cicli annidati: esempio
i n t n ;i n t i ;i n t j ;f o r ( j =0; j <10; j ++) {
scanf ( "%d " , &n ) ;i = 2 ;wh i le ( n%i && i <n ) {
i ++;}p r i n t f ( "%d \ n " , i <n ) ;
}
Cosa fa questo programma?
Legge 10 interi, e per ognunostampa 0 se n è primo, 1 altrimenti.Notare l’indentazione
![Page 36: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/36.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
Cicli annidati: esempio
i n t n ;i n t i ;i n t j ;f o r ( j =0; j <10; j ++) {
scanf ( "%d " , &n ) ;i = 2 ;wh i le ( n%i && i <n ) {
i ++;}p r i n t f ( "%d \ n " , i <n ) ;
}
Cosa fa questo programma? Legge 10 interi, e per ognunostampa 0 se n è primo, 1 altrimenti.
Notare l’indentazione
![Page 37: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/37.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
Cicli annidati: esempio
i n t n ;i n t i ;i n t j ;f o r ( j =0; j <10; j ++) {
scanf ( "%d " , &n ) ;i = 2 ;wh i le ( n%i && i <n ) {
i ++;}p r i n t f ( "%d \ n " , i <n ) ;
}
Cosa fa questo programma? Legge 10 interi, e per ognunostampa 0 se n è primo, 1 altrimenti.Notare l’indentazione
![Page 38: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/38.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
Sintassi do-while
do-while: esegui un blocco di istruzioni per un numero diiterazioni non pre-fissato, ma almeno una volta. Sintassi:
dob l o c c o _ i s t r u z i o n i
wh i le ( guard ia )
Semantica:1 Esegui blocco_istruzioni;2 Se la guardia è vera, salta al passo 1 (continua il ciclo), se
invece è falsa, salta al passo 3.3 continua con l’esecuzione del programma (esci dal ciclo)
Questo costrutto generalmente è meno usato degli altri due.
![Page 39: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/39.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
do-while: esempio
i n t n ;do {
scanf ( "%d " , &n ) ;} wh i le ( n>=0)p r i n t f ( "%d \ n " , n ) ;
Cosa fa questo programma?
Legge una sequenza di interipositivi da tastiera terminati da un intero negativo che vienestampato.A priori, è impossibile sapere quanti valori saranno letti, masappiamo che ne va letto almeno uno, quindi si usa do-while.
![Page 40: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/40.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
do-while: esempio
i n t n ;do {
scanf ( "%d " , &n ) ;} wh i le ( n>=0)p r i n t f ( "%d \ n " , n ) ;
Cosa fa questo programma? Legge una sequenza di interipositivi da tastiera terminati da un intero negativo che vienestampato.
A priori, è impossibile sapere quanti valori saranno letti, masappiamo che ne va letto almeno uno, quindi si usa do-while.
![Page 41: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/41.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
do-while: esempio
i n t n ;do {
scanf ( "%d " , &n ) ;} wh i le ( n>=0)p r i n t f ( "%d \ n " , n ) ;
Cosa fa questo programma? Legge una sequenza di interipositivi da tastiera terminati da un intero negativo che vienestampato.A priori, è impossibile sapere quanti valori saranno letti, masappiamo che ne va letto almeno uno, quindi si usa do-while.
![Page 42: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/42.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
Tre costrutti: riepilogo
for: si sa in anticipo il numero di iterazioni;while: non si sa in anticipo il numero di iterazioni;do-while: non si sa in anticipo il numero di iterazioni, masappiamo che deve essere eseguita almeno unaiterazione.
In realtà for, while e do-while hanno la stessa potenzaespressiva, cioè possono fare le stesse cose.
![Page 43: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/43.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
Equivalenza di while e for
Questi due programmi sono equivalenti:
Programma 1:
f o r ( expr_1 ; guard ia ; expr_2 )b l o c c o _ i s t r u z i o n i ;
Programma 2:
expr_1 ;wh i le ( guard ia ) {
b l o c c o _ i s t r u z i o n i ;expr_2 ;
}
![Page 44: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/44.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
Equivalenza dei tre costrutti iterativi
while, for e do-while sono equivalenti dal punto divista funzionale. Vuol dire che possiamo intercambiarli?NO! bisogna usare le regole viste prima. Usare un whilequando si sa a priori il numero di iterazioni è un errore:porta a scrivere codice poco comprensibile e pocomanutenibile.Se gli altri non capiscono il tuo codice, vuol dire che èscritto male.Ricorda sempre: codice buono = codice bello (non bastache funzioni).
![Page 45: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/45.jpg)
Errori frequentiComandi iterativi
Array
Cicli forCicli whileCicli do-while
![Page 46: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/46.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Array
In inglese: oggetti messi in filaÈ una semplice struttura dati che permette di mantenere inmemoria un numero prefissato di elementi, tutti dellostesso tipo.
Esempio: mantenere in memoria l’età di 15 persone, inmodo da poterne calcolare la media.
i n t eta [ 1 5 ] ;
Esempio: mantenere in memoria la temperatura minimadegli ultimi 30 giorni, in modo da calcolarne il minimo
double temperatura [ 3 0 ] ;
![Page 47: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/47.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Array
In inglese: oggetti messi in filaÈ una semplice struttura dati che permette di mantenere inmemoria un numero prefissato di elementi, tutti dellostesso tipo.Esempio: mantenere in memoria l’età di 15 persone, inmodo da poterne calcolare la media.
i n t eta [ 1 5 ] ;
Esempio: mantenere in memoria la temperatura minimadegli ultimi 30 giorni, in modo da calcolarne il minimo
double temperatura [ 3 0 ] ;
![Page 48: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/48.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Array
In inglese: oggetti messi in filaÈ una semplice struttura dati che permette di mantenere inmemoria un numero prefissato di elementi, tutti dellostesso tipo.Esempio: mantenere in memoria l’età di 15 persone, inmodo da poterne calcolare la media.
i n t eta [ 1 5 ] ;
Esempio: mantenere in memoria la temperatura minimadegli ultimi 30 giorni, in modo da calcolarne il minimo
double temperatura [ 3 0 ] ;
![Page 49: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/49.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Accesso agli elementi dell’array
Abbiamo l’array int array[]
Accesso all’i-esimo elemento dell’array: array[i] (i èdetto indice)
Esempio: scrittura di un valore
i n t a r ray [ 3 0 ] ;a r ray [ 1 7 ] = 5 ;
Esempio: lettura di un valore
i n t a r ray [ 3 0 ] ;i n t n ;. . .n = ar ray [ 1 7 ] ;
![Page 50: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/50.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Accesso agli elementi dell’array
Abbiamo l’array int array[]
Accesso all’i-esimo elemento dell’array: array[i] (i èdetto indice)Esempio: scrittura di un valore
i n t a r ray [ 3 0 ] ;a r ray [ 1 7 ] = 5 ;
Esempio: lettura di un valore
i n t a r ray [ 3 0 ] ;i n t n ;. . .n = ar ray [ 1 7 ] ;
![Page 51: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/51.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Accesso agli elementi dell’array
Abbiamo l’array int array[]
Accesso all’i-esimo elemento dell’array: array[i] (i èdetto indice)Esempio: scrittura di un valore
i n t a r ray [ 3 0 ] ;a r ray [ 1 7 ] = 5 ;
Esempio: lettura di un valore
i n t a r ray [ 3 0 ] ;i n t n ;. . .n = ar ray [ 1 7 ] ;
![Page 52: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/52.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Accesso agli elementi dell’array
IMPORTANTE: Se la dimensione di un array è n, i suoi indicivanno da 0 a n − 1.
![Page 53: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/53.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Accessi e scritture fuori dall’array
Che succede se scriviamo o leggiamo un indice fuoridall’array?
i n t a r ray [ 3 0 ] ;a r ray [ 3 0 ] = 5 ;ar ray [ 4 0 ] = 5 ;a = ar ray [ −1] ;
![Page 54: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/54.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Accessi e scritture fuori dall’array
![Page 55: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/55.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Inizializzazione
Due modi per inizializzare un array, analoghi all’inizializzazionedelle variabili:
Inizializzazione esplicita: al momento della dichiarazioneconosciamo già il contenuto
i n t eta [ ] = {23 , 24 , 17 , 27 , 25 , 24 , 24}
Inizializzazione implicita: al momento della dichiarazionenon conosciamo il contenuto
i n t eta [ 1 5 ] ;
Che succede se leggiamo un valore da un array noninizializzato?
Il risultato della lettura non è un valoreaffidabile.
![Page 56: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/56.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Inizializzazione
Due modi per inizializzare un array, analoghi all’inizializzazionedelle variabili:
Inizializzazione esplicita: al momento della dichiarazioneconosciamo già il contenuto
i n t eta [ ] = {23 , 24 , 17 , 27 , 25 , 24 , 24}
Inizializzazione implicita: al momento della dichiarazionenon conosciamo il contenuto
i n t eta [ 1 5 ] ;
Che succede se leggiamo un valore da un array noninizializzato? Il risultato della lettura non è un valoreaffidabile.
![Page 57: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/57.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Inizializzazione
Due modi per inizializzare un array, analoghi all’inizializzazionedelle variabili:
Inizializzazione esplicita: al momento della dichiarazioneconosciamo già il contenuto
i n t eta [ ] = {23 , 24 , 17 , 27 , 25 , 24 , 24}
Inizializzazione implicita: al momento della dichiarazionenon conosciamo il contenuto
i n t eta [ 1 5 ] ;
Che succede se leggiamo un valore da un array noninizializzato? Il risultato della lettura non è un valoreaffidabile.
![Page 58: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/58.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Riepilogo array
Evitare errori tipici:Non accedere ad indici fuori dal range [0,n − 1] (segfault)
Non leggere valori non inizializzati (valori non affidabili)
![Page 59: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/59.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Riepilogo array
Evitare errori tipici:Non accedere ad indici fuori dal range [0,n − 1] (segfault)Non leggere valori non inizializzati (valori non affidabili)
![Page 60: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/60.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Array e cicli (for)
Array e cicli si sposano naturalmente. Esempio con for:
i n t eta [ ] = {23 , 24 , 17 , 27 , 25 , 24 , 24}i n t N = 7;i n t i ;i n t somma = 0;double media = 0;f o r ( i = 0 ; i < N; i ++)
somma += eta [ i ]media = ( double ) somma / N;
Cosa fa questo programma?
Calcola la media degli elementicontenuti in eta.
![Page 61: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/61.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Array e cicli (for)
Array e cicli si sposano naturalmente. Esempio con for:
i n t eta [ ] = {23 , 24 , 17 , 27 , 25 , 24 , 24}i n t N = 7;i n t i ;i n t somma = 0;double media = 0;f o r ( i = 0 ; i < N; i ++)
somma += eta [ i ]media = ( double ) somma / N;
Cosa fa questo programma? Calcola la media degli elementicontenuti in eta.
![Page 62: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/62.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Array e cicli (while)
Array e cicli si sposano naturalmente. Esempio con while:
i n t N = 7;double temperatura_min [ ] = {2 , 5 , 5 , −1, 3 , 0 , −2}i n t i = 0 ;wh i le ( i < N && temperatura_min [ i ] > 0)
i ++
Cosa fa questo programma?
Se i < N allora i memorizzal’indice del primo giorno di gelo, se i = N allora non ci sonostati giorni di gelo.
![Page 63: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/63.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Array e cicli (while)
Array e cicli si sposano naturalmente. Esempio con while:
i n t N = 7;double temperatura_min [ ] = {2 , 5 , 5 , −1, 3 , 0 , −2}i n t i = 0 ;wh i le ( i < N && temperatura_min [ i ] > 0)
i ++
Cosa fa questo programma? Se i < N allora i memorizzal’indice del primo giorno di gelo, se i = N allora non ci sonostati giorni di gelo.
![Page 64: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/64.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Esempio lettura da terminale
i n t a r r [ 7 ]i n t i ;i n t n ;f o r ( i =0; i <7; i ++) {
scanf ( "%d " , &n ) ;a r r [ i ] = n ;
}f o r ( i =6; i >=0; i −−) {
p r i n t f ( "%d " , a r r [ i ] ) ;}
Cosa fa questo programma?
Legge 7 interi da terminale e listampa nell’ordine inverso rispetto a come sono stati letti.
![Page 65: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/65.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Esempio lettura da terminale
i n t a r r [ 7 ]i n t i ;i n t n ;f o r ( i =0; i <7; i ++) {
scanf ( "%d " , &n ) ;a r r [ i ] = n ;
}f o r ( i =6; i >=0; i −−) {
p r i n t f ( "%d " , a r r [ i ] ) ;}
Cosa fa questo programma? Legge 7 interi da terminale e listampa nell’ordine inverso rispetto a come sono stati letti.
![Page 66: Laboratorio di Programmazione Ididawiki.cli.di.unipi.it/lib/exe/fetch.php/informatica/prl/lab4_cicli.pdf · Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2019/2020.](https://reader036.fdocument.pub/reader036/viewer/2022071103/5fdcb24f6d8bb75d31591f7c/html5/thumbnails/66.jpg)
Errori frequentiComandi iterativi
Array
ArrayArray e cicli
Array e cicli: regole generali
Regola generale:Ogni volta che pensate“Per ogni elemento dell’array, ...”−→ bisogna usare un ciclo for
Ogni volta che pensate“Per almeno un elemento dell’array, ...”−→ bisogna usare un ciclo while