La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies."— Transcript della presentazione:

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

2 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

3 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

4 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

5 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 esecuzione Enter positive numbers one per line. Indicate end of list with a negative number Average 2.1

6 public class NumberAverage { // main(): punto di ingresso per l'applicazione public 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 uno while (value >= 0) { // aggiunge il valore al totale // elaborato un altro valore // prepara l'iterazione successiva - ottiene il valore successivo } // visualizza il risultato if (valuesProcessed > 0) // calcola e visualizza la media else // indica che non esistono medie da visualizzare }

7 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"); }

8 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Sintassi e semantica di while 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.

9 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Semantica di while per il problema della media 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

10 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Semantica di while 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

11 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia dell'esecuzione 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"); } Si supponga che l'input contenga:

12 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia dell'esecuzione 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"); } Si supponga che l'input contenga: valuesProcessed

13 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia dell'esecuzione 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"); } valueSum Si supponga che l'input contenga: valuesProcessed 0

14 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia 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"); } valueSum value Si supponga che l'input contenga: valuesProcessed 0 4.5

15 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia 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"); } valueSum value Si supponga che l'input contenga: valuesProcessed 0 4.5

16 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia 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"); } valueSum value Si supponga che l'input contenga: valuesProcessed 0 4.5

17 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia 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"); } valueSum value Si supponga che l'input contenga: valuesProcessed 4.5 1

18 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia 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"); } valueSum value Si supponga che l'input contenga: valuesProcessed

19 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia 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"); } valueSum value Si supponga che l'input contenga: valuesProcessed

20 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia 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"); } valueSum value Si supponga che l'input contenga: valuesProcessed

21 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia 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"); } valueSum value Si supponga che l'input contenga: valuesProcessed

22 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia 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"); } valueSum value Si supponga che l'input contenga: valuesProcessed

23 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia 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"); } valueSum value Si supponga che l'input contenga: valuesProcessed

24 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia 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"); } valueSum value Si supponga che l'input contenga: valuesProcessed

25 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia 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"); } valueSum value Si supponga che l'input contenga: valuesProcessed

26 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia 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"); } valueSum value Si supponga che l'input contenga: valuesProcessed

27 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia 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"); } valueSum value Si supponga che l'input contenga: valuesProcessed 6.3

28 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia 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"); } valueSum value Si supponga che l'input contenga: valuesProcessed 6.3

29 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia 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"); } valueSum value Si supponga che l'input contenga: valuesProcessed 6.3 average 2.1

30 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia 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"); } valueSum value Si supponga che l'input contenga: valuesProcessed 6.3 average 2.1

31 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Conversione del testo in minuscole public 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); }

32 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Esempio di esecuzione Si è premuto CTRL+Z, la sequenza di escape di Windows per indicare la fine del file

33 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia del programma public 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); }

34 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia del programma public 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); }

35 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia del programma public 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); }

36 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia del programma public 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); }

37 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Traccia del programma 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

38 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Conversione del testo in minuscole public 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); }

39 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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?

40 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl L'istruzione for

41 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl L'istruzione for L'inizializzazione viene effettuata solo una volta, appena prima del primo calcolo dell'espressione di prova

42 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl L'istruzione for 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

43 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl L'istruzione for 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

44 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl L'istruzione for 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

45 Calcolato una volta all’inizio dell’esecuzione dell’istruzione for L’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

46 Sintassi dell'istruzione for 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

47 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

48 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

49 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

50 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

51 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

52 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

53 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 is 1 i 1

54 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 is 1 i 1

55 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 is 1 i 2

56 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 is 1 i 2

57 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 is 1 i is 2 i 2

58 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 is 1 i is 2 i 2

59 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 is 1 i is 2 i 3

60 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 is 1 i is 2 i 3

61 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 is 1 i is 2 all done 3 La variabile i è uscita dal suo ambito è locale al ciclo

62 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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); }

63 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 1 i is 1 j is 0 j is 1 i is 2 j is 0 j is 1

64 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Lettura di un file  Nozioni di base 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 vista in caratteri dei byte che compongono il flusso di input

65 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

66 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Lettura di un file BufferedReader 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();

67 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Lettura di un file BufferedReader 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

68 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Lettura di un file BufferedReader 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

69 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Lettura di un file BufferedReader 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

70 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Lettura di un file BufferedReader 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

71 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Lettura di un file BufferedReader 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

72 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Lettura di un file BufferedReader 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

73 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Lettura di un file BufferedReader 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

74 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Lettura di un file BufferedReader 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

75 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Lettura di un file BufferedReader 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 Altrimenti il ciclo è terminato

76 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl Lettura di un file BufferedReader 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

77 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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

78 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 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 esempio Enter a positive number:


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

Presentazioni simili


Annunci Google