Cicli Con Contatore
-
Upload
cinzia-bocchi -
Category
Documents
-
view
429 -
download
0
description
Transcript of 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
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
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
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
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
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
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
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