Array: creazione, modifica e riempimento

Da Gambas-it.org - Wikipedia.

In Gambas possiamo suddividere gli array, o vettori, sotto due profili:

  • della definizione del numero dei propri elementi;
  • della definizione del numero della propria dimensione.


Con riguardo al primo profilo possimo ulteriormente suddividere i vettori in due tipi:
1) vettori con quantità definita (o esplicita) dei propri elementi;
2) vettori con quantità non definita dei propri elementi.


Descriveremo la creazione e l'assegnazione di valori a un array monodimensionale, o vettore, 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.

Un vettore, sia con numero definito di elementi, sia con numero non definito di elementi, è suscettibile di incrementare, ogni qualvolta lo preveda il codice, la quantità dei propri elementi mediante appositi Metodi ( .Add( ) e .Push( ) ).

Creazione di un array monodimensionale senza definizione del numero dei suoi elementi

Esso va dichiarato ponendo:

  • il nome indentificatore della variabile vettoriale
  • il tipo di valore assunto dal vettore;
  • due parentesi quadre prive al loro interno di qualsiasi carattere.

La sola e mera dichiarazione dell'array (vettore) non è sufficiente per la creazione dell'array.
Infatti, per creare un array (vettore) senza definizione del numero dei suoi elementi è necessario (come già accennato) utilizzate la parola-chiave New.
Esempio:

Dim vettore As New Byte[]

Più in particolare con la parola-chiave New viene creato un Oggetto di tipo Array, per la complessa organizzazione interna del quale Gambas alloca in sostanza la necessaria memoria.

Incremento degli elementi

La parola-chiave New è necessaria, dunque, per poter effettuare l'incremento del numero dei suoi elementi interni mediante i Metodi .Add( ) o Push( ), che avviene con la contestuale assegnazione di un determinato valore a ciascun nuovo elemento incrementato.
Esempio:

Public Sub Main()

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

' Allo stato iniziale in questo caso il numero degli elementi del vettore è uguale a zero:
  Print bb.Count
  
  For j = 0 To 9
  
' Ad ogni ciclo mediante il metodo ".Push()" (si può usare anhe il metodo .Add() ) viene incrementato di una unità il numero degli elementi del vettore.
' Pertanto viene creato un nuovo elemento di indice successivo all'ultimo che era stato generato.
' Intanto al nuovo elemento attribuito al vettore viene contemporaneamente assegnato un valore.
    bb.Push(j)
   
  Next
  
' Al termine il numero degli elementi del vettore è incrementato. In tal caso è uguale a 10.
  Print bb.Count

End


Modifica successiva del numero di elementi di un Vettore

La definizione della quantità di elementi di un Vettore può essere modificata successivamente in codice con varie modalità.


Modifica della quantità degli elementi di un vettore con numero di elementi non definito

Public Sub Main()
 
 Dim bb As New Byte[]

' Verifica dello stato iniziale del numero degli elementi del vettore:
  Print bb.Count

' Variazione del numero degli elementi mediante "dichiarazione esplicita":
  bb = [0, 1, 2]
  Print bb.Count

' Variazione del numero degli elementi mediante il metodo ".Push()" (si può usare anhe il metodo .Add() ):
  bb.Push(99)
  Print bb.Count
  
' Variazione del numero degli elementi mediante il metodo ".Resize()":
  bb.Resize(5)
  Print a.Count
  
End


Modifica della quantità degli elementi di un vettore con numero di elementi già definito

Public Sub Main()
 
 Dim bb As New Byte[3]

' Verifica dello stato iniziale del numero degli elementi del vettore:
  Print bb.Count
  
' Variazione del numero degli elementi mediante "dichiarazione esplicita":
  bb = [0, 1, 2, 3]
  Print bb.Count

' Variazione del numero degli elementi mediante il metodo ".Push()" (si può usare anhe il metodo .Add() ):
  bb.Push(99)
  Print bb.Count
 
' Variazione del numero degli elementi mediante il metodo ".Resize()":
  bb.Resize(3)
  Print b.Count
  
End