Capitolo 2 Nozioni fondamentali su Java Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004- The McGraw-Hill Companies srl Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Attività Visualizzare la previsione I think there is a world market for maybe five computers. Thomas Watson, IBM, 1943. Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Output dell'esempio Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl DisplayForecast.java // Autori: J. P. Cohoon e J. W. Davidson // Scopo: visualizzare una citazione nella finestra della console public class DisplayForecast // metodo main(): punto di ingresso per l'applicazione public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } } Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl DisplayForecast.java // Autori: J. P. Cohoon e J. W. Davidson // Scopo: visualizzare una citazione nella finestra della console public class DisplayForecast // metodo main(): punto di ingresso per l'applicazione public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } } Tre istruzioni costituiscono l'azione del metodo main() Il metodo main() è parte della classe DisplayForecast Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl DisplayForecast.java // Autori: J. P. Cohoon e J. W. Davidson // Scopo: visualizzare una citazione nella finestra della console public class DisplayForecast // metodo main(): punto di ingresso per l'applicazione public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } } Un metodo è un frammento di codice denominato che esegue qualche azione o implementa un comportamento Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl DisplayForecast.java // Autori: J. P. Cohoon e J. W. Davidson // Scopo: visualizzare una citazione nella finestra della console public class DisplayForecast // metodo main(): punto di ingresso per l'applicazione public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } } Un programma applicativo è necessario per disporre di un metodo public static void chiamato main() Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl DisplayForecast.java // Autori: J. P. Cohoon e J. W. Davidson // Scopo: visualizzare una citazione nella finestra della console public class DisplayForecast // metodo main(): punto di ingresso per l'applicazione public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } } public, static e void sono parole chiave. Non possono essere usate come nomi public indica che il metodo è condivisibile Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl DisplayForecast.java // Autori: J. P. Cohoon e J. W. Davidson // Scopo: visualizzare una citazione nella finestra della console public class DisplayForecast // metodo main(): punto di ingresso per l'applicazione public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } } Parleremo di static e void in seguito Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl DisplayForecast.java // Autori: J. P. Cohoon e J. W. Davidson // Scopo: visualizzare una citazione nella finestra della console public class DisplayForecast // metodo main(): punto di ingresso per l'applicazione public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } } Java consente di costruire un'istruzione su più righe di testo I punti e virgola delimitano un'istruzione dalla successiva Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl DisplayForecast.java // Autori: J. P. Cohoon e J. W. Davidson // Scopo: visualizzare una citazione nella finestra della console public class DisplayForecast // metodo main(): punto di ingresso per l'applicazione public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } } Una classe definisce un tipo di oggetto. Un oggetto può disporre di metodi e attributi La parola chiave class indica che segue una definizione di classe Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl DisplayForecast.java // Autori: J. P. Cohoon e J. W. Davidson // Scopo: visualizzare una citazione nella finestra della console public class DisplayForecast // metodo main(): punto di ingresso per l'applicazione public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } } Una classe, come un metodo, deve avere un nome Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl DisplayForecast.java // Autori: J. P. Cohoon e J. W. Davidson // Scopo: visualizzare una citazione nella finestra della console public class DisplayForecast // metodo main(): punto di ingresso per l'applicazione public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } } I programmi vengono letti dalle persone, quindi è importante garantire che siano leggibili. Usare spazi vuoti, commenti e rientri per facilitare la comprensione Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl DisplayForecast.java // Autori: J. P. Cohoon e J. W. Davidson // Scopo: visualizzare una citazione nella finestra della console Spazio vuoto public class DisplayForecast // metodo main(): punto di ingresso per l'applicazione public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } } Gli spazi vuoti separano gli elementi del programma Gli spazi vuoti tra gli elementi del programma sono ignorati da Java Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl DisplayForecast.java // Autori: J. P. Cohoon e J. W. Davidson // Scopo: visualizzare una citazione nella finestra della console Tre commenti public class DisplayForecast // metodo main(): punto di ingresso per l'applicazione public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } } // indica che il resto della riga è un commento I commenti sono usati per documentare gli autori, lo scopo e gli elementi del programma Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Rientri // Autori: J. P. Cohoon e J. W. Davidson // Scopo: visualizzare una citazione nella finestra della console Il metodo main() è parte di DisplayForecast public class DisplayForecast // metodo main(): punto di ingresso per l'applicazione public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); Le istruzioni sono } } I rientri indicano i componenti secondari parte del metodo main() Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Metodo main() public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } La classe System fornisce oggetti che stampano e leggono valori La variabile di sistema out fa riferimento all'oggetto di stampa standard È conosciuto come flusso di output standard La variabile out fornisce l'accesso ai metodi di stampa print(): visualizza un valore println(): visualizza un valore e sposta il cursore nella riga successiva Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl System.out La variabile System.out dà accesso a un flusso di output di tipo PrintStream L’attributo per la destinazione della stampa per l’oggetto PrintStream è la finestra della console I comportamenti dell’oggetto PrintStream offrono una vista di alto livello sul processo di stampa Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Selezione The period t hat we want t o Il punto indicaindicat che siesintende Il punto The periodindica indicatche es tsi hatintende we wantselezionare t o select an selezionare select an individual class member out un singolo membro di of out un singolo membro della classe System individual class member of Syst em System . out . print outout of della Syst em is anSystem out put IlMember membro classe st ream object aut omat ically è un oggetto flusso di output automaticamente associato la associat ed wit h t he console con window finestra running della console sullaion quale si t he applicat Class Syst em is defined esegue l’applicazione La classe System è in definita nella t he st andard distribuzione package java.lang standard di java.lang ( "string" ) di caratteri letterali LitStringa eral charact er st ring t hat is che il parametro t he contiene paramet er t o print (). per print() Met hod member of di outout. . TheL’esecuzione execut ion of del member print () Membro metodo membro print() che il suo venga visualizzato nel causes fa it ssìparamet er t parametro o be displayed t o t he out put st ream flusso di output Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Metodo main() public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } I metodi print() e println() richiedono entrambi un parametro stringa Il parametro specifica il valore da usare nell'invocazione Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Metodo main() public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } L'istruzione print() avvia l'output del programma I think there is a world market for Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Metodo main() public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } La prima istruzione println() completa la prima riga di output I think there is a world market for maybe five computers Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Metodo main() public static void main(String[] args) System.out.print("I think there is a world market for"); System.out.println(" maybe five computers."); System.out.println(" Thomas Watson, IBM, 1943."); } La seconda istruzione println() avvia e completa la seconda riga di output I think there is a world market for maybe five computers Thomas Watson, IBM, 1943 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Esperimento public static void main(String[] args) System.out.print("The real problem is not whether "); System.out.print("machines think but whether people "); System.out.println("do"); System.out.println(" B.F. Skinner (paraphrased)"); } Qual è l'output di questo metodo main()? Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Calcolo I programmatori spesso scrivono piccoli programmi per calcolare valori utili Esempio - Indice di massa corporea (BMI) Misura della forma fisica Rapporto tra il peso della persona e il quadrato della sua altezza Il peso è in chilogrammi, l'altezza in metri La persona in questione è alta 4,5 piedi e pesa 75,5 libbre Conversioni metriche Chilogrammi per pinta 0,454 Metri per piede 0,3046 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Elementi di programma comuni Tipo Set di valori e operatori che possono manipolare e creare valori dal set I tipi primitivi supportano valori numerici, logici e caratteri double e float Valori con decimali byte, short, int, long Interi char Caratteri (considerati numerici) boolean Valori logici Operatori di base + addizione * moltiplicazione - sottrazione / divisione Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Elementi di programma comuni Costante Nome simbolico per una posizione di memoria il cui valore non cambia KILOGRAMS_PER_POUND Variabile Nome simbolico per una posizione di memoria il cui valore può cambiare weightInPounds Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Struttura del programma per BMI.java // Scopo: calcolare BMI per peso e altezza dati public class BMI // main(): punto di ingresso per l'applicazione public static void main(String[] args) // definisce le costanti // imposta le caratteristiche della persona // converte negli equivalenti metrici // esegue il calcolo del BMI // visualizza il risultato } } public static void main(String[] args) // definisce le costanti final double KILOGRAMS_PER_POUND = 0.454; final double METERS_PER_FOOT = 0.3046; // imposta le caratteristiche della persona double weightInPounds = 75.5; // peso della persona double heightInFeet = 4.5; // altezza della persona // converte negli equivalenti metrici double metricWeight = weightInPounds * KILOGRAMS_PER_POUND; double metricHeight = heightInFeet * METERS_PER_FOOT; // esegue il calcolo del BMI double bmi = metricWeight / (metricHeight * metricHeight); // visualizza il risultato System.out.println("A person with"); System.out.println(" weight " + weightInPounds + " lbs"); System.out.println(" height " + heightInFeet + " feet"); System.out.println("has a BMI of " + Math.round(bmi)); } public static void main(String[] args) // definisce le costanti final double KILOGRAMS_PER_POUND = 0.454; final double METERS_PER_FOOT = 0.3046; KILOGRAMS_PER_FOOT 0.4545 // imposta le caratteristiche della persona double weightInPounds = 75.5; // peso della persona double heightInFeet = 4.5; // altezza della persona // converte negli equivalenti metrici double metricWeight = weightInPounds * KILOGRAMS_PER_POUND; double metricHeight = heightInFeet * METERS_PER_FOOT; // esegue il calcolo del BMI double bmi = metricWeight / (metricHeight * metricHeight); // visualizza il risultato System.out.println("A person with"); System.out.println(" weight " + weightInPounds + " lbs"); System.out.println(" height " + heightInFeet + " feet"); System.out.println("has a BMI of " + Math.round(bmi)); } public static void main(String[] args) // definisce le costanti final double KILOGRAMS_PER_POUND = 0.454; final double METERS_PER_FOOT = 0.3046; METERS_PER_FOOT 0.3046 // imposta le caratteristiche della persona double weightInPounds = 75.5; // peso della persona double heightInFeet = 4.5; // altezza della persona // converte negli equivalenti metrici double metricWeight = weightInPounds * KILOGRAMS_PER_POUND; double metricHeight = heightInFeet * METERS_PER_FOOT; // esegue il calcolo del BMI double bmi = metricWeight / (metricHeight * metricHeight); // visualizza il risultato System.out.println("A person with"); System.out.println(" weight " + weightInPounds + " lbs"); System.out.println(" height " + heightInFeet + " feet"); System.out.println("has a BMI of " + Math.round(bmi)); } public static void main(String[] args) // definisce le costanti final double KILOGRAMS_PER_POUND = 0.454; final double METERS_PER_FOOT = 0.3046; weightInPounds 75.5 // imposta le caratteristiche della persona double weightInPounds = 75.5; // peso della persona double heightInFeet = 4.5; // altezza della persona // converte negli equivalenti metrici double metricWeight = weightInPounds * KILOGRAMS_PER_POUND; double metricHeight = heightInFeet * METERS_PER_FOOT; // esegue il calcolo del BMI double bmi = metricWeight / (metricHeight * metricHeight); // visualizza il risultato System.out.println("A person with"); System.out.println(" weight " + weightInPounds + " lbs"); System.out.println(" height " + heightInFeet + " feet"); System.out.println("has a BMI of " + Math.round(bmi)); } public static void main(String[] args) // definisce le costanti final double KILOGRAMS_PER_POUND = 0.454; final double METERS_PER_FOOT = 0.3046; heightInFeet 4.5 // imposta le caratteristiche della persona double weightInPounds = 75.5; // peso della persona double heightInFeet = 4.5; // altezza della persona // converte negli equivalenti metrici double metricWeight = weightInPounds * KILOGRAMS_PER_POUND; double metricHeight = heightInFeet * METERS_PER_FOOT; // esegue il calcolo del BMI double bmi = metricWeight / (metricHeight * metricHeight); // visualizza il risultato System.out.println("A person with"); System.out.println(" weight " + weightInPounds + " lbs"); System.out.println(" height " + heightInFeet + " feet"); System.out.println("has a BMI of " + Math.round(bmi)); } public static void main(String[] args) // definisce le costanti final double KILOGRAMS_PER_POUND = 0.454; final double METERS_PER_FOOT = 0.3046; metricWeight 34.2770 // imposta le caratteristiche della persona double weightInPounds = 75.5; // peso della persona double heightInFeet = 4.5; // altezza della persona // converte negli equivalenti metrici double metricWeight = weightInPounds * KILOGRAMS_PER_POUND; double metricHeight = heightInFeet * METERS_PER_FOOT; // esegue il calcolo del BMI double bmi = metricWeight / (metricHeight * metricHeight); // visualizza il risultato System.out.println("A person with"); System.out.println(" weight " + weightInPounds + " lbs"); System.out.println(" height " + heightInFeet + " feet"); System.out.println("has a BMI of " + Math.round(bmi)); } public static void main(String[] args) // definisce le costanti final double KILOGRAMS_PER_POUND = 0.454; final double METERS_PER_FOOT = 0.3046; metricHeight 1.3706 // imposta le caratteristiche della persona double weightInPounds = 75.5; // peso della persona double heightInFeet = 4.5; // altezza della persona // converte negli equivalenti metrici double metricWeight = weightInPounds * KILOGRAMS_PER_POUND; double metricHeight = heightInFeet * METERS_PER_FOOT; // esegue il calcolo del BMI double bmi = metricWeight / (metricHeight * metricHeight); // visualizza il risultato System.out.println("A person with"); System.out.println(" weight " + weightInPounds + " lbs"); System.out.println(" height " + heightInFeet + " feet"); System.out.println("has a BMI of " + Math.round(bmi)); } public static void main(String[] args) // definisce le costanti final double KILOGRAMS_PER_POUND = 0.454; final double METERS_PER_FOOT = 0.3046; bmi 18.2439 // imposta le caratteristiche della persona double weightInPounds = 75.5; // peso della persona double heightInFeet = 4.5; // altezza della persona // converte negli equivalenti metrici double metricWeight = weightInPounds * KILOGRAMS_PER_POUND; double metricHeight = heightInFeet * METERS_PER_FOOT; // esegue il calcolo del BMI double bmi = metricWeight / (metricHeight * metricHeight); // visualizza il risultato System.out.println("A person with"); System.out.println(" weight " + weightInPounds + " lbs"); System.out.println(" height " + heightInFeet + " feet"); System.out.println("has a BMI of " + Math.round(bmi)); } public static void main(String[] args) // definisce le costanti final double KILOGRAMS_PER_POUND = 0.454; final double METERS_PER_FOOT = 0.3046; La valutazione dell'operatore dipende dai suoi operandi // imposta le caratteristiche della persona double weightInPounds = 75.5; // peso della persona double heightInFeet = 4.5; // altezza della persona // converte negli equivalenti metrici double metricWeight = weightInPounds * KILOGRAMS_PER_POUND; double metricHeight = heightInFeet * METERS_PER_FOOT; // esegue il calcolo del BMI double bmi = metricWeight / (metricHeight * metricHeight); // visualizza il risultato System.out.println("A person with"); System.out.println(" weight " + weightInPounds + " lbs"); System.out.println(" height " + heightInFeet + " feet"); System.out.println("has a BMI of " + Math.round(bmi)); } public static void main(String[] args) // definisce le costanti final double KILOGRAMS_PER_POUND = 0.454; final double METERS_PER_FOOT = 0.3046; Math.round(bmi) è 18 // imposta le caratteristiche della persona double weightInPounds = 75.5; // peso della persona double heightInFeet = 4.5; // altezza della persona // converte negli equivalenti metrici double metricWeight = weightInPounds * KILOGRAMS_PER_POUND; double metricHeight = heightInFeet * METERS_PER_FOOT; // esegue il calcolo del BMI double bmi = metricWeight / (metricHeight * metricHeight); // visualizza il risultato System.out.println("A person with"); System.out.println(" weight " + weightInPounds + " lbs"); System.out.println(" height " + heightInFeet + " feet"); System.out.println("has a BMI of " + Math.round(bmi)); } // Scopo: convertire una temperatura Celsius in Fahrenheit public class CelsiusToFahrenheit // main(): punto di ingresso per l'applicazione public static void main(String[] args) // imposta la temperatura Celsius in questione int celsius = 28; // converte nell'equivalente Fahrenheit int fahrenheit = 32 + ((9 * celsius) / 5); // visualizza il risultato System.out.println("Celsius temperature"); System.out.println(" " + celsius); System.out.println("equals Fahrenheit temperature"); System.out.println(" " + fahrenheit); } } // Scopo: dimostrare l'aritmetica dei caratteri public class LowerToUpper // main(): punto di ingresso per l'applicazione public static void main(String[] args) // imposta il carattere minuscolo desiderato char lowerCaseLetter = 'c'; // converte nell'equivalente maiuscolo char upperCaseLetter = 'A' + (lowerCaseLetter - 'a'); // visualizza il risultato System.out.println("Uppercase equivalent of"); System.out.println(" " + lowerCaseLetter); System.out.println("is"); System.out.println(" " + upperCaseLetter); } } Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Espressioni Qual è il valore usato per inizializzare l'espressione int expression = 4 + 2 * 5; Quale valore viene visualizzato System.out.println(5 / 2.0); Regole di Java in breve Ogni operatore ha un livello di precedenza e un'associatività Gli operatori con precedenza maggiore sono valutati per primi * e / hanno la precedenza rispetto a + e L'associatività indica come gestire i legami Quando vengono usati valori in virgola mobile, il risultato è in virgola mobile Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Domanda La seguente istruzione calcola la media delle variabili double a, b e c? Perché double average = a + b + c / 3.0; Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Programmi interattivi Programmi che interagiscono con i loro utenti attraverso istruzioni che eseguono input e output BMI.java Non interattivo: peso e altezza sono fissi Java – Guida alla programmazione - James Cohoon, Jack Davidson Supporto per programmi console interattivi Copyright © 2004 - The McGraw-Hill Companies srl Variabile System.in Associata al flusso di input standard: la tastiera Classe BufferedReader Supporta l'estrazione di una riga di input come stringa di caratteri BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); La variabile stdin dà accesso a un flusso di input di tipo BufferedReader. L'attributo di origine dell'input per questo oggetto BufferedReader è la tastiera. I comportamenti di un oggetto BufferedReader offrono una vista di inserimento di testo di alto livello. Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Accesso al flusso di input standard Impostazione BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); new BufferedReader(new InputStreamReader(System.in)) LeAoperazioni oggetti. Il valore dell'operazione new operatnew ion costruiscono const ruct s anuovi new object . The value of t he operat ionè un riferimento a un nuovo oggetto. Questa particolare operazione new is a costruisce reference tun o toggetto he new object . This newda operat ion const ruct s a BufferedReader un oggetto new BufferedReader objectcheoutè stato of a new Input Stutilizzando reamReader object che t hat InputStreamReader, realizzato l'oggetto flusso di ing input was built usingrappresenta t he object ilrepresent t hestandard. st andard input st ream Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Programma interattivo per BMI Struttura del programma // Scopo: calcolare BMI per peso e altezza // specificati dall'utente import java.io.*; public class BMICalculator // main(): punto di ingresso per l'applicazione public static void main(String[] args) throws IOException // // // // // // // } } definisce le costanti visualizza la legenda imposta il flusso di input ottiene le caratteristiche della persona converte negli equivalenti metrici esegue il calcolo del BMI visualizza il risultato public static void main(String[] args) throws IOException final double KILOGRAMS_PER_POUND = 0.454; final double METERS_PER_FOOT = 0.3046; System.out.println("BMI Calculator\n"); BufferedReader stdin = new BufferedReader( new InputStreamReader(System.in)); System.out.print("Enter weight (lbs): "); double weight = Double.parseDouble(stdin.readLine()); System.out.print("Enter height (feet): "); double height = Double.parseDouble(stdin.readLine()); double metricWeight = weight * KILOGRAMS_PER_POUND; double metricHeight = height * METERS_PER_FOOT; double bmi = metricWeight / (metricHeight * metricHeight); System.out.println("A person with"); System.out.println(" weight " + weight + " (lbs)"); System.out.println(" height " + height + " (feet)"); System.out.println("has a BMI of " + bmi); } Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Accesso al flusso di input standard Estrazione System.out.print("Enter weight (lbs): "); double weight = Double.parseDouble(stdin.readLine()); System.out.print("Enter height (feet): "); double height = Double.parseDouble(stdin.readLine()); Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Assegnazione di variabili primitiva Operatore di assegnazione = Consente l'aggiornamento di una posizione di memoria per una variabile target = Name dell'oggetto of previously Nome defined object definito in precedenza Considerare int j = 11; j = 1985; expression ; Expression t oda be Espressione elaborare evaluat ed j 11 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Assegnazione di variabili primitiva Operatore di assegnazione = Consente l'aggiornamento di una posizione di memoria per una variabile target = Name dell'oggetto of previously Nome defined object definito in precedenza Considerare int j = 11; j = 1985; expression ; Expression t oda be Espressione elaborare evaluat ed j 1985 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Assegnazione di variabili primitiva Considerare int a = 1; int aSquared = a * a; a = 5; aSquared = a * a; Considerare int i = 0; i = i + 1; Considerare int asaRating; asaRating = 400; a 1 aSquared 1 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Assegnazione di variabili primitiva Considerare int a = 1; int aSquared = a * a; a = 5; aSquared = a * a; Considerare int i = 0; i = i + 1; Considerare int asaRating; asaRating = 400; a 5 aSquared 1 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Assegnazione di variabili primitiva Considerare int a = 1; int aSquared = a * a; a = 5; aSquared = a * a; Considerare int i = 0; i = i + 1; Considerare int asaRating; asaRating = 400; a 5 aSquared 25 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Assegnazione di variabili primitiva Considerare int a = 1; int aSquared = a * a; a = 5; aSquared = a * a; Considerare int i = 0; i = i + 1; Considerare int asaRating; asaRating = 400; i 0 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Assegnazione di variabili primitiva Considerare int a = 1; int aSquared = a * a; a = 5; aSquared = a * a; Considerare int i = 0; i = i + 1; Considerare int asaRating; asaRating = 400; i 1 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Assegnazione di variabili primitiva Considerare int a = 1; int aSquared = a * a; a = 5; aSquared = a * a; Considerare int i = 0; i = i + 1; Considerare int asaRating; asaRating = 400; asaRating - Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Assegnazione di variabili primitiva Considerare int a = 1; int aSquared = a * a; a = 5; aSquared = a * a; Considerare int i = 0; i = i + 1; Considerare int asaRating; asaRating = 400; asaRating 400 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Assegnazione di variabili primitiva Considerare double x = 5.12; double y = 19.28; double rememberX = x; x = y; y = rememberX; x 5.12 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Assegnazione di variabili primitiva Considerare double x = 5.12; double y = 19.28; double rememberX = x; x = y; y = rememberX; x 5.12 y 19.28 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Assegnazione di variabili primitiva Considerare double x = 5.12; double y = 19.28; double rememberX = x; x = y; y = rememberX; x 5.12 y 19.28 rememberX 5.12 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Assegnazione di variabili primitiva Considerare double x = 5.12; double y = 19.28; double rememberX = x; x = y; y = rememberX; x 19.28 y 19.28 rememberX 5.12 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Assegnazione di variabili primitiva Considerare double x = 5.12; double y = 19.28; double rememberX = x; x = y; y = rememberX; x 19.28 y 5.12 rememberX 5.12 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Operatori di incremento e decremento ++ Incrementa una variabile numerica di 1 - Decrementa una variabile numerica di 1 Considerare int i = 4; ++i; System.out.println(i); System.out.print(++i); System.out.println(i++); System.out.println(i); Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Operatori di incremento e decremento ++ Incrementa una variabile numerica di 1 - Decrementa una variabile numerica di 1 Considerare int i = 4; // definizione ++i; System.out.println(i); System.out.print(++i); System.out.println(i++); System.out.println(i); i 4 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Operatori di incremento e decremento ++ Incrementa una variabile numerica di 1 - Decrementa una variabile numerica di 1 i Considerare int i = 4; ++i; // incremento System.out.println(i); System.out.print(++i); System.out.println(i++); System.out.println(i); 5 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Operatori di incremento e decremento ++ Incrementa una variabile numerica di 1 - Decrementa una variabile numerica di 1 i Considerare int i = 4; ++i; System.out.println(i); // visualizzazione System.out.print(++i); System.out.println(i++); System.out.println(i); 5 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Operatori di incremento e decremento ++ Incrementa una variabile numerica di 1 - Decrementa una variabile numerica di 1 i 6 Considerare int i = 4; ++i; System.out.println(i); System.out.println(i); // aggiorna e visualizza System.out.println(i++); System.out.println(i); Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Operatori di incremento e decremento ++ Incrementa una variabile numerica di 1 - Decrementa una variabile numerica di 1 Considerare int i = 4; ++i; System.out.println(i); System.out.print(++i); System.out.println(i); System.out.println(i); i 7 // visualizza e aggiorna Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Operatori di incremento e decremento ++ Incrementa una variabile numerica di 1 - Decrementa una variabile numerica di 1 i Considerare int i = 4; ++i; System.out.println(i); System.out.print(++i); System.out.println(i++); System.out.println(i); // visualizzazione 7 Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Sequenze di escape Java fornisce sequenze di escape per la stanza di caratteri speciali \b backspace \n newline (nuova riga) \t tab (tabulazione) \r carriage return (ritorno carrello) \\ backslash \" double quote (virgoletta doppia) \' single quote (virgoletta singola) Java – Guida alla programmazione - James Cohoon, Jack Davidson Copyright © 2004 - The McGraw-Hill Companies srl Sequenze di escape Che cosa producono in output queste istruzioni? System.out.println("Person\tHeight\tShoe size"); System.out.println("========================="); System.out.println("Hannah\t5‘1\"\t7"); System.out.println("Jenna\t5'10\"\t9"); System.out.println("JJ\t6'1\"\t14"); Output Person Height Shoe size ========================= Hannah 5'1" 7 Jenna 5'10" 9 JJ 6'1" 14