Gli array sono disponibili nella maggior parte dei linguaggi di programmazione perché realizzano la più semplice organizzazione di strutture dati complesse.
Dichiarazione e allocazione
Iniziamo con alcune definizioni un po’ più formali ma che saranno utili per fissare i concetti essenziali.
Definizione Un array è una struttura dati che permette di rappresentare sequenze di dati dello stesso tipo. Gli elementi che compongono un array possono essere trovati specificando la loro posizione.
T[] var = new T[n];
definisce un array di nome var e di tipo T di n elementi, gli elementi dell’array sono
var[0], var[1], ... , var[n-1]
n è chiamato anche dimensione o lunghezza dell’array;
è possibile anche l’inizializzazione degli elementi contemporaneamente alla definizione
T[] var = {values_0,value_1, ... ,value_n}
Quindi, abbiamo i valori dei singoli elementi che equivalgono a
var[0] = value_0 ;var[1] = value_1 ;...var[n] = value_n ;
Altrimenti, la dichiarazione può avvenire in 2 fasi
T[] var; var = new T[n] ;
oppure
var = new T[] { value_0,value_1, ..., value_n }
ogni elemento dell’array può essere usato allo stesso modo di una variabile
dato l’array var { value_0,value_1, … , value_n }
var[0] = value_0 ; var[1] = value_1 ;
Posso modificare il secondo elemento dell’array, cioè var[1] con il valore new_value_1 con l’istruzione
var[1] = new_value_1 ;
trasformando var in { value_0,new_value_1, … , value_n }
Posso assegnare ad una variabile x di tipo compatibile con T l’i-esimo valore di var semplicemente così
T x = var[i] ;
in questo modo x assume l’i-esimo valore dell’array var, ovviamente i deve avere un valore compreso tra 0 e var.length - 1 che rappresenta la lunghezza dell’array var.
Array multidimensionali
Gli array visti finora sono monodimensionali, cioè sono sequenze lineari di dati omogenei che possono essere associate a un modello vettoriale. In realtà, possiamo avere anche array multidimensionali in cui ogni elemento è identificato non da un singolo indice ma da un numero maggiore di indici.
per esempio
T[][] var = new T[n][m];
le considerazioni fatte sopra per i tipi monodimensionali sono valide, per inizializzare il valore della posizione o coordinate i,j posso scrivere
var[i][j] = a_value ;
Per un’inizializzazione rapida (smart), però, posso anche fare
T[][] var = { {value_0, value_1, ... , value_n} , { value_0, value_1, ... , value_m } }
