+ All Categories
Home > Documents > Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float,...

Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float,...

Date post: 03-May-2015
Category:
Upload: azzurra-di-gregorio
View: 219 times
Download: 1 times
Share this document with a friend
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)
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.


Recommended