Cicli Con Contatore

8
 Cicli con contatore La struttura ciclica con contatore Ques ta struttura è usata esclusivamente  quando è noto a priori il numero di ripetizioni da eseguire; indichiamo con N il numero di ripetizioni. Per poter es eguire un numero N di ripetizioni, è necess ar io utilizzare una variabile che funga da contatore di ripetizioni: ad ogni ciclo, tale variabile deve essere incrementata di 1. Indichiamo, in modo del tutto arbitrario, la variabile contatore con cont. La struttura ciclica con conta tore può essere rappr esent ata grafi camente nel modo seguente: Come potete osservare dalla figura, le azioni fondamentali da compiere sono: 1. Stabilire il valore iniziale del contatore Il valore iniziale del contatore deve essere assegnato prima di entrare nel ciclo e può essere un qualunque numero intero positivo. Per il momento utilizzeremo 1 come valore iniziale del contatore. 2. Imporre la condizione di terminazione (uscita) del cic lo Un ciclo deve terminare, prima o poi. In caso contrario si incorre in un problema che viene chiama to loop infinito. Un loop infinito è un ciclo che non termina mai, perc la co ndizione di uscita da esso rimane sempre vera. Questa situazione è assolutamente da evitare. Come condizione di terminazione useremo per il momento la seguente: cont<=N. Autore: Cinzia Bocchi Ultimo aggiornamento: 20/09/11 cont <= N vero Istruzioni del ciclo falso cont= cont+1 cont= 1 inizializzazione del contatore condizione di terminazione del ciclo incremento del contatore 1

description

Cicli con contatore e statement for in Java

Transcript of Cicli Con Contatore

Page 1: Cicli Con Contatore

5/10/2018 Cicli Con Contatore - slidepdf.com

http://slidepdf.com/reader/full/cicli-con-contatore 1/8

 

Cicli con contatore

La struttura ciclica con contatore

Questa struttura è usata esclusivamente quando è noto a priori il numero di

ripetizioni da eseguire; indichiamo con N il numero di ripetizioni.Per poter eseguire un numero N di ripetizioni, è necessario utilizzare unavariabile che funga da contatore di ripetizioni: ad ogni ciclo, tale variabile deveessere incrementata di 1. Indichiamo, in modo del tutto arbitrario, la variabilecontatore con cont.La struttura ciclica con contatore può essere rappresentata graficamente nelmodo seguente:

Come potete osservare dalla figura, le azioni fondamentali da compiere sono:

1. Stabilire il valore iniziale del contatoreIl valore iniziale del contatore deve essere assegnato prima di entrare nel ciclo epuò essere un qualunque numero intero positivo. Per il momento utilizzeremo 1come valore iniziale del contatore.

2. Imporre la condizione di terminazione (uscita) del cicloUn ciclo deve terminare, prima o poi. In caso contrario si incorre in un problemache viene chiamato loop infinito. Un loop infinito è un ciclo che non termina

mai, perché la condizione di uscita da esso rimane sempre vera. Questasituazione è assolutamente da evitare. Come condizione di terminazione useremoper il momento la seguente: cont<=N.

Autore: Cinzia BocchiUltimo aggiornamento: 20/09/11

cont <= N

vero

Istruzioni del ciclo

falso

cont= cont+1

cont= 1inizializzazionedel contatore

condizione diterminazionedel ciclo

incremento delcontatore

1

Page 2: Cicli Con Contatore

5/10/2018 Cicli Con Contatore - slidepdf.com

http://slidepdf.com/reader/full/cicli-con-contatore 2/8

 

Iniziando con un contatore pari a 1 e imponendo la condizione cont<=N siottengono esattamente N ripetizioni, come desiderato. Fate attenzione, però,perché se il valore iniziale del contatore è diverso, questa regola non vale più,ma è necessario fare il seguente calcolo:

N = numero_di_cicli + cont_iniziale -1

Vediamo alcuni esempi:- se numero_di_cicli è 10 e cont_iniziale vale 1, allora N deve valere 10- se numero_di _cicli è 10 e cont_iniziale vale 0, allora N deve valere 9- se numero_di_cicli è 10 e cont_iniziale vale 8, allora N deve valere 17

3. Determinare esattamente quali istruzioni devono essere ripetute

4. Incrementare il contatore dopo l’esecuzione di ciascun cicloCon il termine incremento si intende l’aumento di 1 unità.

Un esempio

Il seguente diagramma di flusso rappresenta l’algoritmo per risolvere ilproblema: dati 5 numeri interi calcolarne la somma.

TABELLA DATIID Descrizione I/O/L/C Valore

Iniz.Tipo Vincoli

num Contiene i numeri inseritidi volta in volta

I intero

somma Contiene le somme parziali

e la somma totale

O intero

cont Contatore del ciclo L intero

FLOW CHART

Start

somma= 0

cont= 1

cont<=5

somma= somma+num

input(num)

cont= cont+1

Vero

output(somma)

1

2

3

4

5

6

7

End

Falso

Autore: Cinzia BocchiUltimo aggiornamento: 20/09/11

2

Page 3: Cicli Con Contatore

5/10/2018 Cicli Con Contatore - slidepdf.com

http://slidepdf.com/reader/full/cicli-con-contatore 3/8

 

TABELLA DI SIMULAZIONESupponiamo che i 5 numeri inseriti siano: 1 5 2 0 3. L’output atteso è 11.

ciclo istruz num somma cont condizione output1 0

2 1

1

3 Vera4 15 16 2

2

3 Vera4 55 66 3

3

34 2 Vera

5 86 4

4

3 Vera4 05 86 5

5

3 Vera4 35 116 63 Falsa7 11

Il risultato ottenuto è uguale a quello atteso: l’algoritmo è corretto.

La struttura con contatore in Java

La struttura ciclica con contatore viene realizzata in Java utilizzando lostatement FOR , la cui sintassi è

for (inizializzazione; condizione; aggiornamento){

istruzioni del ciclo}

• Inizializzazione comprende la dichiarazione e l’inizializzazione del contatoreo La dichiarazione è necessaria solo se il contatore non è stato dichiarato

in precedenza.o Se la variabile contatore è dichiarata all’interno del FOR, essa è visibile

solo all’interno del blocco.es. int cont = 1 oppure, se cont è già stato dichiarato cont = 1

Autore: Cinzia BocchiUltimo aggiornamento: 20/09/11

3

Page 4: Cicli Con Contatore

5/10/2018 Cicli Con Contatore - slidepdf.com

http://slidepdf.com/reader/full/cicli-con-contatore 4/8

 

• Condizione è un’espressione booleana contenente la variabile contatorees. cont<=n, dove n è il numero di volte che si desidera eseguire le istruzionidel ciclo.

• Aggiornamento contiene l’incremento del contatore

es. cont = cont+1 Nota : Java consente di usare anche forme abbreviate per l’incremento ; questesono cont += 1 e cont ++

• Le istruzioni del ciclo vengono eseguite mentre la condizione è vera.

• Si esce dal ciclo quando la condizione diventa falsa.

Continuiamo, a questo punto, con la soluzione del problema posto inizialmente.

Scrittura del programma Java

01020304050607080910

1112131415161718192021

222324

class CicloSomma{

public static void main(String args[]){

ConsoleReader c= new ConsoleReader(System.in);{

 //dichiarazioni di variabiliint num,somma,cont; //istruzione 1somma=0;

 //istruzioni 2, 3 e 6for(cont=1;cont<=5;cont++){

 //istruzione 4System.out.println("Immetti il numero intero");num= c.readInt(); //istruzione 5somma= somma+num;

} //istruzione 7System.out.println("La somma totale e' "+somma);

}}

}

Autore: Cinzia BocchiUltimo aggiornamento: 20/09/11

4

Page 5: Cicli Con Contatore

5/10/2018 Cicli Con Contatore - slidepdf.com

http://slidepdf.com/reader/full/cicli-con-contatore 5/8

 

Alcune varianti

Inizializzare somma durante la dichiarazione

TABELLA DATIID Descrizione I/O/L/C Valore

Iniz.Tipo Vincoli

num Contiene i numeri inseritidi volta in volta

I intero

somma Contiene le somme parzialie la somma totale

O 0 intero

cont Contatore del ciclo L intero

FLOW CHARTStart

cont= 1

cont<=5

somma= somma+num

input(num)

cont= cont+1

Vero

output(somma)

2

3

4

5

6

7

End

Falso

0102

0304050607080910111213141516

class CicloSomma{

public static void main(String args[]){ConsoleReader c= new ConsoleReader(System.in);{

 //dichiarazioni di variabiliint num,somma=0,cont; //istruzione 1somma=0; //istruzioni 2, 3 e 6for(cont=1;cont<=5;cont++){

 //istruzione 4System.out.println("Immetti il numero intero");num= c.readInt();

Autore: Cinzia BocchiUltimo aggiornamento: 20/09/11

5

Page 6: Cicli Con Contatore

5/10/2018 Cicli Con Contatore - slidepdf.com

http://slidepdf.com/reader/full/cicli-con-contatore 6/8

 

1718192021

222324

 //istruzione 5somma= somma+num;

} //istruzione 7System.out.println("La somma totale e' "+somma);

}}

}

Utilizzare una costante simbolica, anziché esplicita, per indicare ilnumero di cicli (consigliato)

Invece di utilizzare la costante numerica 5 possiamo definire una costantesimbolica N di valore 5.

TABELLA DATIID Descrizione I/O/L/C Valore

Iniz.

Tipo Vincoli

num Contiene i numeri inseritidi volta in volta

I intero

somma Contiene le somme parzialie la somma totale

O 0 intero

cont Contatore del ciclo L interoN Numero di cicli C 5 intero

FLOW CHART

 

Start

cont= 1

cont<=N

somma= somma+num

input(num)

cont= cont+1

Vero

output(somma)

2

3

4

5

6

7

End

Falso

Autore: Cinzia BocchiUltimo aggiornamento: 20/09/11

6

Page 7: Cicli Con Contatore

5/10/2018 Cicli Con Contatore - slidepdf.com

http://slidepdf.com/reader/full/cicli-con-contatore 7/8

 

01020304

0506070809101112131415

161718192021222324

class CicloSomma{

public static void main(String args[]){

ConsoleReader c= new ConsoleReader(System.in);{

 //dichiarazioni di costantifinal int N=5; //dichiarazioni di variabiliint num,somma=0,cont; //istruzioni 2, 3 e 6for(cont=1;cont<=N;cont++){

 //istruzione 4System.out.println("Immetti il numero intero");

num= c.readInt(); //istruzione 5somma= somma+num;

} //istruzione 7System.out.println("La somma totale e' "+somma);

}}

}

Codifica con il WHILEE’ importante osservare che un ciclo con contatore può essere codificato in Javaanche utilizzando lo statement WHILE (il viceversa non è sempre valido). Ilcodice che otteniamo, a partire dall’ultimo flow chart è il seguente.

010203040506

0708091011121314151617

1819

class CicloSomma{

public static void main(String args[]){

ConsoleReader c= new ConsoleReader(System.in);{

 //dichiarazioni di costantifinal int N=5; //dichiarazioni di variabiliint num,somma=0,cont; //istruzione 2cont=1; //istruzione 3while(cont<=N){

 //istruzione 4System.out.println("Immetti il numero intero");

num= c.readInt(); //istruzione 5

Autore: Cinzia BocchiUltimo aggiornamento: 20/09/11

7

Page 8: Cicli Con Contatore

5/10/2018 Cicli Con Contatore - slidepdf.com

http://slidepdf.com/reader/full/cicli-con-contatore 8/8

 

2021222324

25262728

somma= somma+num; //istruzione 6cont= cont+1;

} //istruzione 7

System.out.println("La somma totale e' "+somma);}

}}

Quest'opera è stata rilasciata con licenza Creative Commons Attribution-ShareAlike 3.0 Unported. Per leggere una copia della licenza visita il sito web http://creativecommons.org/licenses/by-sa/3.0/ ospedisci una lettera a Creative Commons, 171 Second Street, Suite 300, San Francisco, California,

94105, USA.

Autore: Cinzia BocchiUltimo aggiornamento: 20/09/11

8