• Non ci sono risultati.

Tipi e array in Java

N/A
N/A
Protected

Academic year: 2021

Condividi "Tipi e array in Java"

Copied!
7
0
0

Testo completo

(1)

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 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

Tipi e array in Java , Paolo Bison, A.A. 2004-05, 2004-10-28 – p.4/27

(2)

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

(3)

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

(4)

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

(5)

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

(6)

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 } ;

(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

)

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

Riferimenti

Documenti correlati

Usando le classi del precedente esercizio, scrivere una semplice classe Agenzia Assicurativa, dove ciascun oggetto della classe `e caratterizzato dal nome dell’agenzia e da un elenco

Tipi strutturati, Paolo Bison, FI08, 2008-09-29 – p.17. user-defined type

Fondamenti di Informatica Ingegneria Meccanica. Università di

deve ridurre la complessitá convergendo verso un caso base. Ricorsione, Paolo Bison, FI08, 2008-09-29

Fondamenti di Informatica 1 A.A.. variabili, costanti, espressioni) sono associati ad un tipo che li caratterizza..  tipo

Fondamenti di Informatica 1 A.A. variabili, costanti, espressioni) sono associati ad un tipo che li caratterizza..  tipo

 Evitare l'uso di array paralleli trasformandoli in array Evitare l'uso di array paralleli trasformandoli in array di oggetti:.

[r]