Fondamenti di Informatica 1
Prof. B.Buttarazzi
A.A. 2010/2011
Sommario
•
•
•
•
•
La classe String
Lettura da input di dati numerici (tipo int)
Stampa di dati numerici
Uno sguardo al codice
Esercizi
21/03/2011
2
Istruzione di lettura
InputStreamReader In = new InputStreamReader(System.in);
BufferedReader Tastiera = new BufferedReader(In);
String cognome,nome;
System.out.print("Immetti cognome: ");
cognome=Tastiera.readLine();
System.out.print("Immetti nome: ");
nome=Tastiera.readLine();
System.out.println("Sono "+cognome+" "+nome);
21/03/2011
3
Istruzione di lettura
Per le operazioni di lettura esiste System.in un oggetto analogo a System.out, che
gestisce il flusso dei dati da tastiera.
Ma per leggere i dati da input è un po’ più complicato in quanto è necessario prima di
tutto definire un oggetto (es. In) in grado di acquisire i dati digitati in input ed inoltre ,
creare un oggetto (es. Tastiera ) appartenente alla classe BufferedReader, che consente
tramite il metodo readLine() di leggere dallo standard input una riga alla volta.
21/03/2011
4
Istruzione di lettura
Per leggere le stringhe (sequenze di caratteri) abbiamo
imparato vari metodi (basati sull’uso della modalità
console e grafica)
String cognome,nome;
21/03/2011
5
Variabili
La variabile è un “contenitore” di dati allocati nella memoria
del calcolatore dove il programma in esecuzione memorizza i
vari valori prima di giungere al termine dell’esecuzione.
21/03/2011
6
Tipi di Dato
In Java esistono due categorie di tipi di dato:
• Tipi di dato primitivi
• Tipi di dato complessi (o classi predefinite)
inoltre, in Java il programmatore ha la possibilità di definire dei
nuovi tipi di dato.
• Tra i tipi di dato complessi finora abbiamo visto soltanto: String
• String sequenze di caratteri alfanumerici
21/03/2011
7
Tipi di Dato
I tipi di dato primitivi di Java sono:
• short numeri interi rappresentabili con 16 bit
• int numeri interi rappresentabili con 32 bit
• long numeri interi rappresentabili con 64 bit
• float numeri reali rappresentabili con 32 bit
• double numeri reali rappresentabili con 64 bit
• char caratteri alfanumerici (rappresentabili con 16 bit)
• boolean i valori di verità (i possibili valori sono true (vero) e
false (falso) ) rappresentabili con 1 bit
• I tipi di dato short, int, long, float e double sono detti tipi
numerici
21/03/2011
8
Dichiarazione di variabili di tipo stringa
String cognome,nome;
Identificatori di variabili
Classe
separatore
Termine istruzione
In questo modo, abbiamo definito 2 variabili tali che:
il nome è cognome e nome;
il tipo è String, ovvero queste variabili sono stringhe;
Il valore dipenderà dall’input.
21/03/2011
9
La creazione di un oggetto String può essere:
esplicita:
String s= new String(“parola”);
implicita:
String s = “parola”;
21/03/2011
10
21/03/2011
11
21/03/2011
12
21/03/2011
13
21/03/2011
14
21/03/2011
15
21/03/2011
16
21/03/2011
17
Metodi principali della classe String
In riferimento a: String s = “parola”
length(): ritorna la lunghezza della stringa
int len = s.length(); // len == 6
charAt(int i): ritorna il carattere in posizione i-esima
char c=s.charAt(0) // c ==‘p’
indexOf(char c): ritorna l’indice della prima
occorrenza del carattere indicato
int i=s.indexOf(‘o’) // i == 3
lastIndexOf(char c): come sopra ma per l’ultima
occorrenza di char
substring(int da, int a): ritorna una sottostringa
String
sub = s.substring(2,4) // sub==“ro”
21/03/2011
18
Istruzione di lettura di dati
numerici
..per leggere una stringa in modalità standard
InputStreamReader In = new InputStreamReader(System.in);
BufferedReader Tastiera = new BufferedReader(In);
String numero;
System.out.print("Immettere un numero : ");
numero=Tastiera.readLine();
System.out.println("numero inserito: " + numero);
21/03/2011
19
Istruzione di lettura
..per leggere un dato numerico in modalità standard
InputStreamReader In = new InputStreamReader(System.in);
BufferedReader Tastiera = new BufferedReader(In);
int numero;
System.out.print("Immettere un numero : ");
numero=Integer.parseInt(Tastiera.readLine());
System.out.println("numero inserito: " + numero);
21/03/2011
20
Istruzione di lettura
In questo modo, abbiamo definito una
..per leggere un dato numerico
in modalità
standard
variabile tale
che:
il suo nome è numero;
il suo tipo è int, ovvero questa variabile
InputStreamReader In = new
InputStreamReader(System.in);
memorizzerà
un numero intero;
BufferedReader Tastiera dopo
= newche
BufferedReader(In);
la riga di codice int numero; verrà
viene riservato uno spazio di memoria per la
int numero; variabile numero esattamente di dimensione
sufficiente per contenere un numero intero
(32 bit)
System.out.print("Immettere
un numero : ");
il suo valore dipenderà dall’input.
numero=Integer.parseInt(Tastiera.readLine());
System.out.println("numero inserito: " + numero);
21/03/2011
21
21/03/2011
22
21/03/2011
23
21/03/2011
24
Dichiarazione di variabili di tipo int
int numero;
Tipo intero
Identificatore di variabile
Termine istruzione
21/03/2011
25
Dichiarazione di variabili di tipo int
int numero=0;
Tipo intero
21/03/2011
Identificatore di variabile con inizializzazione
26
Istruzione di lettura
int numero=0;
System.out.print("Immettere un numero : ");
numero=Integer.parseInt(Tastiera.readLine());
System.out.println("numero inserito: " + numero);
Classe
wrapper
21/03/2011
Metodo che converte
una stringa in intero
27
21/03/2011
28
Lettura di un intero
Si legge una stringa
(con il metodo readLine applicato all’oggetto Tastiera )
Tastiera.readLine()
e la si converte in intero
(con il metodo parseInt applicato alla classe wrapper Integer )
Integer.parseInt
21/03/2011
29
InputStreamReader In = new InputStreamReader(System.in);
BufferedReader Tastiera = new BufferedReader(In);
int numero=0;
Inizializzazione variabile
System.out.print("Immettere un numero : ");
numero=Integer.parseInt(Tastiera.readLine());
System.out.println("numero inserito: " + numero);
21/03/2011
30
…..andiamo a editare il programma
int numero=0;
System.out.print("Immettere un numero : ");
numero=Integer.parseInt(Tastiera.readLine());
System.out.println("numero inserito: " + numero);
21/03/2011
31
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class LeggiNumero {
/**
* @param args
* @throws IOException
* @throws NumberFormatException
*/
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
InputStreamReader In = new InputStreamReader(System.in);
BufferedReader Tastiera = new BufferedReader(In);
int numero;
System.out.print("Immettere un numero: ");
numero=Integer.parseInt(Tastiera.readLine());
System.out.println("numero inserito: " + numero);
21/03/2011
}
32
21/03/2011
33
ESERCIZIO
Realizzare un programma in Java che legge i valori numerici della base e
dell’altezza di un rettangolo e stampa il valore dell’area sia in modalità
standard sia in modalità grafica
21/03/2011
34
ESERCIZIO
Realizzare un programma in Java che legge i valori numerici della base e
dell’altezza di un rettangolo e stampa il valore dell’area sia in modalità
standard sia in modalità grafica
int base,altezza;
System.out.print("Immettere base: ");
base=Integer.parseInt(Tastiera.readLine());
System.out.print("Immettere altezza: ");
altezza=Integer.parseInt(Tastiera.readLine());
System.out.println(“l’area e’" + base*altezza);
21/03/2011
35
ESERCIZIO
Realizzare un programma in Java che legge i valori numerici della base e
dell’altezza di un rettangolo e stampa il valore dell’area sia in modalità
standard sia in modalità grafica
int base,altezza;
System.out.print("Immettere base: ");
base=Integer.parseInt(Tastiera.readLine());
System.out.print("Immettere altezza: ");
altezza=Integer.parseInt(Tastiera.readLine());
System.out.println(“l’area e’" + base*altezza);
21/03/2011
36
ESERCIZIO
Realizzare un programma in Java che legge i valori numerici della base e
dell’altezza di un rettangolo e stampa il valore dell’area sia in modalità
standard sia in modalità grafica
int base,altezza;
System.out.print("Immettere base: ");
base=Integer.parseInt(Tastiera.readLine());
System.out.print("Immettere altezza: ");
altezza=Integer.parseInt(Tastiera.readLine());
System.out.println(“l’area e’" + base*altezza);
21/03/2011
37
ESERCIZIO 1
Realizzare un programma in Java che
letti da INPUT giorno, mese e anno
Es.
Inserisci il giorno: 15
Inserisci il mese: 03
Inserisci l’anno: 2010
restituisca il seguente output:
La data odierna `e: 15/03/2010
21/03/2011
38
ESERCIZIO 2
Realizzare un programma in Java che
letta da INPUT una misura di temperature in gradi Celsius la converta in
Fahrenheit e viceversa.
°F = (°C × 1,8) + 32
°C = (°F − 32) / 1,8
21/03/2011
39
ESERCIZIO 3
Realizzare un programma in Java che
letta da INPUT una misura di distanza in Km la converta in miglia e viceversa.
1 km = 0,6213712 miglia
1 miglio = 1,609 km
21/03/2011
40
Dichiarazione di variabili di tipo float
float numero=0;
Tipo reale
21/03/2011
Identificatore di variabile con inizializzazione
41
Istruzione di lettura
float numero=0;
System.out.print("Immettere un numero : ");
numero=Float.parseFloat(Tastiera.readLine());
System.out.println("numero inserito: " + numero);
Classe
wrapper
21/03/2011
Metodo che converte
una stringa in intero
42
Istruzione di lettura
Data una stringa s, Java mette a disposizione le seguenti primitive per
trasformare (ove possibile) s in un elemento di un altro tipo:
Integer.parseInt(s) //trasforma s in un elemento di tipo int
Double.parseDouble(s) //trasforma s in un elemento di tipo double
Float.parseFloat(s) //trasforma s in un elemento di tipo float
Boolean.parseBoolean(s) //trasforma s in un elemento di tipo boolean
...
(ne esistono molti altri, ma in questo corso utilizzeremo soltanto questi)
21/03/2011
43