variabili numeriche –interi (byte, short, int, long): complemento a 2 –a virgola mobile (float,...

21
Variabili • Numeriche – Interi (byte, short, int, long): complemento a 2 – A virgola mobile (float, double): IEEE 745 • Alfanumeriche – Carattere (char): Unicode – Stringa (String) • Booleane (boolean)

Upload: azzurra-di-gregorio

Post on 03-May-2015

221 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

Variabili

• Numeriche– Interi (byte, short, int, long):

complemento a 2– A virgola mobile (float, double): IEEE 745

• Alfanumeriche– Carattere (char): Unicode– Stringa (String)

• Booleane (boolean)

Page 2: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

Dichiarazione e inizializzazione

• dichiarazione: il compilatore mette a disposizione la memoria adatta, per salvare un certo tipo di dato;

• inizializzazione: all’area di memoria viene assegnato un valore: prima non si sapeva cosa contenesse la varabile.

SE, AD ESEMPIO CERCO DI STAMPARE A MONITOR UNA VARIABILE PRIMA DI INIZIALIZZARLA, QUALE VALORE DOVREBBE VENIRE STAMPATO?

NON E’ POSSIBILE DIRLO!

IL COMPILATORE QUINDI CI OBBLIGA A DARE UN VALORE AD OGNI VARIABILE DICHIARATA PRIMA DI POTERLA USARE!

Page 3: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

Operatori (slide 32,33)

• Matematici: • + -(differenza) / * % e -(negazione)

• Logici :• &&(AND), ||(OR), ! (NOT )

• Confronto:• == != < >, e speciale “? :”

• Assegnamento: è sempre l’ultimo ad essere effettuato

Page 4: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

Scorciatoie:

a=a+1; può essere scritta come a++; o ++a;

• …analogamente per sottrarre 1!

• a=a+b; può essere scritta a+=b;

• …identico per gli altri operatori matematici!

Page 5: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

Espressioni

Qualsiasi istruzione dove è presente uno o più operatori e le variabili su cui operano, è un’espressione.

Ogni espressione viene risolta “a pezzi”,

risolvendo prima le operazioni con precedenza maggiore.

Vediamo un esempio!

Page 6: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

Espressioni (cont…)

int a = 1;

a++ * 3; //A cosa corrisponde?

++a * 3; // e se dopo ci fosse quest’altra espressione?

In casi semplici non ci sono problemi ma per:++a +b / a++ * a++ // NON SAREBBE OVVIO

E’ SEMPRE MEGLIO USARE LE PARENTESI ((++a)+b)/((a++)*(a++))

Vedere ‘esempioEspressioni.java’

Page 7: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

AttenzioneEsistono delle differenze quando operiamo sui

numeri interi o sui decimali, perché sono codificati in maniera diversa!

Ad esempio i decimali prevedono la codifica per alcuni valori speciali: Nan e Infinity.

Gli interi NO;

Nella divisione per zero, ad esempio, avrò 2 comportamenti differenti!

Esercizi slide 52 e 54.

Page 8: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode
Page 9: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

Conversioni tra tipi

Esistono due tipi di conversioni:– Promozione, automatica– Casting, deve essere forzata

Tabella riassuntiva, slide 62

Esempio slide 63.

Page 10: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

Overflow e underflow

Le variabili di tipo NUMERICO sono codificate su un’area di memoria finita, quindi possono rappresentare un numero di codifiche FINITO => non possono rappresentare TUTTI i numeri.

Quando cerchiamo di mettere un valore troppo grande per il tipo di variabile utilizzata, si dice che avviene un overflow!

Viceversa con un valore troppo piccolo avverrà un underflow!

Page 11: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

Overflow e underflow (cont…)

Siccome i tipi interi e decimali sono codificati differentemente, gestiranno diversamente questi errori:

• i float e double approssimano i numeri molto grandi(10^9999999) con ‘Infinity’ e numeri molto piccoli(10^-999999999) con zero;

• Per i tipi interi interi invece non viene segnalato nessun errore!!! Ma il risultato dell’assegnamento è sbagliato.

Page 12: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

Type-Wrapper

Ogni tipo fondamentale ha associato unparticolare oggetto, detto type-wrapper,avente lo stesso nome del tipo ma conl’iniziale maiuscola.Tramite questo oggetto è possibileaccedere ai valori MIN_VALUE eMAX_VALUE, contenenti rispettivamente ilminimo e il massimo valore

memorizzabile.

Esempio slide 71

Page 13: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

Costanti

Una costante è un’area di memoria contenente un valore che non viene modificato durante l’esecuzione del programma.

Una costante si dichiara esattamente come una variabile, facendo precedere le parole chiave final static alla dichiarazione.

Page 14: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

Stringhe

Il tipo di dato String, inizia con la prima lettera maiuscola. Questo significa che non è un tipo semplice, ma è una “classe”.

Senza addentrarci in dettaglio su cos’è una classe, possiamo immaginarla come una scatola, dove dentro ci sia un dato, che delle operazione, chiamate metodi, che lo manipolano…

Page 15: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

String

Ogni stringa deve essere racchiusa i doppi apici “” e può contenere sia caratteri normali e sia speciali, quali:– Tabulazione,– Ritorno a capo, …

Il modo per scrivere un carattere speciale, all’interno di un una stringa è usare il carattere di ‘escape’ ovvero ‘\’

Tabella slide 77

Page 16: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

esempio

• String primaStringa =

“la mia directory è: \n\t \“e:\\eserciziJava\” ”

Page 17: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

concatenazione

L’operazione di concatenamento,ottenuta tramite l’operatore +,giustappone una stringa a un’altra

stringa.

File d’esempio *.java

Page 18: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

Operazioni con le stringhe

Il modo per utilizzare le operazioni definite per il tipo di dato String è in seguente:

– Il nome della variabile di tipo String– Il carattere di punto (.)– Il nome della funzione seguito da

parentesi tonde, contenenti eventuali argomenti separati da virgole

Page 19: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

Come funziona un metodo

Un metodo deve essere

String miaStringa = “…”

miaStringa.nomeDelMetodo( parametri input)

Parametro in output

Page 20: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

Metodi utilizzati:

• length()

• charAt(posizione)

• subString(posInizio, posFine)

• indexOf(“stringa da cercare”)

• indexOf(“stringa da cercare”,posDaCuiCercare)

Page 21: Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode

Riguardate gli esempi nelle slide

81, 83, 85, 88.

Provate a fare le modifiche suggerite negli esercizi riassuntivi.