Tipi e array in Java Tipo di dato

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
Fondamenti di Informatica 1
A.A. 2004/05
Università di Padova
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.1/27
Tipo di dato- II
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.2/27
Dichiarazione in Java
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)
dichiarazione esplicita degli identificatoria
variabili
type id List;
parametri
type id
conversioni di tipo
linguaggi
- tipizzati (procedurali, Java)
- non tipizzati (Lisp, Smalltalk)
a
valore di ritorno
type id( [ lista par formali ] ) blocco
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
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.3/27
Dichiarazione di variabile
Tipo
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 primitivi
interi
reali
caratteri
logici
classi
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.5/27
Interi
Reali
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
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.6/27
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 |≤ 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
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.8/27
Logici
Caratteri
insieme di simboli rappresentati in Unicode 16 bit
char 16-bit Unicode 0 : 65535
valori di verità
operatori di relazione ed uguaglianza
operatori: uguaglianza, logici
costanti
’carattere’
’A’
’%’
’0’
rappresentazione \
\’ \n \r \ddd
\" \t \f \uXXXX
\\ \b
costanti
true false
variabili
boolean f,g,p;
f=false;
g=a>b;
boolean
p=g==f;
variabili
char c; c=’w’;
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.9/27
Inizializzazione delle variabili
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.10/27
Conversioni di tipo
implicita
esplicita
espr. assegnazione
in dichiarazione
id = espr
int i,k=100; float f=3.5f;
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
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.11/27
Tipo void
Istruzione for
rappresenta un insieme vuoto di valori
ciclo indefinito
void
valore di ritorno di un metodo
per definire una procedura
sintassi
for ([ initlist];[ expr ];[updatelist ]) istr
initlist
e updatelist
liste di “expression statement”
void azzera(){x=y=z=0;}
espr
espressione logica
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.14/27
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.13/27
Istruzioni continue e break
Semantica del for
definita in termini di ciclo while
continue
termina la corrente iterazione di un ciclo
esempio: somma numeri pari fino a N
break
termina il ciclo
PN
PN −1
esempio:
i=1 i +
i=1 i
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
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.16/27
Espressione condizionale
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
sintassi
pred ? espr1 : espr2
prefissi
++id − −id
prima si (in/de)crementa e si assegna, poi si valuta
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)
“expression statement”
diventano istruzione se seguiti da ;
i++;
− −j;
a=a++;
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.17/27
Array
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.18/27
Array (monodimensionali) in Java
tipo strutturato
un insieme di M elementi accessibili attraverso un
indice numerico di solito compreso tra 0 e M-1
oggetti che contengono un insieme M di variabili tutte
dello stesso tipo T (tipo base)
multidimensionali
ciascun elemento è a sua volta un array
ciascuna variabile associata ad un indice intero tra 0 e
M-1
M definito alla creazione dell’array
M=0 ⇒ array vuoto
tipo array
T[]
Es.:
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
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.19/27
Dichiarazione
Creazione
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
creazione dell’array come insieme di M elementi
operatore new []
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
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.21/27
Inizializzazione
Creazione di una array
int[] aa;
aa=new int[56];
aa
riferimento int[]
new tipo[espr]
int[56]
........................
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.23/27
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};
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.24/27
Accesso componenti
Array multidimensionali
operatore []
uso iterato di []
int[][] mat={{2,3,3},{1,2}};
double[][][] matC;
mat = new int[20][34];
accesso
array ref[espr]
valore di espr da l’indice della componente
Esempi:
nn[i]=mm[k]+ll[k+1];
(creaArray(10))[k-n]=5;
id
Index Out Of Bound
valore di espr non compreso tra 0 e M-1
dimensione di una array
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
Precedenza degli operatori
[]
prefissi
++id --id +espr -espr !
creazione/conv. tipo
new (tipo)espr
moltiplicativi
* / \%
(parametri) id++ id--
additivi
+ -
relazionali
< > <= >=
uguaglianza
== !=
AND
&
XOR
ˆ
OR
|
AND condizionale
&&
OR condizionale
||
condizionale
?:
assegnazione
=
componente nella prima dimensione
id[espr][espr]
arrayRef.length
postfissi
l’intero array
id[espr]
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.27/27
componente nella seconda dimensione
....
Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.26/27