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