Differenze tra le versioni di "Array multidimensionali con numero indeterminato di elementi"

Da Gambas-it.org - Wikipedia.
Riga 2: Riga 2:
  
 
==Dichiarazione di un array multidimensionale di numero non definito di elementi==
 
==Dichiarazione di un array multidimensionale di numero non definito di elementi==
In un array a ''due'' dimensioni la prima dimensione è l'array multidimensionale in quanto tale, destinata a contenere uno o più ''elementi'' di tipo array. Tali elementi rappresentano la ''seconda'' e ultima dimensione e sono destinati, pertanto, a contenere i dati veri e propri previsti dal tipo.
+
L'array a numero non-determinato di elementi può definire due o più livelli di array.
 +
<BR>Il primo livello è costituito da due o più array monodimensionali;
 +
<BR>Il secondo livello contiene due o più array monodimensionali, ossia array di primo livello;
 +
<BRIl terzo livello contiene due o più array di secondo livello, ossia array di array;
 +
<BR>e così via.
 +
 
 +
Così, ad esempio, in un array a ''due'' dimensioni la prima dimensione è costituita da due o più array monodimensionali contenenti i dati previsti dal tipo; la seconda dimensione contiene la predetta prima dimensione, ossia due o più elementi rappresentati dagli array monodimensionali.
  
 
Un array a due dimensioni di numero non definito di elementi, si dichiara nel modo seguente (esempio di ''Array'' di tipo Stringa contenente ''Array'' di tipo Stringa):
 
Un array a due dimensioni di numero non definito di elementi, si dichiara nel modo seguente (esempio di ''Array'' di tipo Stringa contenente ''Array'' di tipo Stringa):
Riga 13: Riga 19:
  
 
Verificando, quindi, la quantità di elementi (che contengono array) presenti nel caso precedente all'interno della variabile array, si avrà il risultato di: 3
 
Verificando, quindi, la quantità di elementi (che contengono array) presenti nel caso precedente all'interno della variabile array, si avrà il risultato di: 3
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim arrArr As String[][]
 
   Dim arrArr As String[][]
 
   
 
   
  arrArr = <FONT color=red><B>[</b></font><FONT color=blue>[</font>"a", "b"<FONT color=blue>]</font>, <FONT color=blue>[</font>"c", "d"<FONT color=blue>]</font>, <FONT color=blue>[</font>"e", "f"<FONT color=blue>]</font><FONT color=red><B>]</b></font>
+
  arrArr = <FONT color=red><B>[</b></font><FONT color=blue>[</font>"a", "b"<FONT color=blue>]</font>, <FONT color=blue>[</font>"c", "d"<FONT color=blue>]</font>, <FONT color=blue>[</font>"e", "f"<FONT color=blue>]</font><FONT color=red><B>]</b></font>
 
   
 
   
  Print arrArr.Count
+
  Print arrArr.Count
 
   
 
   
  '''End'''
+
  End
  
 
Per sapere la quantità di elementi contenuti in un elemento array della variabile array, è necessaria l'istanziazione ''esplicita'' dell'array mediante la parola-chiave ''New'':
 
Per sapere la quantità di elementi contenuti in un elemento array della variabile array, è necessaria l'istanziazione ''esplicita'' dell'array mediante la parola-chiave ''New'':
   '''Public''' Sub Main()
+
   Public Sub Main()
 
   
 
   
 
   Dim arrArr As New String[][]
 
   Dim arrArr As New String[][]
 
   
 
   
  arrArr = <FONT color=red><B>[</b></font><FONT color=blue>[</font>"a", "b"<FONT color=blue>]</font>, <FONT color=blue>[</font>"c", "d"<FONT color=blue>]</font>, <FONT color=blue>[</font>"e", "f"<FONT color=blue>]</font><FONT color=red><B>]</b></font>
+
  arrArr = <FONT color=red><B>[</b></font><FONT color=blue>[</font>"a", "b"<FONT color=blue>]</font>, <FONT color=blue>[</font>"c", "d"<FONT color=blue>]</font>, <FONT color=blue>[</font>"e", "f"<FONT color=blue>]</font><FONT color=red><B>]</b></font>
 
   
 
   
 
  <FONT color=gray>' ''Vogliamo sapere la quantità di elementi presenti nel 2° elemento (che è un array) della variabile array bidimensionale:''</font>
 
  <FONT color=gray>' ''Vogliamo sapere la quantità di elementi presenti nel 2° elemento (che è un array) della variabile array bidimensionale:''</font>
  Print arrArr[1].Count
+
  Print arrArr[1].Count
 
   
 
   
  '''End'''
+
  End
 
Il risultato sarà: 2.
 
Il risultato sarà: 2.
  
  
 
Per vedere il contenuto di ciascun elemento:
 
Per vedere il contenuto di ciascun elemento:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim arrArr As String[][] = <FONT color=red><B>[</b></font><FONT color=blue>[</font>"a", "b"<FONT color=blue>]</font>, <FONT color=blue>[</font>"c", "d"<FONT color=blue>]</font>, <FONT color=blue>[</font>"e", "f"<FONT color=blue>]</font><FONT color=red><B>]</b></font>
 
   Dim arrArr As String[][] = <FONT color=red><B>[</b></font><FONT color=blue>[</font>"a", "b"<FONT color=blue>]</font>, <FONT color=blue>[</font>"c", "d"<FONT color=blue>]</font>, <FONT color=blue>[</font>"e", "f"<FONT color=blue>]</font><FONT color=red><B>]</b></font>
   Dim j As Byte
+
   Dim b As Byte
 
   
 
   
  For j = 0 To arrArr[0].Max
+
  For b = 0 To arrArr[0].Max
    Print arrArr[0][j], arrArr[1][j], arrArr[2][j]
+
    Print arrArr[0][b], arrArr[1][b], arrArr[2][b]
  Next
+
  Next
 
   
 
   
  '''End'''
+
  End
  
 
===Eliminare un elemento di una dimensione===
 
===Eliminare un elemento di una dimensione===
 
Per eliminare un elemento di una dimensione dell'array:
 
Per eliminare un elemento di una dimensione dell'array:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim arr As Integer[][]
 
   Dim arr As Integer[][]
Riga 69: Riga 75:
 
   Print arr[2][1]
 
   Print arr[2][1]
 
   
 
   
  '''End'''
+
  End
  
  
Riga 88: Riga 94:
 
==Aggiungere elementi dinamicamente ad un array multidimensionale==
 
==Aggiungere elementi dinamicamente ad un array multidimensionale==
 
Se l'array bidimensionale non ha un numero definito dei suoi elementi, esso è un vettore ''dinamico'', ed è possibile aggiungere suoi elementi come segue:
 
Se l'array bidimensionale non ha un numero definito dei suoi elementi, esso è un vettore ''dinamico'', ed è possibile aggiungere suoi elementi come segue:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim bb As New Byte[][]
 
   Dim bb As New Byte[][]
Riga 104: Riga 110:
 
   Print bb[2][0], bb[2][1]
 
   Print bb[2][0], bb[2][1]
 
   
 
   
  '''End'''
+
  End
 
Si sarà dunque costruito il seguente vettore bidimensionale:
 
Si sarà dunque costruito il seguente vettore bidimensionale:
 
  <FONT color=red><B>[</b></font> <FONT color=blue><B>[</b></font>1<FONT color=blue><B>]</b></font>, <FONT color=blue><B>[</b></font>2<FONT color=blue><B>]</b></font>, <FONT color=blue><B>[</b></font>3, 33<FONT color=blue><B>]</b></font> <FONT color=red><B>]</b></font>
 
  <FONT color=red><B>[</b></font> <FONT color=blue><B>[</b></font>1<FONT color=blue><B>]</b></font>, <FONT color=blue><B>[</b></font>2<FONT color=blue><B>]</b></font>, <FONT color=blue><B>[</b></font>3, 33<FONT color=blue><B>]</b></font> <FONT color=red><B>]</b></font>
Riga 111: Riga 117:
  
 
oppure:
 
oppure:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim bb As New Byte[][]
 
   Dim bb As New Byte[][]
 
        
 
        
 
  <FONT Color=gray>' ''Viene aggiunto il 1° elemento della prima dimensione:''</font>
 
  <FONT Color=gray>' ''Viene aggiunto il 1° elemento della prima dimensione:''</font>
  <FONT Color=#B22222>bb.Push([])</font>
+
  <FONT Color=#B22222>bb.Push([])</font>
 
    
 
    
 
  <FONT Color=gray>' ''Vengono aggiunti degli elementi al nuovo 1° elemento della prima dimensione:''</font>
 
  <FONT Color=gray>' ''Vengono aggiunti degli elementi al nuovo 1° elemento della prima dimensione:''</font>
  bb[0].Push(10)
+
  bb[0].Push(10)
  bb[0].Push(11)
+
  bb[0].Push(11)
 
    
 
    
  Print bb[0][0]
+
  Print bb[0][0]
  Print bb[0][1]
+
  Print bb[0][1]
 
    
 
    
 
  <FONT Color=gray>' ''Viene aggiunta un ulteriore elemento alla prima dimensione:''</font>
 
  <FONT Color=gray>' ''Viene aggiunta un ulteriore elemento alla prima dimensione:''</font>
  <FONT Color=#B22222>bb.Push([])</font>
+
  <FONT Color=#B22222>bb.Push([])</font>
 
    
 
    
 
  <FONT Color=gray>' ''Vengono aggiunti degli elementi al nuovo 2° elemento della prima dimensione:''</font>
 
  <FONT Color=gray>' ''Vengono aggiunti degli elementi al nuovo 2° elemento della prima dimensione:''</font>
  bb[1].Push(20)
+
  bb[1].Push(20)
  bb[1].Push(21)
+
  bb[1].Push(21)
 
+
 
  Print bb[1][0]
+
  Print bb[1][0]
  Print bb[1][1]
+
  Print bb[1][1]
 
    
 
    
  '''End'''
+
  End
 
altro esempio:
 
altro esempio:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
+
 
   Dim bb As New Byte[][]
 
   Dim bb As New Byte[][]
 
   Dim a, b As Byte
 
   Dim a, b As Byte
Riga 151: Riga 157:
 
     Next
 
     Next
 
   Next
 
   Next
 
+
 
 
 
  <FONT Color=gray>' ''Verifica:''</font>
 
  <FONT Color=gray>' ''Verifica:''</font>
 
   For a = 0 To 3
 
   For a = 0 To 3
Riga 161: Riga 166:
 
   Next
 
   Next
 
    
 
    
  '''End'''
+
  End
  
  
Riga 168: Riga 173:
  
 
Esempio:
 
Esempio:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim ss As New String[][]
 
   Dim ss As New String[][]
 
   Dim s1, s2 As New String[]
 
   Dim s1, s2 As New String[]
 
    
 
    
+
  <FONT color=gray>' ''Assegna dei valori alle due variabili array che saranno contenute nella variabile array principale:''</font>
  <FONT color=gray>' ''Assegnamo dei valori alle due variabili array''
+
  s1 = ["a", "b"]
' ''che saranno contenute nella variabile array principale:''</font>
+
  s2 = ["c", "d", "e"]
  s1 = ["a", "b"]
 
  s2 = ["c", "d", "e"]
 
 
    
 
    
 
  <FONT color=gray>' ''Assegnamo le due precedenti variabili array alla variabile array principale:''</font>
 
  <FONT color=gray>' ''Assegnamo le due precedenti variabili array alla variabile array principale:''</font>
  <FONT color=#B22222>ss = [s1, s2]</font>
+
  <FONT color=#B22222>ss = [s1, s2]</font>
 
   
 
   
  <FONT color=gray>' ''Andiamo a vedere la quantità di elementi contenuti dalla variabile array principale,''
+
  <FONT color=gray>' ''Andiamo a vedere la quantità di elementi contenuti dalla variabile array principale, nonché da ciascuna variabile array individuandole all'interno della variabile array principale:''</font>
' ''nonché da ciascuna variabile array individuandole all'interno della variabile array principale:''</font>
+
  Print ss.Count, ss[0].Count, ss[1].Count
  Print ss.Count, ss[0].Count, ss[1].Count
 
 
   
 
   
  '''End'''
+
  End
  
 
oppure più dinamicamente:
 
oppure più dinamicamente:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim ss As New String[][]
 
   Dim ss As New String[][]
Riga 195: Riga 197:
 
    
 
    
 
   
 
   
  <FONT color=gray>' ''Assegnamo dei valori ale due variabili array''
+
  <FONT color=gray>' ''Assegnamo dei valori ale due variabili array che saranno contenute nella variabile array principale:''</font>
' ''che saranno contenute nella variabile array principale:''</font>
+
  s1 = ["a", "b"]
  s1 = ["a", "b"]
+
  s2 = ["c", "d", "e"]
  s2 = ["c", "d", "e"]
 
 
    
 
    
 
  <FONT color=gray>' ''Assegnamo le due precedenti variabili array alla variabile array principale:''</font>
 
  <FONT color=gray>' ''Assegnamo le due precedenti variabili array alla variabile array principale:''</font>
  <FONT color=#B22222>ss.Push(s1)
+
  <FONT color=#B22222>ss.Push(s1)
  ss.Push(s2)</font>
+
  ss.Push(s2)</font>
 
   
 
   
  <FONT color=gray>' ''Andiamo a vedere la quantità di elementi contenuti dalla variabile array principale,''
+
  <FONT color=gray>' ''Andiamo a vedere la quantità di elementi contenuti dalla variabile array principale, nonché da ciascuna variabile array individuandole all'interno della variabile array principale:''</font>
' ''nonché da ciascuna variabile array individuandole all'interno della variabile array principale:''</font>
+
  Print ss.Count, ss[0].Count, ss[1].Count
  Print ss.Count, ss[0].Count, ss[1].Count
 
 
   
 
   
  '''End'''
+
  End
  
  
 
Vediamo anche quest'altro esempio:
 
Vediamo anche quest'altro esempio:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim vettore As Byte[]
 
   Dim vettore As Byte[]
Riga 218: Riga 218:
 
   Dim b As Byte
 
   Dim b As Byte
 
    
 
    
  For b = 2 To 9
+
  For b = 2 To 9  
 +
<FONT Color=gray>' ''Crea un semplice vettore monodimensionale...''</font>
 +
    vettore = New Byte[b]
 +
<FONT Color=gray>' ''...e lo aggiungiamo al array multidimensionale:''</font>
 +
    multi.Push(vettore)
 +
  Next
 +
 
 +
 
 +
<FONT Color=gray>' ''Assegna un valore ad un elemento di un vettore contenuto dall'array multidimensionale e verifichiamo in console:''</font>
 +
  multi[7][5] = 24
 
    
 
    
<FONT Color=gray>' ''Creiamo un semplice vettore monodimensionale...''</font>
+
  Print multi[7][5]
    vettore = New Byte[b]
+
 
+
  End
<FONT Color=gray>' ''...e lo aggiungiamo al array multidimensionale:''</font>
 
    multi.Push(vettore)
 
   
 
  Next
 
   
 
<FONT Color=gray>' ''Assegnamo un valore ad un elemento di un vettore contenuto dall'array multidimensionale e verifichiamo in console:''</font>
 
  multi[7][5] = 24
 
   
 
  Print multi[7][5]
 
   
 
  '''End'''
 
 
 
  
  
Riga 247: Riga 244:
  
 
Esempio:
 
Esempio:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim ss As New String[][][]
 
   Dim ss As New String[][][]
 
 
   
 
   
 
   ss = <FONT color=red><B>[</b></font><FONT color=blue><B>[</b></font>["a", "b"], ["c", "d"], ["e", "f"]<FONT color=blue><B>]</b></font>, <FONT color=blue><B>[</b></font>["g", "h"], ["i", "l", "m", "n"], ["o", "p"]<FONT color=blue><B>]</b></font><FONT color=red><B>]</b></font>
 
   ss = <FONT color=red><B>[</b></font><FONT color=blue><B>[</b></font>["a", "b"], ["c", "d"], ["e", "f"]<FONT color=blue><B>]</b></font>, <FONT color=blue><B>[</b></font>["g", "h"], ["i", "l", "m", "n"], ["o", "p"]<FONT color=blue><B>]</b></font><FONT color=red><B>]</b></font>
 
   
 
   
  <FONT color=gray>' ''Vogliamo sapere la quantità di elementi (che sono array) presenti nella variabile array''
+
  <FONT color=gray>' ''Vogliamo sapere la quantità di elementi (che sono array) presenti nella variabile array (il risultato sarà in questo caso "2"):</font>
' (il risultato sarà in questo caso "2"):</font>
+
  Print ss.Count
  Print ss.Count
 
 
   
 
   
  <FONT color=gray>' ''Vogliamo sapere la quantità di elementi (che sono array) presenti nel secondo elemento della variabile array
+
  <FONT color=gray>' ''Vogliamo sapere la quantità di elementi (che sono array) presenti nel secondo elemento della variabile array (il risultato in questo caso sarà "3"):''</font>
' (il risultato in questo caso sarà "3"):''</font>
+
  Print ss[1].Count
  Print ss[1].Count
 
 
   
 
   
  <FONT color=gray>' ''Volendo scendere ancora di livello, per conoscere la quantità di elementi presenti nel secondo elemento''
+
  <FONT color=gray>' ''Volendo scendere ancora di livello, per conoscere la quantità di elementi presenti nel secondo elemento'' del secondo elemento superiore della variabile array (il risultato in questo caso sarà "4"):''</font>
' del secondo elemento superiore della variabile array (il risultato in questo caso sarà "4"):''</font>
+
    
   Print ss[1][1].Count
+
  Print ss[1][1].Count
 
   
 
   
  '''End'''
+
  End
  
  
Riga 276: Riga 270:
 
=Array che contiene insieme sia singoli valori che altri array=
 
=Array che contiene insieme sia singoli valori che altri array=
 
Per creare un vettore che contenga sia dei valori che altri vettori, è necessario usare il tipo di variabile ''Variant'':
 
Per creare un vettore che contenga sia dei valori che altri vettori, è necessario usare il tipo di variabile ''Variant'':
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim v As Variant[] = [1, 2, 3, 4]
 
   Dim v As Variant[] = [1, 2, 3, 4]
 
   
 
   
  v.Add([5, 6, 7])
+
  v.Add([5, 6, 7])
 
      
 
      
  Print v[0]
+
  Print v[0]
  Print v[1]
+
  Print v[1]
  Print v[2]
+
  Print v[2]
  Print v[3]
+
  Print v[3]
  Print v[4][0]
+
  Print v[4][0]
  Print v[4][1]
+
  Print v[4][1]
  Print v[4][2]
+
  Print v[4][2]
 
   
 
   
  v.Add([8, 9, [10, 11, 12]])
+
  v.Add([8, 9, [10, 11, 12]])
 
   
 
   
  Print v[5][0]
+
  Print v[5][0]
  Print v[5][1]
+
  Print v[5][1]
  Print v[5][2][0]
+
  Print v[5][2][0]
  Print v[5][2][1]
+
  Print v[5][2][1]
  Print v[5][2][2]
+
  Print v[5][2][2]
 
   
 
   
  '''End'''
+
  End
  
  
 
==Sostituire un valore in un elemento, contenente un singolo valore, con un array==
 
==Sostituire un valore in un elemento, contenente un singolo valore, con un array==
 
E' possibile sostituire, ovviamente in un elemento un singolo valore con un array, e viceversa:
 
E' possibile sostituire, ovviamente in un elemento un singolo valore con un array, e viceversa:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim v1, v2 As Variant[]
 
   Dim v1, v2 As Variant[]
 
   
 
   
  v1 = [1, 2, 3, 4]
+
  v1 = [1, 2, 3, 4]
  v2 = [5, 6, 7]
+
  v2 = [5, 6, 7]
 
  v1[2] = v2
 
 
   
 
   
  Print v1[0]
+
  v1[2] = v2
  Print v1[1]
 
  Print v1[2][0]
 
  Print v1[2][1]
 
  Print v1[2][2]
 
  Print v1[3]
 
 
   
 
   
'''End'''
+
  Print v1[0]
 +
  Print v1[1]
 +
  Print v1[2][0]
 +
  Print v1[2][1]
 +
  Print v1[2][2]
 +
  Print v1[3]
  
 +
End
  
  

Versione delle 19:35, 14 dic 2023

In Gambas vi sono Array (vettori) che non hanno un numero determinato degli elementi appartenenti alle loro dimensioni, e Array (vettori), ai quali viene in sede di definizione specificato il numero dei propri elementi costitutivi delle loro dimensioni.

Dichiarazione di un array multidimensionale di numero non definito di elementi

L'array a numero non-determinato di elementi può definire due o più livelli di array.
Il primo livello è costituito da due o più array monodimensionali;
Il secondo livello contiene due o più array monodimensionali, ossia array di primo livello; <BRIl terzo livello contiene due o più array di secondo livello, ossia array di array;
e così via.

Così, ad esempio, in un array a due dimensioni la prima dimensione è costituita da due o più array monodimensionali contenenti i dati previsti dal tipo; la seconda dimensione contiene la predetta prima dimensione, ossia due o più elementi rappresentati dagli array monodimensionali.

Un array a due dimensioni di numero non definito di elementi, si dichiara nel modo seguente (esempio di Array di tipo Stringa contenente Array di tipo Stringa):

Dim arrArr As String[][]   [nota 1]

Istanziazione implicita con inizializzazione esplicita

La istanziazione implicita - con inizializzazione esplicita - di un array di numero non definito di elementi sarà effettuata così:

arrArr = [["a", "b"], ["c", "d"], ["e", "f"]]


Verificando, quindi, la quantità di elementi (che contengono array) presenti nel caso precedente all'interno della variabile array, si avrà il risultato di: 3

Public Sub Main()

 Dim arrArr As String[][]

 arrArr = [["a", "b"], ["c", "d"], ["e", "f"]]

 Print arrArr.Count

End

Per sapere la quantità di elementi contenuti in un elemento array della variabile array, è necessaria l'istanziazione esplicita dell'array mediante la parola-chiave New:

 Public Sub Main()

 Dim arrArr As New String[][]

 arrArr = [["a", "b"], ["c", "d"], ["e", "f"]]

' Vogliamo sapere la quantità di elementi presenti nel 2° elemento (che è un array) della variabile array bidimensionale:
 Print arrArr[1].Count

End

Il risultato sarà: 2.


Per vedere il contenuto di ciascun elemento:

Public Sub Main()

 Dim arrArr As String[][] = [["a", "b"], ["c", "d"], ["e", "f"]]
 Dim b As Byte

 For b = 0 To arrArr[0].Max
   Print arrArr[0][b], arrArr[1][b], arrArr[2][b]
 Next

End

Eliminare un elemento di una dimensione

Per eliminare un elemento di una dimensione dell'array:

Public Sub Main()

 Dim arr As Integer[][]

 arr = [[11, 111], [22, 222], [33, 333], [44, 444]]
 Print arr.Count
 
 arr.Remove(0, 1)
 Print arr.Count, arr[0][0]
  
 Print arr[2].Count, arr[2][1]
  
 arr[2].Remove(1, 1)
 Print arr[2].Count
' Qui verrà sollevato un errore, perché è stato rimosso il 2° elemento
' di quello che era diventato il 3° elemento della prima dimensione:
 Print arr[2][1]

End


Rappresentazione delle dimensioni di un array multidimensionale di numero non definito di elementi

Va dunque precisato che durante l'uso di una variabile di tipo array, nella rappresentazione

variabile[n][n]

il numero presente nelle prime parentesi quadre di variabile[][] individua l'elemento della prima dimensione della variabile[][]. Il numero, invece, presente nelle altre due parentesi quadre di variabile[][] individua l'elemento dell'elemento della prima dimensione.

Pertanto, se abbiamo una variabile[][] (bidimensionale) così istanziata:

variabile[][] = [[11, 22, 33], [77, 88, 99]]

ponendo:

Print variabile[1][2]

con [1] è individuato il secondo elemento della prima dimensione, mentre con [2] è individuato il terzo elemento del predetto secondo elemento della prima dimensione, ossia:

[[11, 22, 33], [77, 88, 99]]


Aggiungere elementi dinamicamente ad un array multidimensionale

Se l'array bidimensionale non ha un numero definito dei suoi elementi, esso è un vettore dinamico, ed è possibile aggiungere suoi elementi come segue:

Public Sub Main()

 Dim bb As New Byte[][]

' Viene aggiunto un elemento (indice 0) alla prima dimensione, nonché il 1° elemento al predetto nuovo elemento della prima dimensione:
 bb.Push([1])
 Print bb[0][0]
  
' Viene aggiunto un altro elemento (indice 1) alla prima dimensione, nonché il 1° elemento al predetto nuovo elemento della prima dimensione:
 bb.Push([2])
 Print bb[1][0]
 
' Viene aggiunto un altro elemento (indice 2) alla prima dimensione, nonché il 1° e il 2° elemento al predetto nuovo elemento della prima dimensione:
 bb.Push([3, 33])
 Print bb[2][0], bb[2][1]

End

Si sarà dunque costruito il seguente vettore bidimensionale:

[ [1], [2], [3, 33] ]

Come si nota, la prima dimensione dell'array (quella compresa tra le parentesi quadre rosse) contiene tre elementi (ciascuno compreso da parentesi quadre blu), i quali - rappresentando la seconda dimensione - contengono uno o due elementi.


oppure:

Public Sub Main()

 Dim bb As New Byte[][]
     
' Viene aggiunto il 1° elemento della prima dimensione:
 bb.Push([])
  
' Vengono aggiunti degli elementi al nuovo 1° elemento della prima dimensione:
 bb[0].Push(10)
 bb[0].Push(11)
  
 Print bb[0][0]
 Print bb[0][1]
  
' Viene aggiunta un ulteriore elemento alla prima dimensione:
 bb.Push([])
  
' Vengono aggiunti degli elementi al nuovo 2° elemento della prima dimensione:
 bb[1].Push(20)
 bb[1].Push(21)
 
 Print bb[1][0]
 Print bb[1][1]
  
End

altro esempio:

Public Sub Main()

 Dim bb As New Byte[][]
 Dim a, b As Byte
 
 For a = 0 To 3
' Crea un elemento (ovviamente di tipo array) nella prima dimensione.
' Ossia crea la seconda dimensione che poi dovrà contenere i dati numerici.
   bb.Push([])
   For b = 0 To 5
' Inserisce i valori nell'array della seconda dimensione appena sopra creato:
     bb[a].Push(b + a)
   Next
 Next

' Verifica:
 For a = 0 To 3
   For b = 0 To 5
     Print bb[a][b]
   Next
   Print
 Next
  
End


Aggiungere dinamicamente variabili vettoriali ad un Array multidimensionale

Conseguentemente ed ovviamente tali array multidimensionali possono contenere nei loro elementi variabili array monodimensionali.

Esempio:

Public Sub Main()

 Dim ss As New String[][]
 Dim s1, s2 As New String[]
 
' Assegna dei valori alle due variabili array che saranno contenute nella variabile array principale:
 s1 = ["a", "b"]
 s2 = ["c", "d", "e"]
 
' Assegnamo le due precedenti variabili array alla variabile array principale:
 ss = [s1, s2]

' Andiamo a vedere la quantità di elementi contenuti dalla variabile array principale, nonché da ciascuna variabile array individuandole all'interno della variabile array principale:
 Print ss.Count, ss[0].Count, ss[1].Count

End

oppure più dinamicamente:

Public Sub Main()

 Dim ss As New String[][]
 Dim s1, s2 As New String[]
 

' Assegnamo dei valori ale due variabili array che saranno contenute nella variabile array principale:
 s1 = ["a", "b"]
 s2 = ["c", "d", "e"]
 
' Assegnamo le due precedenti variabili array alla variabile array principale:
 ss.Push(s1)
 ss.Push(s2)

' Andiamo a vedere la quantità di elementi contenuti dalla variabile array principale, nonché da ciascuna variabile array individuandole all'interno della variabile array principale:
 Print ss.Count, ss[0].Count, ss[1].Count

End


Vediamo anche quest'altro esempio:

Public Sub Main()
 
 Dim vettore As Byte[]
 Dim multi As New Byte[][]
 Dim b As Byte
  
 For b = 2 To 9 
' Crea un semplice vettore monodimensionale...
   vettore = New Byte[b]
' ...e lo aggiungiamo al array multidimensionale:
   multi.Push(vettore) 
 Next
 
 
' Assegna un valore ad un elemento di un vettore contenuto dall'array multidimensionale e verifichiamo in console:
 multi[7][5] = 24
  
 Print multi[7][5]

End


Array multidimensionale a tre dimensioni

Analogamente ai bidimensionali in un array a tre dimensioni la prima dimensione è l'array multidimensionale in quanto tale, destinata a contenere uno o più elementi di tipo array. Tali elementi rappresentano la seconda dimensione e sono destinati a contenere uno o più elementi di tipo array. Questi elementi rappresentano la terza e ultima dimensione e sono destinati, pertanto, a contenere i dati veri e propri previsti dal tipo.

Dunque una variabile array tridimensionale è un array contenente array che contengono a loro volta altri array (questi ultimi array invece contengono finalmente i valori da immagazzinare).

Tale variabile tridimensionale sarà così dichiarata (esempio con una variabile di tipo Stringa):

Dim arrArr As String[][][]


Esempio:

Public Sub Main()

 Dim ss As New String[][][]

 ss = [[["a", "b"], ["c", "d"], ["e", "f"]], [["g", "h"], ["i", "l", "m", "n"], ["o", "p"]]]

' Vogliamo sapere la quantità di elementi (che sono array) presenti nella variabile array (il risultato sarà in questo caso "2"):
 Print ss.Count

' Vogliamo sapere la quantità di elementi (che sono array) presenti nel secondo elemento della variabile array (il risultato in questo caso sarà "3"):
 Print ss[1].Count

' Volendo scendere ancora di livello, per conoscere la quantità di elementi presenti nel secondo elemento del secondo elemento superiore della variabile array (il risultato in questo caso sarà "4"):
  
 Print ss[1][1].Count

End


Molteplici array di array

Ovviamente si potranno creare variabili array contenenti ulteriori e molteplici array di array al proprio interno.


Array che contiene insieme sia singoli valori che altri array

Per creare un vettore che contenga sia dei valori che altri vettori, è necessario usare il tipo di variabile Variant:

Public Sub  Main()

 Dim v As Variant[] = [1, 2, 3, 4]

 v.Add([5, 6, 7])
   
 Print v[0]
 Print v[1]
 Print v[2]
 Print v[3]
 Print v[4][0]
 Print v[4][1]
 Print v[4][2]

 v.Add([8, 9, [10, 11, 12]])

 Print v[5][0]
 Print v[5][1]
 Print v[5][2][0]
 Print v[5][2][1]
 Print v[5][2][2]

End


Sostituire un valore in un elemento, contenente un singolo valore, con un array

E' possibile sostituire, ovviamente in un elemento un singolo valore con un array, e viceversa:

Public Sub Main()

 Dim v1, v2 As Variant[]

 v1 = [1, 2, 3, 4]
 v2 = [5, 6, 7]

 v1[2] = v2

 Print v1[0]
 Print v1[1]
 Print v1[2][0]
 Print v1[2][1]
 Print v1[2][2]
 Print v1[3]
End


Note

[1] Possiamo dire che:


  • nel vettore monodimensionale
Dim vettore As Integer[]

vengono contenuti valori non vettoriali:

vettore = [1, 2, 3, 4]


  • nel vettore bidimensionale
Dim vettore As Integer[][]

vengono contenuti uno o più vettori monodimensionali

vettore = [ [1, 2, 3, 4], [5, 6, 7, 8] ]


  • nel vettore tridimensionale
Dim vettore As Integer[][][]

vengono contenuti uno o più vettori bidimensionali

 vettore = [ [ [1, 2, 3, 4], [5, 6, 7, 8] ], [ [9, 8, 7, 6], [5, 4, 3, 2] ] ]


e così via con gli altri multidimensionali.