capitolo 6 iterazione lucidi relativi al volume: java – guida alla programmazione james cohoon,...

78
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl

Upload: cristiana-pinto

Post on 03-May-2015

220 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Capitolo 6Iterazione

Lucidi relativi al volume:

Java – Guida alla programmazione James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Page 2: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Cicli Java Opzioni

while do-while for

Consentono ai programmi di controllare quante volte viene eseguito un elenco di istruzioni

Page 3: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Media Problema

Estrarre un elenco di numeri positivi da inserimenti standard e calcolarne la media I numeri sono uno per riga Un numero negativo funge da indicatore del fatto che

non vi sono altri numeri da elaborare

Osservazioni Non è possibile fornire codice sufficiente utilizzando solo

assegnazioni e costrutti condizionali per risolvere il problema Non si conosce la grandezza dell'elenco da elaborare

È necessaria la capacità di ripetere il codice come necessario

Page 4: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Media Problema

Estrarre un elenco di numeri positivi da inserimenti standard e calcolarne la media I numeri sono uno per riga Un numero negativo funge da indicatore del fatto che

non vi sono altri numeri da elaborare

Algoritmo Preparazione all'elaborazione Ottenere l'input Mentre esiste un input da elaborare{

Elaborare l'input corrente Ottenere l'input successivo

} Eseguire l'elaborazione finale

Page 5: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Media Problema

Estrarre un elenco di numeri positivi da inserimenti standard e calcolarne la media I numeri sono uno per riga Un numero negativo funge da indicatore del fatto che

non vi sono altri numeri da elaborare

Esempio di esecuzioneEnter positive numbers one per line.Indicate end of list with a negative number.4.50.51.3-1Average 2.1

Page 6: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

public class NumberAverage {// main(): punto di ingresso per l'applicazionepublic static void main(String[] args)

throws IOException {// imposta l'elaborazione dell'elenco

// richiede i valori all'utente

// ottiene il primo valore

// elabora i valori uno ad unowhile (value >= 0) {

// aggiunge il valore al totale// elaborato un altro valore// prepara l'iterazione successiva - ottiene

il valore successivo}

// visualizza il risultatoif (valuesProcessed > 0)

// calcola e visualizza la mediaelse

// indica che non esistono medie da visualizzare}

}

Page 7: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

System.out.println("Enter positive numbers 1 per line.\n" + "Indicate end of the list with a negative

number.");

BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));

int valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

Page 8: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Sintassi e semantica di while

Logical expression thatdetermines whether Action

is to be executed — ifExpression evaluates to

true, then Action isexecuted; otherwise, the

loop is terminated

while ( Expression ) Action

Action is either a singlestatement or a statementlist within braces. The actionis also known as the body ofthe loop. After the body is

executed, the test expressionis reevaluated. If the

expression evaluates to true,the body is executed again.

The process repeats until thetest expression evaluates to

false

L'azione può essere un'unica istruzione o un elenco di istruzioni racchiuse tra

parentesi graffe. L'azione si chiama anche corpo del

ciclo. Dopo l'esecuzione del corpo, viene ricalcolata

l'espressione. Se l'espressione dà come

risultato true, viene eseguito di nuovo il corpo del ciclo. Il

processo si ripete finché l'espressione dà come

risultato false.

Espressione logica che determina se l'Azione va

eseguita. Se l'espressione dà come risultato true, viene

eseguita l'azione; diversamente, il ciclo

termina.

Page 9: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srlSemantica di while per il problema della media

// process values one-by-onewhile (value >= 0) { // add value to running total valueSum += value; // processed another value ++valuesProcessed; // prepare to iterate -- get the next input value = Double.parseDouble(stdin.readLine());}

Test expression is evaluated at thestart of each iteration of the loop.Its value indicates whether there is anumber to process

If test expression is true, these statementsare executed. Afterward, the test expression

is reevaluated and the process repeats

L'espressione viene calcolata all'inizio di ogni iterazione del ciclo. Il valore dell'espressione indica se esiste un numero da elaborare

Se l'espressione dà come risultato true, vengono eseguite queste istruzioni.

Dopodiché, l'espressione viene ricalcolata e il processo si ripete

Page 10: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Semantica di while

Expr essi on

Act i on

true false

Expression isevaluated at the

start of eachiteration of the

loop

If Expression istrue, Action is

executed If Expression isfalse, program

executioncontinues withnext statement

L'espressione viene calcolata all'inizio di ogni iterazione del

ciclo

Se l'espressione dà come

risultato false, l'esecuzione del

programma continua con l'istruzione successiva

Se l'epressione

dà come risultato true,

viene eseguita l'azione

Page 11: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzioneint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

Page 12: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzioneint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

0valuesProcessed

Page 13: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzioneint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

0valuesProcessed

0

Page 14: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Tracciaint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

value

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

0valuesProcessed

0

4.5

Page 15: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Tracciaint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

value

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

0valuesProcessed

0

4.5

Page 16: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Tracciaint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

value

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

0valuesProcessed

0

4.5

4.5

Page 17: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Tracciaint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

value

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

0valuesProcessed

4.5

4.5

1

Page 18: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Tracciaint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

value

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

1valuesProcessed

4.5

4.50.5

Page 19: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Tracciaint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

value

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

1valuesProcessed

4.5

0.5

Page 20: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Tracciaint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

value

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

1valuesProcessed

4.5

0.5

5.0

Page 21: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Tracciaint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

value

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

1valuesProcessed

5.0

0.5

2

Page 22: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Tracciaint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

value

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

2valuesProcessed

5.0

0.51.3

Page 23: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Tracciaint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

value

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

2valuesProcessed

5.0

1.3

Page 24: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Tracciaint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

value

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

2valuesProcessed

5.0

1.3

6.3

Page 25: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Tracciaint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

value

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

2valuesProcessed

6.3

1.3

3

Page 26: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Tracciaint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

value

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

3valuesProcessed

6.3

1.3-1

Page 27: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Tracciaint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

value

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

3valuesProcessed

6.3

-1

Page 28: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Tracciaint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

value

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

3valuesProcessed

6.3

-1

Page 29: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Tracciaint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

value

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

3valuesProcessed

6.3

-1

average 2.1

Page 30: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Tracciaint valuesProcessed = 0;double valueSum = 0;

double value = Double.parseDouble(stdin.readLine());

while (value >= 0) {valueSum += value;++valuesProcessed;value = Double.parseDouble(stdin.readLine());

}

if (valuesProcessed > 0){double average = valueSum / valuesProcessed;System.out.println("Average: " + average);

}else{

System.out.println("No list to average");}

valueSum

value

Si supponga che l'input contenga: 4.5 0.5 1.3 -1

3valuesProcessed

6.3

-1

average 2.1

Page 31: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Conversione del testo in minuscolepublic static void main(String[] args) throws

IOException {BufferedReader stdin = new BufferedReader(

new InputStreamReader(System.in));

System.out.println("Enter input to be converted:");

String converted = "";

String currentLine = stdin.readLine();

while (currentLine != null) {String currentConversion =

currentLine.toLowerCase();converted += (currentConversion + "\n");currentLine = stdin.readLine();

}

System.out.println("\nConversion is:\n" +

converted);}

Page 32: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Esempio di esecuzione

Si è premuto CTRL+Z, la sequenza di escape

di Windows per indicare la fine del file

Page 33: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia del programmapublic static void main(String[] args) throws

IOException {BufferedReader stdin = new BufferedReader(

new InputStreamReader(System.in));

System.out.println("Enter input to be converted:");

String converted = "";

String currentLine = stdin.readLine();

while (currentLine != null) {String currentConversion =

currentLine.toLowerCase();converted += (currentConversion + "\n");currentLine = stdin.readLine();

}

System.out.println("\nConversion is:\n" +

converted);}

Page 34: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia del programmapublic static void main(String[] args) throws

IOException {BufferedReader stdin = new BufferedReader(

new InputStreamReader(System.in));

System.out.println("Enter input to be converted:");

String converted = "";

String currentLine = stdin.readLine();

while (currentLine != null) {String currentConversion =

currentLine.toLowerCase();converted += (currentConversion + "\n");currentLine = stdin.readLine();

}

System.out.println("\nConversion is:\n" +

converted);}

Page 35: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia del programmapublic static void main(String[] args) throws

IOException {BufferedReader stdin = new BufferedReader(

new InputStreamReader(System.in));

System.out.println("Enter input to be converted:");

String converted = "";

String currentLine = stdin.readLine();

while (currentLine != null) {String currentConversion =

currentLine.toLowerCase();converted += (currentConversion + "\n");currentLine = stdin.readLine();

}

System.out.println("\nConversion is:\n" +

converted);}

Page 36: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia del programmapublic static void main(String[] args) throws

IOException {BufferedReader stdin = new BufferedReader(

new InputStreamReader(System.in));

System.out.println("Enter input to be converted:");

String converted = "";

String currentLine = stdin.readLine();

while (currentLine != null) {String currentConversion =

currentLine.toLowerCase();converted += (currentConversion + "\n");currentLine = stdin.readLine();

}

System.out.println("\nConversion is:\n" +

converted);}

Page 37: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia del programma

Representation of lower caseconversion of current input line

converted += (currentConversion + "\n");

The append assignment operator updates the representationof converted to include the current input line

Newline character is neededbecause method readLine()"strips" them from the input

L'operatore di concatenamento aggiorna la rappresentazione di converted per includere la riga di input corrente

Rappresentazione della conversione in minuscole

della riga di input corrente

Il carattere di nuova riga è necessario perché il metodo readLine() elimina dall'input

questo carattere

Page 38: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Conversione del testo in minuscolepublic static void main(String[] args) throws

IOException {BufferedReader stdin = new BufferedReader(

new InputStreamReader(System.in));

System.out.println("Enter input to be converted:");

String converted = "";

String currentLine = stdin.readLine();

while (currentLine != null) {String currentConversion =

currentLine.toLowerCase();converted += (currentConversion + "\n");currentLine = stdin.readLine();

}

System.out.println("\nConversion is:\n" +

converted);}

Page 39: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Progettazione di cicli Domande da porsi nella progettazione e nell'analisi dei cicli

Quale inizializzazione è necessaria per l'espressione di test del ciclo?

Quale inizializzazione è necessaria per l'elaborazione del ciclo?

Che cosa provoca la fine del ciclo?

Quali azioni dovrebbe eseguire il ciclo?

Quali azioni sono necessarie per prepararsi alla successiva iterazione del ciclo?

Quali condizioni sono true e quali false quando il ciclo viene terminato?

Quando termina il ciclo quali azioni sono necessarie per preparare la successiva elaborazione del programma?

Page 40: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

L'istruzione for

int currentTerm = 1;

for (int i = 0; i < 5; ++i) {System.out.println(currentTerm);currentTerm *= 2;

}

Page 41: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

L'istruzione for

int currentTerm = 1;

for (int i = 0; i < 5; ++i) {System.out.println(currentTerm);currentTerm *= 2;

}

Initialization stepis performed onlyonce -- just prior

to the firstevaluation of thetest expression

L'inizializzazione viene effettuata solo una volta, appena prima

del primo calcolo dell'espressione

di prova

Page 42: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

L'istruzione for

int currentTerm = 1;

for (int i = 0; i < 5; ++i) {System.out.println(currentTerm);currentTerm *= 2;

}

The body of the loop iterateswhile the test expression istrueInitialization step

is performed onlyonce -- just prior

to the firstevaluation of thetest expression

L'inizializzazione viene effettuata solo una volta, appena prima

del primo calcolo dell'espressione

di prova

Il corpo del ciclo itera finché l'espressione di prova è true

Page 43: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

L'istruzione for

int currentTerm = 1;

for (int i = 0; i < 5; ++i) {System.out.println(currentTerm);currentTerm *= 2;

}

The body of the loop iterateswhile the test expression istrueInitialization step

is performed onlyonce -- just prior

to the firstevaluation of thetest expression

The body of the loop displays thecurrent term in the number series.It then determines what is to be thenew current number in the series

L'inizializzazione viene effettuata solo una volta, appena prima

del primo calcolo dell'espressione

di prova

Il corpo del ciclo visualizza il termine corrente nella serie di

numeri, e determina quindi qual è il numero corrente

Il corpo del ciclo itera finché l'espressione di prova è true

Page 44: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

L'istruzione for

int currentTerm = 1;

for (int i = 0; i < 5; ++i) {System.out.println(currentTerm);currentTerm *= 2;

}

After each iteration of thebody of the loop, the updateexpression is reevaluated

The body of the loop iterateswhile the test expression istrueInitialization step

is performed onlyonce -- just prior

to the firstevaluation of thetest expression

The body of the loop displays thecurrent term in the number series.It then determines what is to be thenew current number in the series

L'inizializzazione viene effettuata solo una volta, appena prima

del primo calcolo dell'espressione

di prova

Il corpo del ciclo visualizza il termine corrente nella serie di

numeri, e determina quindi qual è il numero corrente

Dopo ogni iterazione del corpo del ciclo, viene

ricalcolata l'espressione aggiornata

Il corpo del ciclo itera finché l'espressione di prova è true

Page 45: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

For Expr

Act i on

true false

For I ni t

Post Expr

Evaluated onceat the beginning

of the forstatements's

executionThe ForExpr is

evaluated at thestart of each

iteration of theloop

If ForExpr is true,Action isexecuted

After the Actionhas completed,

thePostExpression

is evaluated

If ForExpr isfalse, program

executioncontinues withnext statement

After evaluating thePostExpression, the next

iteration of the loop starts

Calcolato una volta all’inizio

dell’esecuzione dell’istruzione

forL’espressione ForExpr viene

calcolata all’inizio di ogni

iterazione

Se ForExpr è falsa,

l’esecuzione del

programma continua

con l’istruzione seguente

Se ForExpr è vera, viene

eseguita l’azione

Dopo che l’azione è

completata, viene

calcolata PostExpr

Dopo il calcolo di PostExpr, inizia l’iterazione successiva

del ciclo

Page 46: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Sintassi dell'istruzione for

Logical test expression that determines whether the action and update step areexecuted

for ( ForInit ; ForExpression ; ForUpdate ) Action

Update step is performed afterthe execution of the loop body

Initialization step prepares for thefirst evaluation of the test

expression

The body of the loop iterates wheneverthe test expression evaluates to true

Espressione logica che determina se sono state eseguite l'azione e l'aggiornamento

L'inizializzazione prepara il programma per il primo calcolo

dell'espressione di prova

L'aggiornamento viene svolto dopo l'esecuzione del corpo

del ciclo

Il corpo del ciclo itera ogni volta che l'espressione di prova dà come

risultato true

Page 47: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzione

for (int i = 0; i < 3; ++i) {System.out.println("i is " + i);

}

System.out.println("all done");

i 0

Page 48: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzione

for (int i = 0; i < 3; ++i) {System.out.println("i is " + i);

}

System.out.println("all done");

i 0

Page 49: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzione

for (int i = 0; i < 3; ++i) {System.out.println("i is " + i);

}

System.out.println("all done");

i is 0

i 0

Page 50: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzione

for (int i = 0; i < 3; ++i) {System.out.println(“i is " + i);

}

System.out.println(“all done");

i is 0

i 0

Page 51: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzione

for (int i = 0; i < 3; ++i) {System.out.println("i is " + i);

}

System.out.println("all done");

i is 0

i 1

Page 52: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzione

for (int i = 0; i < 3; ++i) {System.out.println("i is " + i);

}

System.out.println("all done");

i is 0

i 1

Page 53: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzione

for (int i = 0; i < 3; ++i) {System.out.println("i is " + i);

}

System.out.println("all done");

i is 0i is 1

i 1

Page 54: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzione

for (int i = 0; i < 3; ++i) {System.out.println("i is " + i);

}

System.out.println("all done");

i is 0i is 1

i 1

Page 55: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzione

for (int i = 0; i < 3; ++i) {System.out.println("i is " + i);

}

System.out.println("all done");

i is 0i is 1

i 2

Page 56: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzione

for (int i = 0; i < 3; ++i) {System.out.println("i is " + i);

}

System.out.println("all done");

i is 0i is 1

i 2

Page 57: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzione

for (int i = 0; i < 3; ++i) {System.out.println("i is " + i);

}

System.out.println("all done");

i is 0i is 1i is 2

i 2

Page 58: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzione

for (int i = 0; i < 3; ++i) {System.out.println("i is " + i);

}

System.out.println("all done");

i is 0i is 1i is 2

i 2

Page 59: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzione

for (int i = 0; i < 3; ++i) {System.out.println("i is " + i);

}

System.out.println("all done");

i is 0i is 1i is 2

i 3

Page 60: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzione

for (int i = 0; i < 3; ++i) {System.out.println("i is " + i);

}

System.out.println("all done");

i is 0i is 1i is 2

i 3

Page 61: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Traccia dell'esecuzione

for (int i = 0; i < 3; ++i) {System.out.println("i is " + i);

}

System.out.println("all done");

i is 0i is 1i is 2all done

3

La variabile i è uscita dal suo ambitoè locale al ciclo

Page 62: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Cicli nidificati

int m = 2;int n = 3;for (int i = 0; i < n; ++i) {

System.out.println("i is " + i);for (int j = 0; j < m; ++j) {

System.out.println(" j is " + j);}

}

Page 63: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Cicli nidificati

int m = 2;int n = 3;for (int i = 0; i < n; ++i) {

System.out.println("i is " + i);for (int j = 0; j < m; ++j) {

System.out.println(" j is " + j);}

}i is 0 j is 0 j is 1i is 1 j is 0 j is 1i is 2 j is 0 j is 1

Page 64: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Lettura di un file Nozioni di base

BufferedReader is an input streamthat uses a buffer to store character

inputs for efficiency purposes

BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));

System.in is an InputStream variable.InputStream is the superclass of

J ava's input streams

InputStreamReader provides acharacter view of the bytes that

make up an input stream

BufferedReader è un flusso di input che, per ragioni di efficienza,

utilizza un buffer per memorizzare l'input di caratteri

System.in è una variabile InputStream. InputStream è la

superclasse dei flussi di input di Java

InputStreamReader offre una vistain caratteri dei byte che compongono

il flusso di input

Page 65: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Lettura di un file Classe FileReader

Sottoclasse di InputStreamReader che fornisce una vista di input di un file

Costruttore FileReader(String s) Apre il file con nome s in modo che i valori possano essere

estratti Il nome può essere un nome di percorso assoluto o

relativo alla cartella di lavoro corrente

Page 66: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Lettura di un fileBufferedReader stdin = new BufferedReader(

new InputStreamReader(System.in));

System.out.print("Filename: ");String filename = stdin.readLine();

BufferedReader fileIn = new BufferedReader(new FileReader( filename ) );

String currentLine = fileIn.readLine();

while (currentLine != null) {System.out.println(currentLine);

currentLine = fileIn.readLine();}

fileIn.close();

Page 67: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Lettura di un fileBufferedReader stdin = new BufferedReader(

new InputStreamReader(System.in));

System.out.print("Filename: ");String filename = stdin.readLine();

BufferedReader fileIn = new BufferedReader(new FileReader( filename ) );

String currentLine = fileIn.readLine();

while (currentLine != null) {System.out.println(currentLine);

currentLine = fileIn.readLine();}

fileIn.close(); Impostazione del flusso di input standard

Page 68: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Lettura di un fileBufferedReader stdin = new BufferedReader(

new InputStreamReader(System.in));

System.out.print("Filename: ");String filename = stdin.readLine();

BufferedReader fileIn = new BufferedReader(new FileReader( filename ) );

String currentLine = fileIn.readLine();

while (currentLine != null) {System.out.println(currentLine);

currentLine = fileIn.readLine();}

fileIn.close(); Determinazione del nome file

Page 69: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Lettura di un fileBufferedReader stdin = new BufferedReader(

new InputStreamReader(System.in));

System.out.print("Filename: ");String filename = stdin.readLine();

BufferedReader fileIn = new BufferedReader(new FileReader( filename ) );

String currentLine = fileIn.readLine();

while (currentLine != null) {System.out.println(currentLine);

currentLine = fileIn.readLine();}

fileIn.close(); Impostazione del flusso del file

Page 70: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Lettura di un fileBufferedReader stdin = new BufferedReader(

new InputStreamReader(System.in));

System.out.print("Filename: ");String filename = stdin.readLine();

BufferedReader fileIn = new BufferedReader(new FileReader( filename ) );

String currentLine = fileIn.readLine();

while (currentLine != null) {System.out.println(currentLine);

currentLine = fileIn.readLine();}

fileIn.close(); Elabora le righe una ad una

Page 71: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Lettura di un fileBufferedReader stdin = new BufferedReader(

new InputStreamReader(System.in));

System.out.print("Filename: ");String filename = stdin.readLine();

BufferedReader fileIn = new BufferedReader(new FileReader( filename ) );

String currentLine = fileIn.readLine();

while (currentLine != null) {System.out.println(currentLine);

currentLine = fileIn.readLine();}

fileIn.close(); Ottiene la prima riga

Page 72: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Lettura di un fileBufferedReader stdin = new BufferedReader(

new InputStreamReader(System.in));

System.out.print("Filename: ");String filename = stdin.readLine();

BufferedReader fileIn = new BufferedReader(new FileReader( filename ) );

String currentLine = fileIn.readLine();

while (currentLine != null) {System.out.println(currentLine);

currentLine = fileIn.readLine();}

fileIn.close(); Assicura la presenza di una riga da elaborare

Page 73: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Lettura di un fileBufferedReader stdin = new BufferedReader(

new InputStreamReader(System.in));

System.out.print("Filename: ");String filename = stdin.readLine();

BufferedReader fileIn = new BufferedReader(new FileReader( filename ) );

String currentLine = fileIn.readLine();

while (currentLine != null) {System.out.println(currentLine);

currentLine = fileIn.readLine();}

fileIn.close(); Visualizza la riga corrente

Page 74: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Lettura di un fileBufferedReader stdin = new BufferedReader(

new InputStreamReader(System.in));

System.out.print("Filename: ");String filename = stdin.readLine();

BufferedReader fileIn = new BufferedReader(new FileReader( filename ) );

String currentLine = fileIn.readLine();

while (currentLine != null) {System.out.println(currentLine);

currentLine = fileIn.readLine();}

fileIn.close(); Ottiene la riga successiva

Page 75: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Lettura di un fileBufferedReader stdin = new BufferedReader(

new InputStreamReader(System.in));

System.out.print("Filename: ");String filename = stdin.readLine();

BufferedReader fileIn = new BufferedReader(new FileReader( filename ) );

String currentLine = fileIn.readLine();

while (currentLine != null) {System.out.println(currentLine);

currentLine = fileIn.readLine();}

fileIn.close(); Assicura la presenza di una riga da elaborareAltrimenti il ciclo è terminato

Page 76: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Lettura di un fileBufferedReader stdin = new BufferedReader(

new InputStreamReader(System.in));

System.out.print("Filename: ");String filename = stdin.readLine();

BufferedReader fileIn = new BufferedReader(new FileReader( filename ) );

String currentLine = fileIn.readLine();

while (currentLine != null) {System.out.println(currentLine);

currentLine = fileIn.readLine();}

fileIn.close(); Chiude il flusso del file

Page 77: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

L'istruzione do-while Sintassi

do Azione while (Espressione)

Semantica Esegui Azione Se Espressione è true

allora esegui Azione Ripeti il processo fino a

quando Espressione restituisce false

Azione è una singola istruzione o un gruppo di istruzioni tra parentesi graffe

azione

true

false

Espressione

Page 78: Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies

Java – Guida alla programmazione - James Cohoon, Jack Davidson

Copyright © 2004 - The McGraw-Hill Companies srl

Estrazione delle cifre Considerare

System.out.print("Enter a positive number: ");int n = Integer.parseInt(stdin.readLine());do { int digit = number % 10; System.out.println(digit); number = number / 10;} while (number != 0);

Comportamento di esempioEnter a positive number: 11291129