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

Post on 03-May-2015

219 views 1 download

transcript

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)

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!

Operatori (slide 32,33)

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

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

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

• Assegnamento: è sempre l’ultimo ad essere effettuato

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!

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!

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’

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.

Conversioni tra tipi

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

Tabella riassuntiva, slide 62

Esempio slide 63.

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!

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.

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

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.

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…

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

esempio

• String primaStringa =

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

concatenazione

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

stringa.

File d’esempio *.java

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

Come funziona un metodo

Un metodo deve essere

String miaStringa = “…”

miaStringa.nomeDelMetodo( parametri input)

Parametro in output

Metodi utilizzati:

• length()

• charAt(posizione)

• subString(posInizio, posFine)

• indexOf(“stringa da cercare”)

• indexOf(“stringa da cercare”,posDaCuiCercare)

Riguardate gli esempi nelle slide

81, 83, 85, 88.

Provate a fare le modifiche suggerite negli esercizi riassuntivi.