L12 Programmazione1 Array - Parte2
L12 Programmazione1 Array - Parte2
2023/2024
Programmazione 1
Turno 2
Simone Bianco
A.A. 2023/2024
double var=0.1;
double[] a= new double[10];
int indice=4;
● Variabili indicizzate come a[3] e a[indice] possono essere usate come argomenti di metodo1:
metodo1(a[3]);
metodo1(a[indice]);
metodo1(var);
Array come argomenti di un metodo
● Il modo con cui si specifica che l’argomento di un metodo è un array è simile al modo con cui si dichiara
un array
Array come argomenti di un metodo
● Nota – nell’intestazione del metodo si deve specificare il tipo base dell’array, ma non
la lunghezza
● Infatti può essere passato al metodo un array di qualunque lunghezza (ammesso che
il tipo base dell’array sia lo stesso).
● Quando si passa un intero array come argomento ad un metodo, non devono essere
usate le parentesi quadre
main {…
double a = 60000;
double b = 30000;
double c; c ?
c = media (a,b); b 30000
…}
a 60000
stack heap
Passaggio di parametri – tipo primitivo
m 0?
main {… 30000
c2
double a = 60000;
c1 60000
double b = 30000;
double c; c ?
c = media (a,b); b 30000
…}
a 60000
stack heap
Passaggio di parametri – tipo primitivo
m 45000
0
main {… 30000
c2
double a = 60000;
c1 60000
double b = 30000;
double c; c ?
c = media (a,b); b 30000
…}
a 60000
stack heap
Passaggio di parametri – tipo primitivo
main {…
double a = 60000;
double b = 30000;
double c; c 45000?
c = media (a,b); b 30000
…}
a 60000
stack heap
Passaggio di parametri – tipo non primitivo
main {…
int[] a; int[] b;
double c = 0; 30000
30000 b[0]
a = new int[1];
a[0]= 60000;
c 0
b = new int[1];
b[0] = 30000; b
c = media (a,b);
…} a
stack heap
Passaggio di parametri – tipo non primitivo
m 45000?
main {…
int[] a; int[] b; p2
double c = 0; 30000
30000 b[0]
a = new int[1]; p1
a[0]= 60000;
c 0
b = new int[1];
b[0] = 30000; b
c = media (a,b);
…} a
stack heap
Passaggio di parametri – tipo non primitivo
m 45000?
main {…
int[] a; int[] b; p2
double c = 0; 30000
2000 b[0]
a = new int[1]; p1
a[0]= 60000;
c 0
b = new int[1];
b[0] = 30000; b
c = media (a,b);
…} a
stack heap
Passaggio di parametri – tipo non primitivo
main {…
int[] a; int[] b;
double c = 0; 30000
2000 b[0]
a = new int[1];
a[0]= 60000;
c 45000
0
b = new int[1];
b[0] = 30000; b
c = media (a,b);
…} a
stack heap
Argomenti del metodo main
● Per questo motivo le variabili di tipo array sono dette di tipo riferimento (reference
type)
● Si specifica il tipo restituito dal metodo allo stesso modo con cui si specifica
un parametro di tipo array
Array multidimensionali
Array multidimensionali
Supponiamo di voler memorizzare in qualche tipo di array la seguente tabella di valori…
Array multidimensionali
Per quanto visto finora l’unica possibilità sarebbe “srotolarla” in un array di lunghezza 60
Array multidimensionali
Per quanto visto finora l’unica possibilità sarebbe “srotolarla” in un array di lunghezza 60
t[6] t[…]
t[59]
Array multidimensionali
Sarebbe decisamente più comodo avere a disposizione 2 indici, uno per le righe e uno per le
colonne
Array multidimensionali
● Array che hanno esattamene due indici possono essere visualizzati su un foglio come
tabelle bidimensionali e vengono chiamati array bidimensionali
● Per convenzione si attribuisce il primo indice alla numerazione delle righe e il secondo alle
colonne: nome_array[indice_riga][indice_colonna]
● Gli array con più indici vengono generalmente chiamati array multidimensionali
● È possible scansionare gli elementi di un array bidimensionale con due cicli innestati:
Array multidimensionali
Array multi-d. come parametri e valori restituiti
Rappresentazione Java di array multi-d.
● Esempio: