AN FI Array Collezioni di dati uniformi in tipo Array
AN FI Array Array Una collezione di dimensione prefissata di variabili anonime dello stesso tipo, ciascuna selezionabile attraverso una notazione ad indice –La prima componente viene referenziata con indice 0 u Una funzione dal dominio dellindice al dominio degli elementi
AN FI Array A[i] detto A lidentificatore che denota un array di 10 elementi, la notazione A[i] ( 0<=i<=9 ) puo essere interpretata come lapplicazione della funzione A con argomento i, che restituisce il valore della i-ma componente di A
AN FI Array Definizione di array in C [ ] int a[4]; Viene allocata memoria equivalente a 4 variabili di tipo int. aa[0] a[1] a[2] a[3]
AN FI Array Inizializzazione di array in C int a[3] = {10,20,30}; inizializza il blocco di memoria associato ad a 30 a a[0] a[1] a[2]
AN FI Array Array name in C il simbolo a viene usato come sinonimo del riferimento alla prima cella del blocco riservato per l'array. a e sinomimo di 30 a a[0] a[1] a[2]
AN FI Array Dichiarazione di array in Java [ ]; //oppure u [] ; int a[]; int[] a; u La dimensione non e specificata. Alla variabile a viene associato il valore-riferimento null a null
AN FI Array Inizializazione di array in Java int a[] = {10,20,30}; //oppure int[] a = {10,20,30}; associa alla variabile a l'indirizzo di partenza del blocco di memoria allocato nellheap che contiene la rappresentazione binaria dei tre valori interi specificati. crea (concettualmente) una nuova classe di dati
AN FI Array Inizializzazione di array in Java a a[0] a[1] a[2]
AN FI Array Array name in Java il simbolo a denota una normale variabile il cui valore e' un riferimento (a un oggetto-array)
AN FI Array Accesso alle componenti a[i] in Java: dereferenziamento della variabile a e indirizzamento della prima cella che rappresenta la variabile i ma dell'array. u in C: –valutazione dell'espressione a+i, con le regole dellaritmetica dei puntatori, che produce l'indirizzo della prima cella che rappresenta la variabile i ma dell'array
AN FI Array A[i] in C int a[3] = {10,20,30}; a [2] : valore della cella a +2 = + 2 = 30 a a[0] a[1] a[2]
AN FI Array Trasferimento di array a funzioni u Sia in C che in Java gli argomenti delle funzioni possono essere dichiarati come array tipoOut f(tipoIn m[],int n){ …} m puo ricevere un qualunque array di elementi di tipo compatibile con tipoIn di dimensione fisica inferiore o uguale al valore attuale specifcato per n
AN FI Array Trasferimento di array a funzioni u I vettori non vengono mai trasferiti per copia, ne' in C ne' in Java u Sia in Java che in C si trasmette un riferimento. – sono trasferiti per copia i riferimenti
AN FI Array Esempio (java) int sumArray(int a[], int n){ retun( n==0 ) ? a[0] : a[n]+sumArray(a,n-1); }
AN FI Array SumArray (java) int testArray(){ int v1[] = {10,20,30}; int v2[] = {10,20,30,40}; return sumArray(v1,v1.length-1) + sumArray(v2,v2.length-1) ; }
AN FI Array Versione con processo iterativo int sumArray(int a[],int n, int v){ //v e la somma degli elementi dallultimo ad a[n+1] // inizialmente, n vale a.length-1, v vale 0 if( n==0 ) return a[0]+v; else return sumArray(a,n-1,a[n]+v); }
AN FI Array Valutazione di un polinomio a n * x n + a n-1 * x n a 1 * x + a 0 * x 0 = (... ( ( a n *x + a n-1 ) *x + a n-2 ) * x a 1 )* x + a 0 v = a n ; v = v * x + a i per i = n-1,…,0
AN FI Array Valutazione di un polinomio (java) double horner(double x,double[] a){ return pol(x,a,a.length-1,a[a.length-1]); }
AN FI Array Lalgoritmo di horner double pol(double x,double[] a, int i, double v){ //x :valore della variabile //a :vettore dei coefficienti //i :indice coefficiente corrente in a che ha determinato v //v :valore iniziale return (i==0) ? v : pol(x,a,i-1,v*x+a[i-1]); }
AN FI Array Array come risultati di funzione u In C una funzione non puo' restituire come informazione di uscita un array. u In Java cio e possibile int[] theSame( int a[] ){ return a; } –la funzione restituisce (il riferimento al) l'array ricevuto in ingresso