Differenze tra le versioni di "Array multidimensionali dinamici"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "In Gambas vi sono ''Array'' (vettori) <SPAN Style="text-decoration:underline">statici</span> ed ''Array'' (vettori) <SPAN Styl...")
 
 
(13 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
In Gambas vi sono [[Matrici_(Vettori_multidimensionali)_definite|''Array'' (vettori) <SPAN Style="text-decoration:underline">statici</span>]] ed ''Array'' (vettori) <SPAN Style="text-decoration:underline">dinamici</span>.
+
#redirect [[Array_multidimensionali_con_numero_indeterminato_di_elementi]]
 
 
 
 
 
 
=Array che contengono altri array=
 
E' possibile creare, gestire ed utilizzare anche variabili array multidimensionali contenenti nei loro elementi altri array.
 
 
 
Questo tipo di vettori è ''dinamico'', nel senso che non ha un numero determinato delle proprie dimensioni né degli ''elementi'' costituenti tali dimensioni, ma essi possono essere incrementati di volta in volta.
 
 
 
Un array a due dimensioni, dinamico e dunque di dimensioni non definite, si dichiara nel modo seguente (esempio di ''Array'' di tipo Stringa contenente ''Array'' di tipo Stringa):
 
Dim arrArr As String[][]
 
e la sua istanziazione implicita sarà effettuata nel seguente modo:
 
arrArr = <FONT color=blue><B>[</b></font>["a", "b"], ["c", "d"], ["e", "f"]<FONT color=blue><B>]</b></font>
 
 
 
 
 
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 New String[][]
 
 
  arrArr = <FONT color=blue><B>[</b></font>["a", "b"], ["c", "d"], ["e", "f"]<FONT color=blue><B>]</b></font>
 
 
  Print arrArr.Count
 
 
'''End'''
 
 
 
Per sapere la quantità di elementi contenuti in un elemento array della variabile array:
 
  '''Public''' Sub Main()
 
 
  Dim arrArr As New String[][]
 
 
  arrArr = <FONT color=blue><B>[</b></font>["a", "b"], ["c", "d"], ["e", "f"]<FONT color=blue><B>]</b></font>
 
 
<FONT color=gray>' ''Vogliamo sapere la quantità di elementi''
 
' ''presenti nel secondo elemento (che è un array) della variabile array:''</font>
 
  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 j As Byte
 
 
  For j = 0 To arrArr[0].Max
 
    Print arrArr[0][j], arrArr[1][j], arrArr[2][j]
 
  Next
 
 
'''End'''
 
 
 
 
 
Per eliminare ad esempio un elemento da una dimensione:
 
'''Public''' Sub Main()
 
 
  Dim arrArr As String[][]
 
 
 
  arrArr = [["a", "b"], ["c", "d"], ["e", "f"], ["e", "f"]]
 
   
 
  Print arrArr.Count
 
   
 
  Print arrArr[2].Count
 
   
 
  arrArr[2].Remove(0)
 
 
  Print arrArr[2].Count
 
 
'''End'''
 
 
 
 
 
===Variabili array che contengono altre variabili array===
 
Conseguentemente ed ovviamente tali variabili array possono contenere nei loro elementi altre variabili array.
 
 
 
Esempio:
 
'''Public''' Sub Main()
 
 
  Dim ss As New String[][]
 
  Dim s1, s2 As New String[]
 
 
 
 
<FONT color=gray>' ''Assegnamo dei valori ale due variabili array''
 
' ''che saranno contenute nella variabile array principale:''</font>
 
  s1 = ["a", "b"]
 
  s2 = ["c", "d", "e"]
 
 
 
<FONT color=gray>' ''Assegnamo le due precedenti variabili array alla variabile array principale:''</font>
 
  ss = [s1, s2]
 
 
<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>
 
  Print ss.Count, ss[0].Count, ss[1].Count
 
 
'''End'''
 
 
 
 
 
 
 
==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 gli elementi in due modalità:
 
'''Public''' Sub Main()
 
 
  Dim bb As New Byte[][]
 
 
<FONT Color=gray>' ''Viene aggiunta una dimensione ed il suo primo elemento:''</font>
 
  bb.Push([1])
 
  Print bb[0][0]
 
 
 
<FONT Color=gray>' ''Viene aggiunta la seconda dimensione ed il suo primo elemento:''</font>
 
  bb.Push([2])
 
  Print bb[1][0]
 
 
'''End''' 
 
 
 
 
 
oppure:
 
'''Public''' Sub Main()
 
 
  Dim bb As New Byte[][]
 
     
 
<FONT Color=gray>' ''Viene creata la prima dimensione:''</font>
 
  <FONT Color=#B22222>bb.Push([])</font>
 
 
 
<FONT Color=gray>' ''Vengono aggiunti degli elementi alla prima dimensione:''</font>
 
  bb[0].Push(10)
 
  bb[0].Push(11)
 
 
 
  Print bb[0][0]
 
  Print bb[0][1]
 
 
 
<FONT Color=gray>' ''Viene aggiunta un'ulteriore dimensione:''</font>
 
  <FONT Color=#B22222>bb.Push([])</font>
 
 
 
<FONT Color=gray>' ''Vengono aggiunti degli elementi alla nuova seconda dimensione:''</font>
 
  bb[1].Push(20)
 
  bb[1].Push(21)
 
 
 
  Print bb[1][0]
 
  Print bb[1][1]
 
 
 
'''End'''
 
 
 
 
 
oppure:
 
'''Public''' Sub Main()
 
 
  Dim bb As New Byte[][]
 
     
 
<FONT Color=gray>' ''Viene creata la prima dimensione, ed aggiunti due elementi ed i rispettivi valori:''</font>
 
  <FONT Color=#B22222>bb.Push([1, 10])
 
 
 
<FONT Color=gray>' ''Viene aggiunta una seconda dimensione, ed aggiunti due elementi ed i rispettivi valori:''</font>
 
  bb.Push([2, 20])</font>
 
 
 
    Print bb[0][0]
 
    Print bb[0][1]
 
    Print bb[1][0]
 
    Print bb[1][1]
 
 
'''End'''
 
 
 
 
 
 
 
=Array multidimensionale a tre dimensioni=
 
Potremo anche creare ed utilizzare una variabile array tridimensionali (un array contenente array che contengono a loro volta altri array).  |[[#Note|1]]|
 
 
 
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 = <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''
 
' (il risultato sarà in questo caso "2"):</font>
 
  Print ss.Count
 
 
<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>
 
  Print ss[1].Count
 
 
<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>
 
  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] Potremmo immaginare ogni gruppo di parantesi quadre [] come un livello vettoriale.
 
 
 
Nel vettore di ''primo'' livello
 
Dim vettore As Integer[]
 
vengono contenuti i valori veri e propri del vettore:
 
vettore = <FONT color=darkgreen><B>[</b></font>1, 2, 3, 4<FONT color=darkgreen><B>]</b></font>
 
 
 
 
 
Nel vettore di ''secondo'' livello
 
Dim vettore As Integer[][]
 
vengono contenuti due o più vettori di primo livello
 
vettore = <FONT color=blue><B>[</b></font> <FONT color=darkgreen><B>[</b></font>1, 2, 3, 4<FONT color=darkgreen><B>]</b></font>, <FONT color=darkgreen><B>[</b></font>5, 6, 7, 8<FONT color=darkgreen><B>]</b></font> <FONT color=blue><B>]</b></font>
 
 
 
 
 
Nel vettore di ''terzo'' livello
 
Dim vettore As Integer[][][]
 
vengono contenuti due o più vettori di secondo livello
 
  vettore = <FONT color=red><B>[</b></font> <FONT color=blue><B>[</b></font> <FONT color=darkgreen><B>[</b></font>1, 2, 3, 4<FONT color=darkgreen><B>]</b></font>, <FONT color=darkgreen><B>[</b></font>5, 6, 7, 8<FONT color=darkgreen><B>]</b></font> <FONT color=blue><B>]</b></font>, <FONT color=blue><B>[</b></font> <FONT color=darkgreen><B>[</b></font>9, 8, 7, 6<FONT color=darkgreen><B>]</b></font>, <FONT color=darkgreen><B>[</b></font>5, 4, 3, 2<FONT color=darkgreen><B>]</b></font> <FONT color=blue><B>]</b></font> <FONT color=red><B>]</b></font>
 
 
 
e così via con gli altri livelli.
 

Versione attuale delle 10:16, 19 apr 2018