Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010 1 Gli array In programmazione un array (o vettore) rappresenta una collezione di N successive locazioni di memoria sul calcolatore destinate a contenere dati. Esso: possiede un unico nome, associatogli tramite un identificatore può contenere N valori di uno stesso tipo L’array in programmazione estende il concetto di variabile 2 Gli array Un array, prima di poter essere utilizzato, deve essere dichiarato. La dichiarazione comporta: il numero N di locazioni di memoria (che è la dimensione dell’array) l’assegnazione di un identificatore (nome) attraverso cui accedere al contenuto delle N locazioni di memoria la specifica del tipo di valore che le N locazioni di memoria possono contenere 3 Dichiarazione di array In Java, la dichiarazione di un array (che è un “oggetto” complesso) ha la seguente forma generale: <type>[] <array_id>=new <type>[<size>]; In cui: <size> numero N di locazioni di cui è composto l’array (dimensione dell’array) <type> tipo di dato che possono contenere le N locazioni <array_id> nome da usare per accedere al contenuto dell’array 4 Dichiarazione di array In Java, la dichiarazione di un array ha la seguente forma generale: <type>[] <array_id>=new <type>[<size>]; Esempio di dichiarazione di un array di 3 interi di tipo int: Identificatore (nome) dell’array int[] isArray=new int[3]; L’array di nome isArray può contenere tre valori di tipo int. Con questa dichiarazione però i valori contenuti sono ancora indefiniti. 5 Dichiarazione di array La dichiarazione di un array in Java può comprendere anche l’inizializzazione del suo contenuto. La forma generale di dichiarazione con inizializzazione è: <type>[] <array_id>={<value_list>}; In cui: <value_list> lista di valori con cui inizializzare l’array (separati da ‘,’ e dello stesso tipo specificato in <type> ) 6 Dichiarazione di array … ad esempio: int[] isArray={7,5,9}; Questa dichiarazione costruisce automaticamente un array di tipo int la cui dimensione è 3, in quanto la lista a destra del simbolo ‘=‘ è composta da 3 valori. I valori di isArray sono quindi inizializzati a 7 (il primo valore), 5 (il secondo valore) e 9 (il terzo valore). 7 Dichiarazione di array ATTENZIONE! L’inizializzazione di un array tramite lista di valori separati da ‘,’ e racchiusi tra parentesi graffe, può avvenire solo in fase di dichiarazione. Quindi NON SI PUO’ scrivere quanto segue: int[] isArray=new int[3]; isArray={7, 5, 9}; L’assegnamento di valori ad un array dopo la sua dichiarazione avviene come mostrato dopo… 8 Dichiarazione di array public class EsempioDichiarazioneArray1{ public static void main(String arg[]) { byte[] isByteArray=new byte[10]; short[] isShortArray=new short[1000]; int[] isIntArray=new int[130]; long[] isLongArray=new long[345]; float[] isFloatArray=new float[205]; double[] isDoubleArray=new double[7]; char[] isCharArray=new char[23]; boolean[] isBooleanArray=new boolean[679]; } } Questo programma dichiara una serie di array di tipi primitivi Java. I valori degli array dopo le dichiarazioni sono indefiniti. 9 Dichiarazione di array public class EsempioDichiarazioneArray2{ public static void main(String arg[]) { byte[] isByteArray={2,5,6,9}; short[] isShortArray={100,345,234}; int[] isIntArray={1000,3000,4000,1500}; long[] isLongArray={2,1100,1000000}; float[] isFloatArray={1.2,4.5,6.9}; double[] isDoubleArray={2.3333,4.555555}; char[] isCharArray={‘a’,’b’,’c’,’d’,’e’}; boolean[] isBooleanArray={true,true,false}; } } Questo programma dichiara una serie di array di tipi primitivi Java inizializzandoli con una lista di valori. 10 Accesso ai valori di un array In Java il contenuto di una cella di memoria di un array di dimensione N è accessibile attraverso l’indice che fornisce la sua posizione rispetto alla prima cella dell’array. Si consideri il seguente array di 12 interi schematizzato come una successione di quadrati (in rosso sono evidenziati gli indici associati ad ogni cella): 10 9 8 13 2 5 5 8 11 30 40 7 0 1 2 3 4 5 6 7 8 9 10 11 La prima cella ha indice di posizione 0 (e in questo caso contiene l’intero 10), la seconda cella ha indice 1 (e in questo caso contiene l’intero 9), etc., l’ultima cella ha indice 11 (e in questo caso contiene l’intero 7). Da notare che in genere l’ultima cella di un array ha indice di posizione pari a N-1, dove N è la dimensione dell’array. 11 Accesso ai valori di un array La sintassi Java per accedere al contenuto di una cella di un array è la seguente: <array_id>[<position_index>] In cui: <position_index> posizione della cella a cui si vuole accedere, rispetto alla prima cella dell’array (che ha indice di posizione pari a 0) 12 Accesso ai valori di un array Il codice seguente: char[] cArray={‘a’,’b’,’c’}; System.out.println(cArray[1]); dichiara un array di char, lo inizializza con una lista di 3 caratteri e poi stampa il contenuto in posizione di indice 1 (cioè il secondo valore di cArray). Quindi l’output è: b 13 Accesso ai valori di un array Il codice seguente: int[] iArray=new int[4]; iArray[0]=10; iArray[1]=20; iArray[2]=30; iArray[3]=40; dichiara un array di 4 interi di tipo int, e poi assegna come primo valore (in posizione 0) l’intero 10, come secondo valore (in posizione 1) l’intero 20, come terzo valore (in posizione 2) l’intero 30 e come quarto valore (in posizione 3) l’intero 40. 14 Manipolazione di array In Java la sintassi per ottenere la dimensione N di un array è la seguente: <array_id>.length; dove <array_id> è l’identificatore dell’array. Ad esempio il seguente codice: int[] iArray={2,4,6}; int lunghezza; lunghezza=iArray.length; System.out.println(lunghezza); stampa la dimensione di iArray che è 3 15