Array dinamici – creazione e riempimento

Da Gambas-it.org - Wikipedia.

Descriveremo la creazione e l'assegazione di valori ad un array monodimensionale dinamico (con quantità di elementi non definita a priori), nonché i casi in cui la definizione della quantità degli elementi viene definita successivamente in modo esplicito o in modo dinamico.


Creazione e riempimento di un array monodimensionale dinamico

Un array (matrice) monodimensionale è dinamico se, non avendo definita a priori la quantità dei suoi elementi interni, è suscettibile di incrementare di volta in volta detta quantità.

Oltre alla dichiarazione dell'array, per ottenere l'incremento del numero di elementi interni, e dunque l'assegnazione di un determinato valore a ciascun nuovo elemento, bisognerà creare l'array utilizzando la parola New. Un nuovo elemento verrà generato (incrementando così il numero di elementi dell'array in quel momento) aggiungendo un nuovo valore all'array mediante il metodo .Add().

Public Sub Button1_Click()

 Dim bb As New Byte[]  ' All'interno delle paretesi quadre non è indicato alcun valore


  For j = 0 To 9

' Ad ogni ciclo viene assegnato un valore all'array,
' e quindi viene creato un nuovo elemento di indice successivo all'ultimo che era stato generato:
     bb.Add(j)

  Next

End


Definizione dinamica (incremento) della quantità degli elementi

In un array monodimensionale

Public Sub Button1_Click()

Dim nu As Byte
Dim multdimArr As New Byte[]   ' dichiara l'array, ma senza definirne la quantità dei propri elementi
 
' Incrementa dinamicamente la quantità degli elementi dell'array
   For nu = 0 To 37
      multdimArr.Add(nu)
   Next

' verifica:
   For nu = 0 To 37
      Print multdimArr[nu]
   Next
   
End

o anche:

Public Sub Button1_Click()

 Dim nu As Byte
 Dim multdimArr As Byte[]   ' dichiara l'array, ma senza definirne la quantità dei propri elementi

' Incrementa dinamicamente la quantità degli elementi dell'array
   For nu = 0 To 37
     multdimArr = New Byte[nu]
     multdimArr.Add(nu)
   Next


   For nu = 0 To 37
      Print multdimArr[nu]
   Next

End


In un array multidimensionale

Per poter incrementare dinamicamente gli elementi di un array multidimensionale dovremo necessariamente inizialmente dichiarare la sua dimensione, ponendone il valore degli elementi ad almeno: 1.

Nell'esempio sottostante poniamo il caso di un array bidimensionale con numero di colonne fisso ed incremento dinamico del numero delle righe ad ogni clic sul Button1:

Private multdimArr As Integer[]
Private rig As Integer = 1       ' Si comincia con l'avere una riga


Public Sub Button2_Click()

' Incrementa dinamicamente la quantità delle righe dell'array
 multdimArr = New Integer[rig, 2]

' Pone il valore numerico medesimo nella nuova riga della 1a colonna:
  multdimArr[rig - 1, 1] = rig
     
  Print multdimArr[rig - 1, 1]
 
 Inc rig

End


Definizione esplicita successiva della quantità degli elementi

In un array monodimensionale

Public Sub Button1_Click()

 Dim ind1 As Integer = 38
 Dim nu As Integer
 Dim multdimArr As Integer[]   ' dichiara l'array, ma senza dimensionarlo

' dimensiona "ora" l'array:
   multdimArr = New Integer[ind1]

   For nu = 0 To multdimArr.Max
'  riempie ogni elemento dell'array:
     multdimArr[nu] = nu
     Print multdimArr[nu]
   Next
	   
End


In un array multidimensionale

Public Sub Button1_Click()

 Dim multdimArr As Integer[]
 Dim rig, col As Integer
 Dim nuR, nuC As Integer

' dimensiona "ora" l'array:
 rig = InputBox("Inserisci tu la dimensione delle righe dell'array:")
 col = InputBox("Inserisci tu la dimensione delle colonne dell'array:")

  multdimArr = New Integer[rig, col]


  For nuR = 0 to rig - 1
    For nuC = 0 To col - 1
      multdimArr[nuR, nuC] = nuC
      Print multdimArr[nuR, nuC]
    Next
  Next

End