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
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 identificatori a
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
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
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
byte k; int i,j,k; long l;
k=111; i=0xffff; l=32L;
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.7/27
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
x = 0 puó essere falso, meglio | x |≤
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;
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
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
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;}
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.15/27
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)
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
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]
Creazione di una array int[] aa;
aa=new int[56];
riferimento int[]
aa
...
int[56]
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.23/27
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
Precedenza degli operatori
postfissi [] ( parametri ) id ++ id -- prefissi ++ id -- id + espr - espr ! creazione/conv. tipo new ( tipo ) espr
moltiplicativi * / \%
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