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