Anda di halaman 1dari 5

Tipologie di cicli

Funzione dei cicli e tipologie


Spesso capita di incontrare problemi la cui soluzione richiede che alcune istruzioni siano ripetute un certo numero di volte. In tali situazioni occorre utilizzare delle strutture cicliche. Possiamo distinguere tra due strutture cicliche fondamentali: il ciclo precondizionale (a condizione in testa); il ciclo postcondizionale (a condizione in coda). Nota: esiste anche unaltra tipologia di ciclo derivata, detta ciclo con contatore, che affronteremo in seguito.

La struttura ciclica precondizionale


La struttura ciclica precondizionale pu essere rappresentata graficamente nel modo seguente:
condizione di terminazione del ciclo

condizione
vero

falso

Istruzioni del ciclo

La condizione viene testata prima di entrare nel ciclo. Mentre la condizione vera, si continua a ciclare, cio ad eseguire le istruzioni del ciclo; quando la condizione diventa falsa il ciclo termina. Osservate che, se la condizione subito falsa, il ciclo non viene eseguito nemmeno una volta. Inoltre, importante sottolineare che la condizione unespressione booleana contenente almeno una variabile il cui valore viene modificato allinterno del ciclo. In caso contrario, se la condizione inizialmente vera, essa continua ad esserlo indefinitamente e ci causa un loop infinito. Per esempio, supponiamo che la condizione sia x<5 e che x valga 2. Se la variabile x non subisce modifiche allinterno del ciclo, la condizione rimane sempre vera e dal ciclo non si esce mai.

Bocchi Cinzia Ultimo aggiornamento: 14/10/2011

La struttura ciclica postcondizionale


La struttura ciclica postcondizionale pu essere rappresentata graficamente nel modo seguente:

Istruzioni del ciclo


vero

vero

condizione
falso

condizione di terminazione del ciclo

La condizione viene testata dopo lesecuzione delle istruzioni del ciclo. Si continua a ciclare fintanto che la condizione vera; quando la condizione diventa falsa il ciclo termina. Osservate che, anche se la condizione subito falsa, il ciclo viene eseguito almeno una volta. Analogamente alla struttura ciclica precondizionale, la condizione unespressione booleana contenente almeno una variabile il cui valore viene modificato allinterno del ciclo.

Esempio: conteggi
Consideriamo il seguente esempio: Contare i numeri inseriti dallutente, fino a quando non viene inserito uno zero. In altre parole, quando lutente non ha pi numeri da inserire, immette uno zero. Azioni ripetute: inserimento di un numero e suo conteggio. Terminazione del ciclo: inserimento del numero zero. Per contare abbiamo bisogno di una variabile che funga da contatore, cio di una variabile che si incrementa di 1 ad ogni inserimento di un numero, eccetto quando questo zero. Questa variabile deve avere un valore iniziale pari a zero. Immaginate che la variabile contatore sia un secchio e che i numeri siano palline da ping pong.

Bocchi Cinzia Ultimo aggiornamento: 14/10/2011

contatore 0

contatore 1

contatore 2

vuoto

+1 pallina

+1 pallina

Il contatore vale inizialmente zero. Quando viene aggiunta una pallina il contatore si incrementa di uno, cio aggiunge 1 al suo valore corrente, e passa al valore 1 (0+1). Quando viene aggiunta unaltra pallina, il contatore passa al valore 2 (1+1), e cos via.

input <> 0
vero

falso

leggi input incrementa contatore


vero

incrementa contatore leggi prossimo input

vero

input <> 0
falso

ciclo precondizionale Listruzione incrementa contatore in Java :

ciclo postcondizionale

contatore= contatore+1;

Bocchi Cinzia Ultimo aggiornamento: 14/10/2011

Caratteristiche e confronti Il ciclo precondizionale presenta un problema: non possibile valutare la condizione perch non stato acquisito ancora alcun input. Occorre quindi leggere un numero prima di entrare nel ciclo. Se il numero subito zero, il ciclo non viene eseguito nemmeno una volta. Il ciclo postcondizionale non crea problemi per linput iniziale poich la prima azione che si esegue proprio la lettura del numero. Purtroppo, per, se il primo numero zero il ciclo viene eseguito una volta e si ottiene un valore del contatore errato.

Esempio: sommatorie
Consideriamo il seguente esempio: Sommare i numeri inseriti dallutente, fino a quando non viene inserito uno zero. Azioni ripetute: inserimento di un numero e calcolo somma. Terminazione del ciclo: inserimento del numero zero. Per sommare abbiamo bisogno di una variabile che funga da sommatore, cio di una variabile che si incrementi di un valore non fisso ad ogni inserimento di un numero, eccetto quando questo sia zero. Questa variabile deve avere un valore iniziale pari a zero. Immaginate che la variabile sommatore sia un secchio e i numeri siano palline da ping pong. Il numero di palline da ping pong varia di volta in volta.

sommatore 0

sommatore 3 1

sommatore 5 2

vuoto

+3 palline

+2 palline

Il sommatore vale inizialmente zero. Quando viene aggiunto un certo numero di palline n il sommatore si incrementa di n, cio aggiunge n al suo valore corrente.

Bocchi Cinzia Ultimo aggiornamento: 14/10/2011

input <> 0
vero

falso

leggi input incrementa sommatore


vero

incrementa sommatore leggi prossimo input

vero

input <> 0
falso

ciclo precondizionale Listruzione incrementa sommatore in Java :

ciclo postcondizionale

sommatore= sommatore+n; dove n assume un valore che pu cambiare ad ogni ciclo.

Operatori di incremento/decremento abbreviati


Il linguaggio Java dispone di alcuni operatori che permettono di eseguire incrementi e decrementi con una sintassi abbreviata. Gli operatori sono riportati nella seguente tabella insieme alla loro forma estesa. operatore esempio += x += y -= x -= y *= x *= y /= x /= y %= x %= y equivale a x = x+y x = x-y x = x*y x = x/y x = x%y

Bocchi Cinzia Ultimo aggiornamento: 14/10/2011