9/11/2004Laboratorio di Programmazione - Luca Tesei1 Tipi numerici di base - Costanti Interi e decimali Definizione di costanti.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

LINGUAGGIO DI PROGRAMMAZIONE C
Introduzione al linguaggio C
Costruttori e Distruttori
Package Utilizzo classi.
If a cascata, switch, operatori logici
2/11/2004Laboratorio di Programmazione - Luca Tesei1 Progettazione Fase di progettazione di unapplicazione Fase di implementazione.
Linguaggi Regolari e Linguaggi Liberi
12/11/2004Laboratorio di Programmazione - Luca Tesei1 Caratteri – Input da Console Il tipo char Input dallo standard input.
26/10/2004Laboratorio di Programmazione - Luca Tesei1 Variabili e Oggetti Lo spazio di memoria di Java Le API di Java.
3/12/2004Laboratorio di Programmazione - Luca Tesei1 Sequenze di lunghezza variabile ArrayList Operazioni Ricerche.
5/11/2004Laboratorio di Programmazione - Luca Tesei1 Esercizi Su Progettazione e Implementazione di classi.
29/10/2004Laboratorio di Programmazione - Luca Tesei1 Metodi e variabili istanza Definizione e chiamata di metodi Uso delle variabili istanza Documentazione.
22/10/2004Programmazione e Laboratorio di Programmazione – Luca Tesei1 Laboratorio – Primo Impatto Scrivere un semplice programma I primi concetti.
Programmazione e Laboratorio di Programmazione – Luca Tesei1 La Programmazione Cosè la programmazione? Concetti preliminari.
29/11/2004Laboratorio di Programmazione - Luca Tesei1 Ancora sulla progettazione/Pacchetti Concetti di coesione/accoppiamento/coerenza Uso dei package.
2/11/2004Laboratorio di Programmazione - Luca Tesei1 Punto della situazione Da dove veniamo, dove andiamo.
Massa Laura Mela Enrica
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Fondamenti di Informatica CDL in Ingegneria Meccanica - A.A CDL in Ingegneria Meccanica - A.A Tipi di dati Ing. Simona Colucci.
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Tipi di dati Ing. Simona Colucci.
Fondamenti di Informatica
9/12/2004Laboratorio di Programmazione - Luca Tesei1 Ereditarietà
FUNZIONI DI BIBLIOTECA
Funzioni definite dall’utente
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 7 (5 novembre 2008) Programmazione in Java: lessico, variabili, tipi primitivi, assegnamento a variabile.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Variabili e tipi primitivi Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Assegnamento di valore a una variabile Anno Accademico 2009/2010.
1 Lezione XIII Lu 17-Nov-2005 Programmare le classi.
Soluzione Esercizio - Classe Vettore
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Approfondimento delle classi
Programmazione con Interfacce
Capitolo 4 Tipi di dati fondamentali
Dichiarazioni e tipi predefiniti nel linguaggio C
Le funzioni.
Java base I: Sintassi e tipi di dati
Programmazione in Java
Programmazione in Java Claudia Raibulet
JAVA Franco Bombi 8 ottobre FB Introduzione Java è un linguaggio di impiego generale, basato su classi e orientato agli oggetti Java.
CODIFICA Da flow-chart a C++.
I Metodi in Java Il termine "metodo" è sinonimo di "azione". Quindi, affinché un programma esegua qualche istruzione, deve contenere metodi.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Tipi di dati elementari
Unità Didattica 3 Linguaggio C
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
11/11/2004Laboratorio di Programmazione - Luca Tesei1 Operazioni numeriche - Input Espressioni, funzioni matematiche, classi involucro, Acquisizione di.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Fondamenti di Programmazione Prof.ssa Elisa Tiezzi
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Le variabili in Java Nella programmazione tradizionale, una variabile è una porzione di memoria in cui è immagazzinato un certo tipo di dato. Per esempio.
15/11/2004Laboratorio di Programmazione - Luca Tesei1 Costrutto condizionale Scelte, blocchi.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Una "vera" classe.. ..un esempio pratico: la calcolatrice
1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast.
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Programmazione in Java
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
La codifica dei numeri.
1 Java secondo contatto Nel tunnel una luce…. 2 Esercizio - Contatore Definire la classe Contatore con le seguenti caratteristiche:  Il metodo getValore.
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
Lezione 2 : Basi del linguaggio Variabili. Come visto nella lezione 1 le classi registrano il proprio stato nelle variabili  int cadenza = 0;  int velocita.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Transcript della presentazione:

9/11/2004Laboratorio di Programmazione - Luca Tesei1 Tipi numerici di base - Costanti Interi e decimali Definizione di costanti

9/11/2004Laboratorio di Programmazione - Luca Tesei2 Una classe Borsellino /** Realizza un borsellino per le monete. Registra il numero di monete e calcola il valore totale */ public class Purse { /** Costruisce un borsellino vuoto */ public Purse() { } /** Aggiunge monete di tipo "nickel" al count il numero di nickel da aggiungere */ public void addNickels(int count) { }

9/11/2004Laboratorio di Programmazione - Luca Tesei3 Classe Borsellino contd /** Aggiunge monete di tipo "dime" al count il numero di dime da aggiungere */ public void addDimes(int count) { } /** Aggiunge monete di tipo "quarter" al count il numero di quarter da aggiungere */ public void addQuarters(int count) { } /** Ispeziona il valore totale delle monete nel la somma dei valori di tutte le monete attualmente presenti */ public double getTotal() { }

9/11/2004Laboratorio di Programmazione - Luca Tesei4 Esempio duso Purse myPurse = new Purse(); myPurse.addNickels(3); myPurse.addDimes(1); myPurse.addQuarters(2); double totalValue = myPurse.getTotal(); totalValue conterrà 0,75 cioè il valore in dollari delle monete contenute nel borsellino

9/11/2004Laboratorio di Programmazione - Luca Tesei5 Numeri interi e numeri decimali Per rappresentare quantità che si contano naturalmente con multipli di 1 usiamo variabili di tipo intero ( int ) Nellesempio del borsellino int è il tipo dei parametri dei metodi addXXX Questo perché è naturale considerare le monete come quantità indivisibili e quindi quantificate con un numero intero Il metodo getTotal() invece restituisce un double Questo perché è naturale per un valore che rappresenta una quantità di dollari avere dei decimali

9/11/2004Laboratorio di Programmazione - Luca Tesei6 Primi passi per limplementazione di Purse Ogni oggetto di tipo Purse può essere descritto dalla quantità di nickels, dimes e quarters che contiente Inseriamo quindi tre variabili istanza di tipo int per rappresentare queste quantità... private int nickels; private int dimes; private int quarters;

9/11/2004Laboratorio di Programmazione - Luca Tesei7 Primi passi per limplementazione di Purse public double getTotal() { return nickels * dimes * quarters * 0.25; } L * indica la moltiplicazione (perché o non si trovano generalmente nelle tastiere) Lespressione dopo return segue le regole di associatività e precedenza tipiche dellaritmetica (la grammatica di Java per le espressioni segue le regole che abbiamo visto a Programmazione) Il valore ottenuto è un numero in virgola mobile poiché moltiplicando un intero per un numero decimale si ottiene un numero decimale, in generale

9/11/2004Laboratorio di Programmazione - Luca Tesei8 Costanti numeriche Nelle costanti numeriche che si possono scrivere nel codice la virgola deve essere indicata come punto decimale Si può usare anche la notazione esponenziale Ad esempio 5, si scrive come 5.0E-3 Cioè si usa il punto decimale e si scrive E seguito dallesponente di 10

9/11/2004Laboratorio di Programmazione - Luca Tesei9 Numeri interi Un numero intero è un numero senza decimali che può essere sia positivo che negativo Il tipo base Java corrispondente ai numeri interi è int Una variabile int può contenere i numeri interi da – a bit + 1 bit per il segno = 32 bit di memoria allocati per ogni variabile int

9/11/2004Laboratorio di Programmazione - Luca Tesei10 Numeri interi Esistono altri tipi base di interi che possono rappresentare meno o più numeri di int short : 16 bit - Range: da a byte : 8 bit - Range da –2 7 a long : 64 bit - Range da –2 63 a 2 63 –1

9/11/2004Laboratorio di Programmazione - Luca Tesei11 Numeri in virgola mobile Possono contenere cifre decimali Contengono un certo numero di cifre significative e la posizione della virgola Es hanno tutti le stesse cifre significative (25), ciò che cambia è la posizione della virgola (da qui virgola mobile) Naturalmente la rappresentazione in realtà è in base 2 In java la virgola è rappresentata dal punto decimale come nella notazione anglo-sassone (come tutte le calcolatrici del resto)

9/11/2004Laboratorio di Programmazione - Luca Tesei12 Numeri in virgola mobile double può rappresentare circa 15 cifre significative: è il tipo con maggiore precisione (doppia precisione) float può rappresentare circa 7 cifre significative: precisione spesso insufficiente, ma calcoli più veloci Per precisione si intende la grandezza degli errori dovuti all arrotondamento che inevitabilmente si commettono con luso di questi numeri

9/11/2004Laboratorio di Programmazione - Luca Tesei13 Precisione public class ProvaPrecisione { public static void main(String [] argv) { double originalPrice = 3E14; double discountedPrice = originalPrice – 0.05; double discount = originalPrice – discountedPrice; // dovrebbe essere 0.05 System.out.println(discount); // stampa – Errore dovuto //allarrotondamento da rappresentazione }

9/11/2004Laboratorio di Programmazione - Luca Tesei14 Numeri rappresentabili Il tipo float può rappresentare il range dei numeri, positivi o negativi, con valore assoluto che va da a ( )2 127 Il tipo double può rappresentare il range dei numeri, positivi o negativi, con valore assoluto che va da a ( )2 1023

9/11/2004Laboratorio di Programmazione - Luca Tesei15 Numeri a lunghezza e precisione arbitraria Il pacchetto java.math contiene una classe BigInteger i cui oggetti possono rappresentare numeri interi di lunghezza arbitraria Lo stesso pacchetto contiene una classe BigDecimal i cui oggetti possono rappresentare numeri a virgola mobile con precisione arbitraria

9/11/2004Laboratorio di Programmazione - Luca Tesei16 Numeri a lunghezza e precisione arbitraria Per questi numeri non si possono usare i normali operatori + * - / = I corrispondenti metodi add, multiply, subtract, divide ed equals sono forniti dalle relative classi: BigInteger a = new BigInteger( ); BigInteger b = new BigInteger( ); BigInteger c = a.multiply(b); System.out.println(c); // stampa Naturalmente i calcoli con questi numeri sono più lenti di quelli fatti con i numeri dei tipi base

9/11/2004Laboratorio di Programmazione - Luca Tesei17 Costruttore di Purse Public Purse() { nickels = 0; dimes = 0; quarters = 0; } Il costruttore di default farebbe esattamente la stessa cosa, ma lo specifichiamo per chiarezza

9/11/2004Laboratorio di Programmazione - Luca Tesei18 Implementazione di addNickels public void addNickels(int count) { nickels = nickels + count; } È la tipica istruzione di incremento di un valore Lassegnamento prima valuta la parte a sinistra dell= e quindi considera il valore corrente della variabile istanza intera nickels al quale aggiunge il valore di count Il valore così ottenuto sarà assegnato alla variabile istanza nickels, cioè sarà il suo valore dopo lesecuzione dellistruzione (si può pensare che sia il valore che nickels ha dopo il ; finale)

9/11/2004Laboratorio di Programmazione - Luca Tesei19 Altre istruzioni di incremento In Java, come in C, esiste una forma abbreviata per lincremento nickels = nickels + count; può essere scritta equivalentemente come nickels += count; La stessa abbreviazione si può usare anche per gli altri operatori (*, /, -): P *= q; // equivalente a p = p * q;

9/11/2004Laboratorio di Programmazione - Luca Tesei20 Incremento di 1 Unistruzione che ricorre molto frequentemente nei programmi è lincremento o il decremento di una variabile intera di una unità In Java, come in C, esistono abbreviazioni speciali per questi casi: i++; // equivalente a i = i + 1 ; e a i +=1; i--; // equivalente a i = i – 1; e a i -=1;

9/11/2004Laboratorio di Programmazione - Luca Tesei21 Costanti public double getTotal() { return nickels * dimes * quarters * 0.25; } La maggior parte del codice si documenta da sé, ma in questo caso i numeri 0.05, 0.1 e 0.25 compaiono senza nessuna spiegazione È buona regola evitare di inserire nel codice questi numeri magici

9/11/2004Laboratorio di Programmazione - Luca Tesei22 Costanti Le costanti possono essere pensate come dei nomi a cui è associato un valore Tale associazione rimane valida per tutta la vita della costante e non cambia mai In genere, per convenzione, le costanti sono scritte tutte maiuscole e si usa lunderscore come separatore nel caso che il nome sia composto da più parole In Java una costante si dichiara come una variabile (di frame) usando la parola chiave final e inizializzando il valore nella dichiarazione

9/11/2004Laboratorio di Programmazione - Luca Tesei23 Costanti public double getTotal() { final double NICKEL_VALUE = 0.05; final double DIME_VALUE = 0.1; final double QUARTER_VALUE = 0.25; return nickels * NICKEL_VALUE + dimes * DIME_VALUE + quarters * QUARTER_VALUE; }

9/11/2004Laboratorio di Programmazione - Luca Tesei24 final In generale in Java la parola chiave final indica un qualcosa che non può essere più modificato (vedremo che esistono, oltre alle variabili, anche classi final, cioè che non possono essere estese) Il compilatore dà errore se si cerca di modificare una variabile final.

9/11/2004Laboratorio di Programmazione - Luca Tesei25 Costanti La dichiarazione di una variabile con lo specificatore final ha lo stesso effetto di una qualsiasi altra definizione di variabile Viene cioè allocata la nuova variabile sul frame corrente dellattivazione corrente Al momento della chiusura del blocco del frame in cui è stata definita essa scompare E il controllo del compilatore che la rende non modificabile

9/11/2004Laboratorio di Programmazione - Luca Tesei26 Costanti In genere però le costanti sono utili in diversi metodi della stessa classe Per evitare di dover ridefinire le variabili final in ogni metodo che le usa (ed evitare anche errori se il valore viene modificato solo in alcuni metodi, ad esempio in unaltra versione del programma) possiamo pensare di associare le costanti direttamente alla classe Per definire costanti che si riferiscono ad una classe si può usare lo specificatore static

9/11/2004Laboratorio di Programmazione - Luca Tesei27 static Lo specificatore static deriva dal C e il suo nome può risultare fuorviante In Java se nella definizione di una classe viene inserita una variabile istanza con lo specificatore static quella variabile istanza va considerata come elemento della classe In genere le variabili istanza formano lo stato di ogni oggetto della classe che viene creato Le variabili istanza static invece non vanno a far parte dello stato degli oggetti della classe

9/11/2004Laboratorio di Programmazione - Luca Tesei28 static Esiste una sola copia di una variabile istanza static di una classe e si riferisce allintera classe Per riferirla e/o modificarla si usa la notazione NomeClasse.nomeVariabileIstanzaStatic Alle variabili istanza static possono essere associati tutti i possibili specificatori di accesso: public, private e protected Inoltre possono essere final, cioè costanti di classe

9/11/2004Laboratorio di Programmazione - Luca Tesei29 Esempio Vedremo più avanti degli esempi in cui sono utili variabili static di classe Per adesso useremo questa possibilità solo per specificare costanti Nel nostro caso le costanti che indicano il valore di ogni moneta sembrano essere utili solo nel contesto della classe Purse e quindi le dichiariamo private Molte classi delle API hanno invece delle costanti pubbliche che si possono usare

9/11/2004Laboratorio di Programmazione - Luca Tesei30 Esempio public class Purse {... private static final double NICKEL_VALUE = 0.05; private static final double DIME_VALUE = 0.1; private static final double QUARTER_VALUE = 0.25;... }

9/11/2004Laboratorio di Programmazione - Luca Tesei31 Esempio Allinterno dei metodi della classe si possono riferire le variabili static (sia final che non) semplicemente con il loro nome (nel caso di conflitto va invece specificato il nome completo (cioè NomeClasse.nomeVariabile), ad esempio Purse.NICKEL_VALUE public double getTotal() { return nickels * NICKEL_VALUE + dimes * DIME_VALUE + quarters * QUARTER_VALUE; }