<< Chapter < Page | Chapter >> Page > |
Qualsiasi tipo si può usare come tipo base
per un array (
int
,
float
,
string
, ecc.). In particolare, un array può essere
tipo base per un array, in questo modo consentendo di fare arraydi array, o array bidimensionali.Un array bidimensionale si dichiara e si istanzia con
int[][]A = new int[ROWS][COLUMNS];
dove
ROWS
e
COLUMNS
conterranno i numeri
di righe e colonne che si vogliono riservare per l'array.Ogni riga è essa stessa un array, al quale si può accedere con
A[i]
, mentre all'elemento di riga
i
e colonna
j
si accede con
A[i][j]
,
che in questo caso è una variabile di tipo
int
.
Questa volta
A.length
restituisce il numero di
righe dell'array, mentre il numero di colonne si può conoscerecon
A[0].length
.
Un array, mono- o bi-dimensionale, può essere inizializzato
all'atto della creazione. Nel caso di un array a 3 righe e 4colonne ciò si può fare con
int[][] A = { { 1, 0, 12, -1 },
{ 7, -3, 2, 5 },
{ -5, -2, 2, -9 }
};
Così come gli array monodimensionali vengono scanditi
agevolmente con un ciclo
for
, così gli array
bidimensionali vengono scanditi con due cicli
for
annidati, uno che scandisce le righe e uno che scandisce le
colonne:
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLUMNS; j++) {
A[i][j] = ...
}
}
Ad esempio, nel codice seguente viene inizializzato un array
bidimensionale di colori, e successivamente questa tavolozzadi colori viene visualizzata.
int ROWS = 4;
int COLUMNS = 4;
color[][] grid = new color[ROWS][COLUMNS];
for (int row = 0; row < ROWS; row++) {
for (int col = 0; col < COLUMNS; col++) {
grid[row][col] = color(row*60, 0, col*60);
}
}
for (int row = 0; row < ROWS; row++) {
for (int col = 0; col < COLUMNS; col++) {
fill(grid[row][col]);
rect(row*25, col*25, 25, 25);
}
}
Si visualizzi una tavolozza di 4x4 colori che ruota in senso orizzontale, come se fosse la superficie di uncilindro che ruota intorno all'asse verticale.
int ROWS = 4;
int COLUMNS = 4;
color[][] grid = new color[ROWS][COLUMNS];
int step;
void setup(){
for (int row = 0; row < ROWS; row++) {
for (int col = 0; col < COLUMNS; col++) {
grid[row][col] = color(row*60, 0, col*60);
}
frameRate(5);
noStroke();
}
for (int row = 0; row < ROWS; row++) {
for (int col = 0; col < COLUMNS; col++) {
fill(grid[row][col]);
rect(row*25, col*25, 25, 25);
}
}
}
void draw(){
for (int row = 0; row < ROWS; row++) {
for (int col = 0; col < COLUMNS; col++) {
fill(grid[(row+step)%COLUMNS][col]);
rect(row*25, col*25, 25, 25);
}
}
step = (step+1)%COLUMNS;
}
Gli array multidimensionali di tipo
float
o
double
sono utilizzati in moltissimi contesti, in
quanto sono di supporto alla
Aritmetica delle Matrici . Questa
aritmetica consente di rappresentare ed effettuare in manieracompatta operazioni su array di numeri. Ad esempio, per
invertire l'ordine dei numeri di un array di 4 elementi èsufficiente pre-moltiplicarlo per una matrice
oppure, per scambiare i numeri in posizione pari con quelli in posizione dispari si può usare la matrice
Notification Switch
Would you like to follow the 'Programmazione di artefatti interattivi' conversation and receive update notifications?