Un array
[1] o vettore è una struttura dati complessa usata in molti
linguaggi di programmazione e chiaramente ispirata alla nozione
matematica di
vettore. Più precisamente, l'array è in genere classificato come un
costruttore di tipo: in altre parole, esso consente di definire nuovi
tipi di dati a partire da (come aggregati di valori di) tipi preesistenti.
Si può immaginare un array come una sorta di
casellario, le cui caselle sono dette celle dell'array stesso. Ciascuna delle celle si comporta come una
variabile tradizionale; tutte le celle sono variabili di uno stesso tipo preesistente, detto tipo base dell'array. Si parlerà perciò di tipi come "array di interi", "array di stringhe", "array di caratteri" e così via. In alcuni linguaggi, la dimensione dell'array (ovvero il numero celle di cui esso è composto) viene considerato parte della definizione del tipo array; in tal caso, si parlerà più precisamente di tipi come "array di 100 caratteri" o "array di 10 interi".
Ciascuna delle celle dell'array è identificata da un valore di indice. L'indice è generalmente numerico e i valori che gli indici possono assumere sono numeri interi contigui che partono da 0 o da 1. Si potrà quindi parlare della cella di indice 0, di indice 1, e, in generale, di indice N, dove N è un intero compreso fra 0 (o 1) e il valore massimo per gli indici dell'array.
Ecco un esempio, che si serve della sintassi
C (simile, comunque, a quella di molti altri linguaggi) per definire e valorizzare un array:
int vettore[10]; // definisce "vettore" come array di 10 elementi interi
vettore[0] = 0; //
assegna il valore "0" alla cella di indice 0
vettore[1] = 1;
vettore[2] = 1;
vettore[3] = 2;
vettore[4] = 3;
(Il vettore sopra indicato contiene i primi cinque
numeri di Fibonacci).
Alcuni linguaggi ammettono indici di tipo non numerico, per esempio stringhe. Si parla in questo caso di
hash table, o di
array associativo, perché ogni valore stringa utilizzato come indice viene associato a un valore dell'array. Vediamo un esempio in linguaggio
PHP:$persona["nome"] = "Mario";
$persona["cognome"] = "Rossi";
$persona["eta"] = 32;
Come si vede, l'esempio è molto simile al precedente; l'unica differenza rilevante (se si esclude una piccola differenza puramente sintattica tra i linguaggi) è che l'indice dell'array è di tipo stringa. Inoltre, il lettore esperto potrà osservare che in PHP non esiste il vincolo di un "tipo base" fissato per tutte le celle dell'array: alle prima due è stata assegnata una
stringa, alla terza un
numero intero.
È infine da segnalare che un array (sia esso associativo o meno) può avere più di una dimensione. Nel caso un array abbia più dimensioni (specialmente nel caso bidimensionale), esso viene spesso definito "matrice". La differenza è che una matrice ha due (o più) indici (ogni indice è una dimensione) e ogni elemento è identificato dalla combinazione di valori di tutti gli indici del vettore.
Ecco un esempio:
$persona[0]["nome"] = "Mario";
$persona[0]["cognome"] = "Rossi";
$persona[1]["nome"] = "Giorgio";
$persona[1]["cognome"] = "Bianchi";
In questo caso ogni valore corrisponde a una caratteristica di una certa persona. Il primo indice, in questo caso numerico, identifica una persona. Il secondo indice, in questo caso una stringa, indica la caratteristica in questione. Di conseguenza per accedere a un elemento non è sufficiente il primo indice, perché non indica quale caratteristica ci serve; ma nemmeno il secondo, perché non indica a quale persona ci stiamo riferendo. È dunque la combinazione di entrambi gli indici a identificare un valore.
Un array a due dimensioni è visualizzabile come una tabella, in cui la prima colonna contiene i valori di un indice, la prima riga i valori di un altro indice e le singole celle i vari elementi. Per gli stessi principi, se ha tre dimensioni è visualizzabile come un cubo. Una matrice potrebbe contenere anche più di tre indici, ma ciò avviene solo in casi molto particolari, per esempio in applicazioni scientifiche o di
datawarehousingArray e strutture di controlloLa maggior parte dei programmi che utilizzano array si servono della
struttura di controllo "
cicli for" per attraversare gli array, ovvero per accedere sequenzialmente alle celle. Il ciclo for si presta molto naturalmente all'uso combinato dell'array proprio perché consente di specificare un tipo particolare di
iterazione di un certo insieme di istruzioni, controllato da un indice che assume un insieme di valori solitamente interi e contigui. Per esempio, il codice Java per stampare i contenuti di un array di 100 interi potrebbe essere come segue:
for(int i=0; i<100; i=i+1) // per i crescente con passo 1 da 0 a 99
System.out.println(vettore[i]); // stampa la i-esima cella
da wikipedia.org