La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

AN FI 98-99 Array Collezioni di dati uniformi in tipo Array.

Presentazioni simili


Presentazione sul tema: "AN FI 98-99 Array Collezioni di dati uniformi in tipo Array."— Transcript della presentazione:

1 AN FI 98-99 Array Collezioni di dati uniformi in tipo Array

2 AN FI 98-99 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

3 AN FI 98-99 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

4 AN FI 98-99 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]

5 AN FI 98-99 Array Inizializzazione di array in C int a[3] = {10,20,30}; inizializza il blocco di memoria associato ad a 30 a 20 10 a[0] a[1] a[2]

6 AN FI 98-99 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 20 10 a[0] a[1] a[2]

7 AN FI 98-99 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

8 AN FI 98-99 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

9 AN FI 98-99 Array Inizializzazione di array in Java a 30 20 10 a[0] a[1] a[2]

10 AN FI 98-99 Array Array name in Java il simbolo a denota una normale variabile il cui valore e' un riferimento (a un oggetto-array)

11 AN FI 98-99 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

12 AN FI 98-99 Array A[i] in C int a[3] = {10,20,30}; a [2] : valore della cella a +2 = + 2 = 30 a 20 10 a[0] a[1] a[2]

13 AN FI 98-99 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

14 AN FI 98-99 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

15 AN FI 98-99 Array Esempio (java) int sumArray(int a[], int n){ retun( n==0 ) ? a[0] : a[n]+sumArray(a,n-1); }

16 AN FI 98-99 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) ; }

17 AN FI 98-99 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); }

18 AN FI 98-99 Array Valutazione di un polinomio a n * x n + a n-1 * x n-1 +... 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

19 AN FI 98-99 Array Valutazione di un polinomio (java) double horner(double x,double[] a){ return pol(x,a,a.length-1,a[a.length-1]); }

20 AN FI 98-99 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]); }

21 AN FI 98-99 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


Scaricare ppt "AN FI 98-99 Array Collezioni di dati uniformi in tipo Array."

Presentazioni simili


Annunci Google