Programmazione ad Oggetti - ICAR-CNR

Programmazione ad Oggetti
Java - IO
Corso di Programmazione ad Oggetti
Ing. Antonio Coronato
Seconda Università di Napoli
ICAR - CNR
Agenda
• Operazioni di IO da tastiera
– Oggetti System per le operazioni di output
– Oggetti per le operazioni di input da console
Corso di Programmazione ad Oggetti
Ing. Antonio Coronato
Seconda Università di Napoli
ICAR - CNR
1
Un esempio
• Programma per il calcolo dell’indice BMI
(rapporto peso-altezza)
• BMI = Peso [Kg]/(Altezza [m] * Altezza [m])
Corso di Programmazione ad Oggetti
Ing. Antonio Coronato
Seconda Università di Napoli
ICAR - CNR
Strumenti di stampa a video
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
finestrarunning
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
2
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)
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
3
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 variabili/costanti
// imposta le caratteristiche della persona
// esegue il calcolo del BMI
// visualizza il risultato
}
}
Soluzione con parametri di ingresso
costanti
public static void main(String[] args) {
// imposta le caratteristiche della persona
double weight = 75.5; // peso della persona
double height = 1.8; // altezza della persona
// esegue il calcolo del BMI
double bmi = weight / (height * height);
// visualizza il risultato
System.out.println("A person with");
System.out.println(" weight " + weight + " Kg");
System.out.println(" height " + height + " metri");
System.out.println("has a BMI of " + bmi);
}
4
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
Supporto per programmi console
interattivi
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.
5
Accesso al flusso di input standard
Impostazione
BufferedReader stdin = new BufferedReader(
new InputStreamReader(System.in));
new BufferedReader(new InputStreamReader(System.in))
A newoperation
constructs anuovi
newobject.
Thevalue
of thedell'operazione
operation
Le operazioni
new costruiscono
oggetti.
Il valore
è
un riferimento
a un to
nuovo
oggetto.
particolare
operazione
new
is a reference
thenew
object. TQuesta
his newoperation
constructs
a
costruisce un oggetto BufferedReader da un oggetto new
BufferedR
eader object out of a newInputStreamReader object that
InputStreamReader, che è stato realizzato utilizzando l'oggetto che
was built using
theobject ilrepresenting
thestandard
input stream
rappresenta
flusso di input
standard.
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
imposta il flusso di input
ottiene le caratteristiche della persona
esegue il calcolo del BMI
visualizza il risultato
}
}
6
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);
}
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());
7
Altri strumenti di accesso al flusso di input
standard
Estrazione
int weight = Integer.parseInt(stdin.readLine());
float height = Float.parseFloat(stdin.readLine());
In generale i metodi parse ricevono un oggetto di tipo String
8