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