Differenze tra le versioni di "Array dinamici – creazione e riempimento"

Da Gambas-it.org - Wikipedia.
Riga 6: Riga 6:
  
 
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()''.
 
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()
+
  '''Public''' Sub Button1_Click()
 
   
 
   
 
   Dim bb As <FONT color=#B22222>New</font> Byte<FONT color=#B22222>[]</font>  <FONT color=#006400>' ''All'interno delle paretesi quadre non è indicato alcun valore''</font>
 
   Dim bb As <FONT color=#B22222>New</font> Byte<FONT color=#B22222>[]</font>  <FONT color=#006400>' ''All'interno delle paretesi quadre non è indicato alcun valore''</font>
Riga 23: Riga 23:
  
  
==Definizione esplicita successiva della quantità degli elementi<font>==
+
==Definizione dinamica degli elementi in un array multidimensionale==
 +
Per aggiungere dinamicamente elementi ad una dimensione in un array multidimensionale, è necessario di volta in volta incrementare la ''definizione'' stessa degli elementi di quella dimensione. Ogni dimensione andrà espressa da una variabile, il cui valore sarà di volta in volta incrementato. Il valore di partenza di detta variabile dovrà essere almeno pari a 1 (uno) .
 +
 
 +
Facciamo l'esempio di un array bidimensionale, di cui intendiamo ''definire'' dinamicamente (ossia incrementare) il numero degli elementi solamente della prima dimensione (riga):
 +
'''Private''' b As Byte
 +
'''Private''' bb As Byte[]
 +
 +
 +
'''Public''' Sub Button1_Click()
 +
 +
  Inc b
 +
 +
<FONT color=#006400>' ''Definiamo la quantità di righe dell'array bidimensionale''
 +
' ''con un nuovo valore superiore di un'unità rispetto al precedente:</font>
 +
  bb = New Byte[<FONT color=#B22222>b</font>, 3]
 +
 +
  bb[b - 1, 1] = b
 +
 +
  Print bb[b - 1, 1]
 +
 +
'''End'''
 +
 
 +
 
 +
 
 +
==Definizione esplicita successiva della quantità degli elementi==
 
In questo caso la quantità di elementi di un array non è definita con la dichiarazione, ma lo diviene successivamente.
 
In questo caso la quantità di elementi di un array non è definita con la dichiarazione, ma lo diviene successivamente.
  

Versione delle 18:08, 16 mag 2013

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 degli elementi in un array multidimensionale

Per aggiungere dinamicamente elementi ad una dimensione in un array multidimensionale, è necessario di volta in volta incrementare la definizione stessa degli elementi di quella dimensione. Ogni dimensione andrà espressa da una variabile, il cui valore sarà di volta in volta incrementato. Il valore di partenza di detta variabile dovrà essere almeno pari a 1 (uno) .

Facciamo l'esempio di un array bidimensionale, di cui intendiamo definire dinamicamente (ossia incrementare) il numero degli elementi solamente della prima dimensione (riga):

Private b As Byte
Private bb As Byte[]


Public Sub Button1_Click()

  Inc b

' Definiamo la quantità di righe dell'array bidimensionale
' con un nuovo valore superiore di un'unità rispetto al precedente:
  bb = New Byte[b, 3]

  bb[b - 1, 1] = b

  Print bb[b - 1, 1]

End


Definizione esplicita successiva della quantità degli elementi

In questo caso la quantità di elementi di un array non è definita con la dichiarazione, ma lo diviene successivamente.

In un array monodimensionale

Public Sub Button1_Click()

 Dim qnt As String
 Dim qntI, nu As Integer
 Dim ii As Integer[]   ' dichiara l'array, ma senza definirne la quantità degli elementi


' dimensiona "ora" l'array, in questo esempio con un "InputBox":
   qnt = InputBox("Inserisci tu la dimensione delle righe dell'array:")

   qntI = Val(qnt)

   ii = New Integer[qntI]

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


In un array multidimensionale

Public Sub Button1_Click()

 Dim ii As Integer[] ' dichiara l'array, ma senza definirne la quantità degli elementi
 Dim rig$,col$ As String
 Dim colI, nuR, nuC As Integer

' dimensiona "ora" l'array, in questo esempio con un "InputBox":
 rig$ = InputBox("Inserisci tu la dimensione delle righe dell'array:")
 col$ = InputBox("Inserisci tu la dimensione delle colonne dell'array:")

 rigI = Val(rig$)
 colI = Val(col$)

 ii = New Integer[rigI, colI]


  For nuR = 0 to rigI - 1
    For nuC = 0 To colI - 1
      ii[nuR, nuC] = nuC
      Print ii[nuR, nuC]
    Next
  Next

End