Array multidimensionali con numero determinato di elementi
Introduzione
Una "Matrice" (o anche Vettore multidimensionale o array multidimensionale) è un insieme di numeri ordinati secondo righe e colonne di ordine m x n, tale da formare una tabella di elementi, ove m e n sono numeri interi e stabiliti. In particolare m è il numero delle righe e n il numero delle colonne.
Se m = n la Matrice viene definita: quadrata.
Un elemento della Matrice occupa la posizione individuata dall'intersezione tra la m-esima riga e la n-esima colonna della Matrice.
Se la Matrice è formata da una riga ed una colonna, allora è considerata un Vettore. Se la Matrice è formata da una sola riga e da più colonne, allora la Matrice è definita: "Matrice riga". Se la Matrice è formata da più righe, ma da una sola colonna, allora la Matrice è definita: "Matrice colonna".
Dichiarazione ed inizializzazione delle Matrici
In Gambas una Matrice può essere locale o globale e viene dichiarata impostando le sue dimensioni tra parentesi quadre alla destra del tipo di dato di appartenenza secondo la seguente sintassi:
DIM Identificatore AS [ NEW ] TipoDati [ dimensioni degli elementi della matrice ]
Esempio di array costituito da tre dimensioni, la prima delle quali è formata da 2 elementi, la seconda da 5 e la terza da 4:
Dim array As New Integer[2, 5, 4]
ovviamente nel caso di dichiarazione di una variabile array globale:
Private array As New Integer[2, 5, 4] Public Sub Main() ......
Nei casi sopra mostrati la dichiarazione prevede un array multidimensionale contenente tre array monodimensionali, che a loro volta contengono un numero determinato di valori (elementi ) di tipo Intero:
ARRAY MULTIDIMENSIONALE | |||||
1° array monodimensionale | 1° elemento | 2° elemento | |||
2° array monodimensionale | 1° elemento | 2° elemento | 3° elemento | 4° elemento | 5° elemento |
3° array monodimensionale | 1° elemento | 2° elemento | 3° elemento | 4° elemento |
Assegnare un valore a un Elemento di un array multidimensionale
Per assegnare un valore ad un Elemento di array multidimensionale, si dovrà individuare l'Elemento da valorizzare, tenendo conto del suo numero d'Indice:
Public Sub Main() Dim ar As New Integer[2, 2] ar[0, 0] = 0 ar[0, 1] = 1 ar[1, 0] = 10 ar[1, 1] = 11 Print ar[0, 0] Print ar[0, 1] Print ar[1, 0] Print ar[1, 1] End
Di seguito un altro esempio, nel quale la valorizzazione e la lettura di verifica avverrà con un ciclo "FOR":
Public Sub Main() Dim bb As New Byte[3, 2] Dim x, y As Byte ' Poiché l'array è bidimensionale, ci serviamo di due cicli "FOR" per assegnare un valore a ciascun suo elemento: For x = 0 To 2 For y = 0 To 1 bb[x, y] = x + y Next Next ' Infine legge i valori assegnati all'array: For x = 0 To 2 For y = 0 To 1 Print bb[x, y] Next Print "------" Next End
Limite massimo del numero di dimensioni in un array multidimensionale
La dimensione di una Matrice in Gambas non può essere superiore ad otto.
Esempio:
Public Sub Main() ' Viene dichiarata una matrice a 8 dimensioni: Dim bb As New Byte[3, 4, 2, 2, 3, 20, 33, 5] ......
Conoscere il numero delle dimensioni e degli elementi contenuti da un array multidimensionale
Per conoscere il numero delle dimensioni di un array multidimensionale, è possibile usare la Proprietà ".Bounds.Count":
Public Sub Main() ' Viene dichiarata una matrice a 3 dimensioni, ciascuna delle quali ha un numero diverso di elementi: Dim bb As New Byte[3, 4, 2] Print bb.Bounds.Count End
Per conoscere la quantità complessiva degli elementi posseduti dall'array multidimensionale, si deve usare la Proprietà ".Count":
Public Sub Main() ' Viene dichiarata una matrice a 3 dimensioni, ciascuna delle quali ha un numero diverso di elementi: Dim bb As New Byte[3, 4, 2] Print bb.Count End
Per conoscere la quantità di una singola dimensione dell'array multidimensionale, si deve usare la Proprietà ".Count[indice_delle_dimensioni_della_matrice]":
Public Sub Main() ' Viene dichiarata una matrice a 3 dimensioni, ciascuna delle quali ha un numero diverso di elementi: Dim bb As New Byte[3, 4, 2] Print bb.Count[0] Print bb.Count[1] Print bb.Count[2] End