42
Cicli ed iterazioni

La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

Cicli ed iterazioni

Page 2: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

5

La ripetizione

Concetto di cicloStruttura di un cicloNumero di iterazioni noteNumero di iterazioni ignote

Page 3: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

La ripetizione

Page 4: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

7

Flusso di esecuzione ciclico

È spesso utile poterripetere alcune parti del programma più volteNel diagramma di flusso, corrisponde a “tornareindietro” ad un bloccoprecedenteSolitamente la ripetizione è controllatada una condizionebooleana

A

B

C

D?

E

V

F

Page 5: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

8

Flusso di esecuzione ciclico

A

B

C

D?

E

V

F

Prima delciclo

Istruzioniche vengonoripetute

Condizionedi ripetizione

Dopo il ciclo

Page 6: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

9

Errore frequente

Ogni ciclo porta in sé il rischio di un grave errore di programmazione: il fatto che il ciclo venga ripetuto indefinitamente, senza mai uscireIl programmatore deve garantire che ogni ciclo, dopo un certo numero di iterazioni, venga terminato

La condizione booleana di controllo dell’iterazione deve divenire falsa

Page 7: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

10

Istruzioni eseguibili ed eseguite

Istruzioni eseguibiliLe istruzioni che fanno parte del programmaCorrispondono alle istruzioni del sorgente C

Istruzioni eseguiteLe istruzioni effettivamente eseguite durante una specifica esecuzione del programmaDipendono dai dati inseriti

Nel caso di scelte, alcune istruzioni eseguibili non verranno eseguiteNel caso di cicli, alcune istruzioni eseguibili verranno eseguite varie volte

Page 8: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

11

Notazione grafica (while)

C

B

V F

A

D

Page 9: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

12

Notazione grafica (while)

C

B

V F

A

D

Condizione

Corpo

Uscita

Ingresso

Ritorno

Page 10: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

13

Flussi di esecuzione

C

B

V F

A

D

Zero iterazioni

AC → FalsoD

Page 11: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

14

Flussi di esecuzione

C

B

V F

A

D

Una iterazione

AC → VeroBC → FalsoD

Page 12: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

15

Flussi di esecuzione

C

B

V F

A

D

Due iterazioni

AC → VeroBC → VeroBC → FalsoD

Page 13: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

16

Notazione grafica (do-while)

C

B

V F

A

D

Page 14: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

17

Notazione grafica (do-while)

C

B

V F

A

D

Condizione

Corpo

Uscita

Ingresso

Ritorno

Page 15: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

18

Flussi di esecuzione

C

B

V F

A

D

Una iterazione

ABC → FalsoD

Page 16: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

19

Flussi di esecuzione

C

B

V F

A

D

Due iterazioni

ABC → VeroBC → FalsoD

Page 17: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

20

Flussi di esecuzione

C

B

V F

A

D

Tre iterazioni

ABC → VeroBC → VeroBC → FalsoD

Page 18: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

La ripetizione

Page 19: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

22

Problemi

Nello strutturare un ciclo occorre garantire:Che il ciclo possa terminareChe il numero di iterazioni sia quello desiderato

Il corpo centrale del ciclo può venire eseguito più volte:

La prima volta lavorerà con variabili che sono state inizializzate al di fuori del cicloLe volte successive lavorerà con variabili che possono essere state modificare nell’iterazione precedenteGarantire la correttezza sia della prima, che delle altre iterazioni

Page 20: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

23

Anatomia di un ciclo (1/5)

Conviene concepire il ciclo come 4 fasiInizializzazioneCondizione di ripetizioneCorpoAggiornamento

Page 21: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

24

Anatomia di un ciclo (2/5)

Conviene concepire il ciclo come 4 fasiInizializzazione

Assegnazione del valore iniziale a tutte le variabili che vengono lette durante il ciclo (nel corpo o nella condizione)

Condizione di ripetizioneCorpoAggiornamento

Page 22: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

25

Anatomia di un ciclo (3/5)

Conviene concepire il ciclo come 4 fasiInizializzazioneCondizione di ripetizione

Condizione, di solito inizialmente vera, che al termine del ciclo diventerà falsaDeve dipendere da variabili che saranno modificate all’interno del ciclo (nel corpo o nell’aggiornamento)

CorpoAggiornamento

Page 23: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

26

Anatomia di un ciclo (4/5)

Conviene concepire il ciclo come 4 fasiInizializzazioneCondizione di ripetizioneCorpo

Le istruzioni che effettivamente occorre ripetereSono lo scopo per cui il ciclo viene realizzatoPosso usare le variabili inizializzatePosso modificare le variabili

Aggiornamento

Page 24: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

27

Anatomia di un ciclo (5/5)

Conviene concepire il ciclo come 4 fasiInizializzazioneCondizione di ripetizioneCorpoAggiornamento

Modifica di una o più variabili in grado di aggiornare il valore della condizione di ripetizioneTengono “traccia” del progresso dell’iterazione

Page 25: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

La ripetizione

Page 26: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

29

Tipologie di cicli

Cicli in cui il numero di iterazioni sia noto a priori, ossia prima di entrare nel ciclo stesso

Solitamente si usa una variabile “contatore”L’aggiornamento consiste in un incrememto o decremento della variabile

Cicli in cui il numero di iterazioni non sia noto a priori, ma dipenda dai dati elaborati nel ciclo

Solitamente si una una condizione dipendente da una variabile letta da tastiera oppure calcolata nel corpo del cicloDifficile distinguere il corpo dall’aggiornamentoProblema di inizializzazione

Page 27: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

30

Cicli con iterazioni note

c < N

corpo

V F

c = 0

c = c + 1

Inizializzazione

Condizione

Corpo

Aggiornamento

Page 28: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

31

Cicli con iterazioni note

Forma 0...N-1Prima iterazione:

c=0

Ultima iterazione:c=N-1

Corpo ripetuto:N volte

Al termine del cicloc=Ncondizione falsa

c < N

corpo

V F

c = 0

c = c + 1

Page 29: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

32

Cicli con iterazioni note

Forma 1...NPrima iterazione:

c=1

Ultima iterazione:c=N

Corpo ripetuto:N volte

Al termine del cicloc=N+1condizione falsa

c ≤ N

corpo

V F

c = 1

c = c + 1

Page 30: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

33

Cicli con iterazioni note

Forma N...1Prima iterazione:

c=N

Ultima iterazione:c=1

Corpo ripetuto:N volte

Al termine del cicloc=0condizione falsa

c > 0

corpo

V F

c = N

c = c – 1

Page 31: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

34

Cicli con iterazioni note

Forma N-1...0Prima iterazione:

c=N-1

Ultima iterazione:c=0

Corpo ripetuto:N volte

Al termine del cicloc=-1condizione falsa

c ≥ 0

corpo

V F

c = N – 1

c = c – 1

Page 32: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

35

Esempio

Acquisire da tastiera una sequenza di numeri interi e stamparne la somma.Il programma

inizialmente chiede all’utente quanti numeri intende inserirein seguito richiede uno ad uno i datiinfine stampa la somma

Page 33: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

36

Soluzione

c < N

leggi dato

V F

c = 0

c = c + 1

leggi N

tot = tot + dato

tot = 0

stampa tot

Page 34: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

La ripetizione

Page 35: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

38

Cicli con iterazioni ignote

Non esiste uno schema generaleEsempio:

Acquisire da tastiera una sequenza di numeri interi e stamparne la somma.Il termine della sequenza viene indicato inserendo un dato pari a zero.

Page 36: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

39

Soluzione parziale

?????

leggi dato

V F

tot = tot + dato

tot = 0

stampa tot

Page 37: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

40

Soluzione 1

dato ≠ 0

leggi dato

V F

tot = tot + dato

tot = 0

stampa tot

dato = 7

Page 38: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

41

Soluzione 2

dato ≠ 0

leggi dato

V F

tot = tot + dato

tot = dato

stampa tot

leggi dato

Page 39: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

42

Soluzione 3

dato ≠ 0

leggi dato

V F

tot = tot + dato

tot = 0

stampa tot

Page 40: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

43

Errore frequente

Dimenticare l’inizializzazione di una variabile utilizzata all’interno del ciclo

dato ≠ 0

leggi dato

V F

tot = tot + dato

tot = 0

stampa tot

dato = 7

Page 41: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

44

Errore frequente

Dimenticare l’incremento della variabile contatore

c < N

leggi dato

V F

c = 0

c = c + 1

leggi N

tot = tot + dato

tot = 0

stampa tot

Page 42: La ripetizione - polito.itelite.polito.it/files/courses/06AZN/lucidi/C/L3.1.pdf · 2014. 10. 6. · Anatomia di un ciclo (5/5) Conviene concepire il ciclo come 4 fasi Inizializzazione

45

Errore frequente

Dimenticare di inizializzare le altre variabili (oltre al contatore)

c < N

leggi dato

V F

c = 0

c = c + 1

leggi N

tot = tot + dato

tot = 0

stampa tot