Tipi Fondamentali. C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo

Documenti analoghi
Capitolo 4. Tipi di dati fondamentali. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

Capitolo 4. Tipi di dati fondamentali

Capitolo 4. Tipi di dati fondamentali. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

Tipi di dati fondamentali

Tipi di dati fondamentali

Esercizio: la classe CashRegister

Programmazione ad oggetti

Tipi di dato F n o d n am ent en ali

Una classe Borsellino. Tipi numerici di base - Costanti. Esempio d uso. Classe Borsellino cont d. Primi passi per l implementazione di Purse

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi

Fondamenti di Informatica T-1

Operazioni numeriche - Input

Fondamenti di Informatica T-1. Introduzione al linguaggio Java Input/output, variabili, tipi

Programmazione in Java (I modulo)

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Classi 15/12/2010. Astrazione, astrazione astrazione. Astrazione, astrazione astrazione. Astrazione, astrazione astrazione

Laboratorio di Matematica e Informatica 1

Introduzione alla programmazione in C++

Uso di metodi statici. Walter Didimo

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 13. Tipi ed espressioni. Carla Limongelli Aprile Tipi ed espressioni 1

Tipi ed espressioni. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 5. Carla Limongelli Settembre 2007

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Input. Il tipo char Alcune modalità di acquisizione di input. Laboratorio di Programmazione - Luca Tesei

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

TIPI PRIMITIVI E CLASSI WRAPPER

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Introduzione a C# Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Numeri, espressioni, calcoli, caratteri, input

Programmare in C. Maurizio Palesi Salvatore Serrano. Valori. Operazioni. Un insieme di valori del tipo. Per operare su tali valori Tipi

Le basi del linguaggio Java

Università degli studi di Bergamo. Informatica II. Programmazione Object Oriented Tutorato. Lezione 1. Dott. Marco Guarnieri Dott. Eros Magri

Lezione 6 Introduzione al C++ Mauro Piccolo

Corso di Laurea Ingegneria Civile. Dispensa 13. Tipi ed espressioni. Carla Limongelli. Tipi ed espressioni 1

Tipo intero. Esempio. Tipo intero: operatori. Programma PortaMonete.java. Tipi base o primitivi

Introduzione alla programmazione in linguaggio C

Laboratorio di Programmazione Ottobre. Simone Zaccaria

Riassunto. I mattoni di base di un programma Java. Oggi. Un programma complicato. Oggi. Perché è complicato? Stefano Mizzaro 1.

Purse mypurse = new Purse(); mypurse.addnickels(3); mypurse.adddimes(1); mypurse.addquarters(2); double totalvalue = mypurse.

Tipi di dato semplici

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola.

Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi

Le basi del linguaggio Java

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Questi lucidi provengono dal capitolo 2 di:

Laboratorio di Informatica 4 Novembre 2005

Definizione di una classe

Informatica I. Ingegneria Medica. Prof. Diego Salamon

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

I tipi di dato primitivi

Introduzione alla Programmazione in C#

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Decomposizione per scelta

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Tipi di dato, Alessandra Giordani Lunedì 7 maggio 2011

Corso di Fondamenti di Programmazione canale E-O. Tipi di dato. Un esempio

Un oggetto per la lettura dalla tastiera

18 - Classi parzialmente definite: Classi Astratte e Interfacce

Espressioni. Operatori aritmetici e metodi della classe java.lang.math

Programmazione Java Struttura di una classe, Costruttore, Riferimento this

Introduzione Programmazione Java

4 - Tipi di dato primitivi

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1. Selezione Stringhe

Modulo 2: Strutture fondamentali della programmazione Java

Capitolo 5. Decisioni. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

Prima lezione di laboratorio. I mattoni di base di un programma Java. Comandi Unix. Riassunto. Oggi. Un programma complicato.

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Il primo programma C. Un programma utile. Compilazione & linking con il compilatore GNU. Introduzione alla programmazione in linguaggio C

Espressioni. Operatori aritmetici e metodi della classe java.lang.math

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

Concetto di Funzione e Procedura METODI in Java

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Java Native Interface Appunti

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Oggetti. Oggetti e classi. Utilizzo di classi. Classe

Metodi statici. Dichiarazione e chiamata di metodi statici

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 16 Tipi riferimento e stringhe. Carla Limongelli.

Progettazione di classi

Programmazione ad Oggetti. Java Parte II

Le variabili. Olga Scotti

Laboratorio di Programmazione. Programmini più complessi

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Prima lezione di laboratorio. I mattoni di base di un programma Java. Riassunto. Comandi Unix. Oggi. Blog & Group.

Introduzione alla Java Collections Framework

Uso di classi e oggetti. Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Esempio su strutture dati dinamiche: ArrayList

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

28/02/2014 Copyright V. Moriggia

Parcheggio.rtf 1/8 6 gennaio Prova di programmazione: parcheggio a pagamento

Il Linguaggio Java. Concetti e costrutti di base

Corso sul linguaggio Java

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

8 - Stringhe (e altre classi dalla Libreria Standard di Java)

Java SE 7. Strutture di programmazione (2)

Esonero di Informatica I. Ingegneria Medica

Progettare le Classi

Transcript:

Tipi Fondamentali C. Horstmann Fondamenti di programmazione e Java 2 3^ edizione Apogeo trad. Nicola Fanizzi corso di Programmazione, CdS: Informatica TPS Dip. di Informatica, Università degli studi di Bari 1

Obiettivi 2 Capire numeri interi e a virgola mobile Riconoscere i limiti dei tipi numerici Tener conto delle cause di overflow ed errori di arrotondamento Capire l'uso indicato delle costanti

Obiettivi 3 Scrivere espressioni aritmetiche in Java Usare il tipo String per definire e manipolare stringhe di caratteri Imparare a leggere l'input del programma ed a produrre un output formattato

Tipi Numerici 4 int: : interi, nessuna parte decimale 1, -4, 0 double: : numeri a virgola mobile (doppia precisione) 0.5, -3.11111, 4.3E24, 1E-14

Tipi Numerici 5 Un calcolo numerico va in overflow se il risultato ricade fuori dall'intervallo di valori del tipo numerico int n = 1000000; System.out.println(n * n); // stampa -727379968 Java: 8 tipi primitivi quattro tipi interi e due tipi reali in virgola mobile

Tipi Primitivi 6 Tipo Descrizione Intervallo Dimensioni int byte Interi 2,147,483,648... 2,147,483,647 4 byte singolo byte -128... +127 1 byte short intero corto 32768... 32767 2 byte long intero lungo 9,223,372,036,854,775,808 8 byte... +9,223,372,036,854,775,807

Tipi Primitivi 7 Tipo double Descrizione reali virgola mobile in doppia precisione Intervallo ±10 308, 15 cifre significative circa Dimensioni 8 byte float reali virgola mobile in singola precisione Intervallo ±10 38, 7 cifre significative circa 4 byte char caratteri nella codifica UNICODE 2 byte boolean valori logici true / false 1 byte

Tipi Floating-point 8 Gli errori di arrotondamento accadono quando non è possibile una conversione esatta tra numeri double f = 4.35; System.out.println(100 * f); // stampa 434.99999999999994 In Java è illegale assegnare una espressione floating-point ad una variabile intera double balance = 13.75; int dollars = balance; // Errore

Tipi Floating-point 9 Cast: : meccanismo usato per convertire un valore in un tipo diverso int dollars = (int) balance; // OK Il cast taglia la parte frazionaria Math.round: : converte un numero floating-point all'intero più vicino long rounded = Math.round(balance); // se balance è 13.75, allora // rounded è impostato a 14

Sintassi 4.1: Cast 10 (typename) expression Esempio: (int) (balance * 100) Esempio Scopo: Convertire un'espressione in un tipo differente

Costanti: final 11 Una variabile final rappresenta una costante Una volta che il suo valore è stato impostato esso non può essere cambiato Le costanti dotate di nome rendono il programma più facile da leggere e modificare Convenzione: si usano per le costanti identificatori fatti da sole lettere maiuscole final double QUARTER_VALUE = 0.25; final double DIME_VALUE = 0.1; final double NICKEL_VALUE = 0.05; final double PENNY_VALUE = 0.01; payment = dollars + quarters * QUARTER_VALUE + dimes * DIME_VALUE + nickels * NICKEL_VALUE + pennies * PENNY_VALUE;

Costanti static final 12 Se occorrono valori costanti in molti metodi, meglio dichiararle insieme ai campi della classe e segnalarle come static e final Dichiarare public le costanti static final abilita l'accesso da parte di altre classi public class Math {... public static final double E = 2.7182818284590452354; public static final double PI = 3.14159265358979323846; } double circumference = Math.PI * diameter;

Sintassi 4.2: 13 In un metodo: Definizione di Costanti final typename variablename = expression ; In una classe: accessspecifier static final typename variablename = expression ; Esempio final double NICKEL_VALUE = 0.05; public static final double LITERS_PER_GALLON = 3.785; Scopo: : definire una costante in un metodo o classe

CashRegister.java 14 01: /** 02: Registratore di cassa che cacola i totali della spesa e il resto dovuto 03: */ 04: public class CashRegister 05: { 06: /** 07: Costruisce un registratore senza denaro. 08: */ 09: public CashRegister() 10: { 11: purchase = 0; 12: payment = 0; 13: } 14: 15: /** 16: Registra il prezzo d'acquisto di un pezzo. 17: @param amount il prezzo del pezzo 18: */ 19: public void recordpurchase(double amount) 20: { 21: purchase = purchase + amount; 22: }

CashRegister.java 15 23: 24: /** 25: Inserisce il pagamento ricevuto dal cliente. 26: @param dollars numero di dollari 27: @param quarters numero di quarti di dollaro 28: @param dimes numero di decimi di dollaro 29: @param nickels numero di nichelini (5 cents) 30: @param pennies numero di centesimi 31: */ 32: public void enterpayment(int dollars, int quarters, 33: int dimes, int nickels, int pennies) 34: { 35: payment = dollars + quarters * QUARTER_VALUE + dimes * DIME_VALUE 36: + nickels * NICKEL_VALUE + pennies * PENNY_VALUE; 37: } 38:

CashRegister.java 16 39: /** 40: Calcola il resto dovuto e resetta la macchina per il prossimo cliente. 41: @return il resto dovuto al cliente 42: */ 43: public double givechange() 44: { 45: double change = payment - purchase; 46: purchase = 0; 47: payment = 0; 48: return change; 49: } 50: 51: public static final double QUARTER_VALUE = 0.25; 52: public static final double DIME_VALUE = 0.1; 53: public static final double NICKEL_VALUE = 0.05; 54: public static final double PENNY_VALUE = 0.01;55: 56: private double purchase; 57: private double payment; 58: }

Collaudo di CashRegister.java 17 01: /** 02: This class tests the CashRegister class. 03: */ 04: public class CashRegisterTester 05: { 06: public static void main(string[] args) 07: { 08: CashRegister register = new CashRegister(); 09: 10: register.recordpurchase(0.75); 11: register.recordpurchase(1.50); 12: register.enterpayment(2, 0, 5, 0, 0); 13: System.out.print("Change="); 14: System.out.println(register.giveChange()); 15:

Collaudo di CashRegister.java 18 16: register.recordpurchase(2.25); 17: register.recordpurchase(19.25); 18: register.enterpayment(23, 2, 0, 0, 0); 19: System.out.print("Change="); 20: System.out.println(register.giveChange()); 21: } 22: } Output Change=0.25 Change=2.0

Assegnazione 19 Incremento e Decremento L'assegnazione si differenzia dall'uguaglianza matematica: items = items + 1; items++ equivale a items = items + 1 items-- sottrae 1 da items

Assegnazione 20 Incremento e Decremento

Operazioni Aritmetiche 21 / è l' operatore di divisione Se entrambi gli argomenti sono interi allora il risultato è un intero. Il resto viene tralasciato 7.0/4 dà 1.75 7/4 dà 1 Si ottiene il resto con l'operatore % (modulo) 7%4 dà 3

Operazioni Aritmetiche 22 final int PENNIES_PER_NICKEL = 5; final int PENNIES_PER_DIME = 10; final int PENNIES_PER_QUARTER = 25; final int PENNIES_PER_DOLLAR = 100; // calcola il totale in centesimi (penny) int total = dollars * PENNIES_PER_DOLLAR + quarters * PENNIES_PER_QUARTER + nickels * PENNIES_PER_NICKEL + dimes * PENNIES_PER_DIME + pennies; // Usa la divisione intera per convertire in dollari, cents int dollars = total / PENNIES_PER_DOLLAR; int cents = total % PENNIES_PER_DOLLAR;

The Math class 23 Classe Math: : contiene metodi come sqrt e pow Per calcolare x n, si scrive Math.pow(x,n) Per calcolare x 2, Math.pow è significativamente più efficiente rispetto a calcolare semplicemente x * x Per estrarre la radice quadrata di un numero, si usa Math.sqrt ad esempio: Math.sqrt(x)

The Math class 24 In Java si può rappresentare con (-b + Math.sqrt(b * b - 4 * a * c)) / (2 * a)

Metodi Matematici in Java 25 Math.sqrt(x) Math.pow(x,y) Math.exp(x) Math.log(x) Math.sin(x) Math.cos(x) Math.tan(x) Math.round(x) Math.min(x,y) Math.max(x,y) radice quadrata di x potenza x y esponenziale e x logaritmo naturale di x seno di x coseno di x tangente di x intero più vicino a x minimo tra x e y massimo tra x e y

Analizzare un'espressione 26

Chiamare Metodi static 27 Un metodo static non opera su un oggetto double x = 4; double root = x.sqrt(); // Errore I metodi static sono definiti all'interno delle classi Convenzione: I nomi delle classi iniziano con una maiuscola; quelli degli oggetti con una minuscola Math System.out

Sintassi 4.3: 28 Chiamare Metodi static ClassName.methodName methodname(parameters); Esempio Math.sqrt(4) Scopo: : invocare un metodo statico fornendogli i parametri espliciti (non necessità di oggetto come parametro implicito)

Stringhe 29 Una stringa è una sequenza di caratteri Le stringhe sono oggetti della classe String Costanti String: "Hello, World!" Variabili String: Lunghezza delle stringhe: Stringa vuota: "" String message = "Hello, World!"; int n = message.length();

Concatenazione 30 Si usa l'operatore +: String name = "Dave"; String message = "Hello, " + name; // message è "Hello, Dave" Se uno degli argomenti dell'operatore + è una stringa, l'altro viene convertito in stringa String a = "Agent"; int n = 7; String bond = a + n; // bond è Agent7

Concatenazione 31 nelle Istruzioni di Stampa Utili a ridurre il numero di istruizioni System.out.print System.out.print("The total is "); System.out.println(total); si può scrivere: System.out.println("The total is " + total);

Conversione tra Stringhe-Numeri 32 Convertire in numero: int n = Integer.parseInt(str); double x = Double.parseDouble(x); Convertire in stringa: String str = "" + n; str = Integer.toString(n);

Sottostringhe 33 String greeting = "Hello, World!"; String sub = greeting.substring(0, 5); // sub is "Hello" Fornire le posizioni di inizio e dopo la fine Prima posizione 0

Sottostringhe 34 La lunghezza di una sottostringa è pari a oltrelafine - inizio

Alfabeti Internazionali 35 Tastiera Tedesca

Alfabeti Internazionali 36 Alfabeto Thai

Alfabeti Internazionali 37 Menù con cratteri cinesi

Leggere l'input 38 System.in ha un insieme di caratteristiche minimali può solo leggere un byte alla volta Da Java 5.0, è stata aggiunta la classe Scanner per leggere l'input da tastiera in maniera utile Scanner in = new Scanner(System.in); System.out.print("Enter quantity: "); int quantity = in.nextint(); nextdouble legge un double nextline legge una riga di caratteri (fino all'invio) nextword legge una word (fino ad un qualunque blank)

InputTester 39 01: import java.util.scanner; 02: 03: /** 04: Questa classe collauda l'input da console 05: */ 06: public class InputTester 07: { 08: public static void main(string[] args) 09: { 10: Scanner in = new Scanner(System.in); 11: 12: CashRegister register = new CashRegister(); 13: 14: System.out.print("Enter price: "); 15: double price = in.nextdouble(); 16: register.recordpurchase(price); 17:

InputTester 40 18: System.out.print("Enter dollars: "); 19: int dollars = in.nextint(); 20: System.out.print("Enter quarters: "); 21: int quarters = in.nextint(); 22: System.out.print("Enter dimes: "); 23: int dimes = in.nextint(); 24: System.out.print("Enter nickels: "); 25: int nickels = in.nextint(); 26: System.out.print("Enter pennies: "); 27: int pennies = in.nextint(); 28: register.enterpayment(dollars, quarters,dimes, nickels, pennies); 29: 30: System.out.print("Your change is "); 31: System.out.println(register.giveChange()); 32: } 33: }

InputTester 41 Output Enter price: 7.55 Enter dollars: 10 Enter quarters: 2 Enter dimes: 1 Enter nickels: 0 Enter pennies: 0 Your change is 3.05

Leggere l'input 42 con una Dialog Box

Leggere l'input 43 con una Dialog Box String input = JOptionPane.showInputDialog(prompt) Converte stringhe in numeri se necessario: int count = Integer.parseInt(input); La conversione lancia un'eccezione se l'utente non fornisce un numero (vedi cap. 15) Aggiungere System.exit(0) al metodo main di un programma che usi JOptionPane