Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl
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
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
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
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
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 }
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"); }
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.
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
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
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:
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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); }
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
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); }
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); }
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); }
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); }
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
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); }
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?
Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies srl L'istruzione for
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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); }
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
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
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
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();
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
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
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
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
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
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
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
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
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
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
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
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: