Tipi e array in Java
Paolo Bison
Fondamenti di Informatica 1 A.A. 2004/05 Universit`a di Padova
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.1/27
Tipo di dato - I
elementi del linguaggio (es. variabili, costanti, espressioni) sono associati ad un tipo che li caratterizza
tipo definito da:
un insieme di valori che l’elemento può assumere
un insieme di operazioni che possono essere applicate a tali valori
notazione sintattica per le costanti
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.2/27
Tipo di dato- II
tipo INTEGER
- valori: insieme dei numeri interi I
- operazioni: operatori aritmetici (+, -, /, *) e funzioni (abs(x)) - costanti: sequenze di cifre (345)
verifica di tipo (type checking)
conversioni di tipo
linguaggi
- tipizzati (procedurali, Java) - non tipizzati (Lisp, Smalltalk)
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.3/27
Dichiarazione in Java
dichiarazione esplicita degli identificatoria
variabili
type id List ;
parametri
type id
valore di ritorno
type id ( [ lista par formali ] ) blocco
a
opzionale in BeanShell, si usi il comando setStrictJava(true); per ren- derla obbligatoria
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.4/27
Dichiarazione di variabile
una variabile deve essere dichiarata prima del suo uso
dichiarazione all’interno di un blocco
ambito di validità locale {int i,k; i=k=m;}
in BeanShell dichiarazione nel workspace
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.5/27
Tipo
tipi primitivi
interi
reali
caratteri
logici
classi
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.6/27
Interi
rappresentazione valori interi in complemento a 2 byte 8 bit -128 : 127
short 16 bit -32768 : 32767
int 32 bit -2147483648 : 2147483647
long 64 bit -9223372036854775808 : 9223372036854775807
operatori: aritmetici (+ - * / %), relazione ed uguaglianza
costanti
[ 0 | 0x | 0X ] seq cifre [ l|L ]
123 0XFFF 29 29L 0377 0
variabili
Reali
rappresentazione di valori reali in formato IEEE 754 float 32 bit
double 64-bit
operatori: aritmetici (+ - * /), relazione ed uguaglianza
costanti
seq cifre [ . seq cifre ] [ e|E seq cifre ][ f|F ]
123.0 0.10e4f 0.0f 0.0
variabili
float x,y; double ll; x=10.0f;
ll=3.10e-2;
errori di arrotondamento
Caratteri
insieme di simboli rappresentati in Unicode 16 bit char 16-bit Unicode 0 : 65535
operatori di relazione ed uguaglianza
costanti
’ carattere ’
’A’ ’%’ ’0’
rappresentazione \
\’ \n \r \ddd
\" \t \f \uXXXX
\\ \b
variabili
char c; c=’w’;
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.9/27
Logici
boolean
valori di verità
operatori: uguaglianza, logici
costanti
true false
variabili
boolean f,g,p;
f=false; g=a>b; p=g==f;
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.10/27
Inizializzazione delle variabili
implicita
esplicita
espr. assegnazione
in dichiarazione
id = espr
int i,k=100; float f=3.5f;
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.11/27
Conversioni di tipo
implicita 1. char → int
2. tipi interi → float 3. float → double
esplicita (type cast) ( tipo ) espressione
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.12/27
Tipo void
rappresenta un insieme vuoto di valori
void
valore di ritorno di un metodo per definire una procedura void azzera(){x=y=z=0;}
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.13/27
Istruzione for
ciclo indefinito
sintassi
for ( [ initlist] ; [ expr ] ; [updatelist ] ) istr
initlist e updatelist
liste di “expression statement”
espr
espressione logica
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.14/27
Semantica del for
definita in termini di ciclo while
initlist ;
while ( expr ){
istr ;
updatelist ; }
for(s=0,i=1;i<=n;i=i+1) s=s+i;
for(;;) { k=k-1;n=n+1; }
Istruzioni continue e break
continue
termina la corrente iterazione di un ciclo
esempio: somma numeri pari fino a N
break
termina il ciclo
esempio: P N
i=1 i + P N −1
i=1 i
Operatori auto-(in/de)cremento
operatori unari applicabili ad identificatori di tipo interi
postfissi
id ++ id − −
prima si valuta, poi si (in/de)crementa e si assegna
prefissi ++ id − − id
prima si (in/de)crementa e si assegna, poi si valuta
“expression statement”
diventano istruzione se seguiti da ; i++; − − j; a=a++;
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.17/27
Espressione condizionale
sintassi
pred ? espr1 : espr2
semantica
se il valore del predicato pred è true si valuta espr1
altrimenti espr2
?: operatore ternario
esempi
x>=0 ? x : -x
x>y ? (x>z ? x : z) : (y>z ? y : z) n=k>y ? k-y : y-k;
if (k>y)n= k-y; else n=y-k;
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.18/27
Array
tipo strutturato
un insieme di M elementi accessibili attraverso un indice numerico di solito compreso tra 0 e M-1
multidimensionali
ciascun elemento è a sua volta un array
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.19/27
Array (monodimensionali) in Java
oggetti che contengono un insieme M di variabili tutte dello stesso tipo T (tipo base)
ciascuna variabile associata ad un indice intero tra 0 e M-1
M definito alla creazione dell’array M=0 ⇒ array vuoto
tipo array Es.: T[]
se int tipo base ⇒ int[] tipo dell’array se float tipo base ⇒ float[] tipo dell’array
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.20/27
Dichiarazione
variabili
int[] a; int b[];
long c,d[]; long[] c,d;
double[] nc;
parametri formali
void m(char[] c,float[] num)
valore di ritorno
double[] comb(double[] x, double[] y)
identificatori individuano un riferimento all’array
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.21/27
Creazione
creazione dell’array come insieme di M elementi
operatore new []
new tipo [ espr ]
numero componenti dato dal valore di espr
Es.:
new char[128]
new int[2*k]
new double[256]
assegnazione per associare un identificatore di tipo T[] ad un array di tipo base T
int[] aa;
aa=new int[34];
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.22/27
Creazione di una array int[] aa;
aa=new int[56];
riferimento int[]
aa
...
int[56]
Inizializzazione
variabili di tipo array possono essere inizializzate in dichiarazione
sintassi { lista espr }
numero espressioni dà il numero delle componenti ciascuna inizializzata al valore della corrispondente espressione
Es.:
int[] iarray= { 1,2,3 } ;
long[] nn= { n,2*n,3*n,4*n } ;
double[] cc= { 3.1514,-0.6e-7 } ;
Accesso componenti
operatore []
array ref [ espr ]
valore di espr da l’indice della componente
Esempi:
nn[i]=mm[k]+ll[k+1];
(creaArray(10))[k-n]=5;
Index Out Of Bound
valore di espr non compreso tra 0 e M-1
dimensione di una array
arrayRef .length
for(i=0;i<nn.length;i++) nn[i]=i;
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.25/27
Array multidimensionali
uso iterato di []
int[][] mat= {{ 2,3,3 } , { 1,2 }} ; double[][][] matC;
mat = new int[20][34];
accesso
id
l’intero array
id [ espr ]
componente nella prima dimensione
id [ espr ][ espr ]
componente nella seconda dimensione
....
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.26/27
Precedenza degli operatori
postfissi [] (
parametri)
id++
id-- prefissi ++
id--
id+
espr-
espr! creazione/conv. tipo new (
tipo)
esprmoltiplicativi * / \%
additivi + -
relazionali < > <= >=
uguaglianza == !=
AND &
XOR ˆ
OR |
AND condizionale &&
OR condizionale ||
condizionale ?:
assegnazione =
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.27/27