Array: creazione, modifica e riempimento

Da Gambas-it.org - Wikipedia.

Un array, o vettore, è una struttura ordinata, come una lista, di dati, appartenenti al medesimo tipo.
Ogni elemento costitutivo di tale struttura di dati omogenei ha un ordine preciso all’interno della lista, ed è identificato da un indice univoco che inizia da zero.


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 possiamo ulteriormente suddividere i vettori in due tipi:
1) vettori con quantità definita dei propri elementi;
2) vettori con quantità non definita dei propri elementi.

Il suddetto primo tipo può essere a sua volta distinto in:
a) vettori con definizione esplicita dei valori presenti nei suoi elementi (inizializzazione);
b) vettori con definizione implicita dei valori presenti nei suoi elementi.

Nel vettore con definizione esplicita dei valori la quantità degli elementi è definita in modo esplicito ed evidente ponendo fra parentesi quadre e saparati da virgole i valori medesimi.
La definizione esplicita (inizializzazione) può essere fatta con la dichiarazione della variabile vettoriale (l'array può essere dichiarato e inizializzato allo stesso tempo):

Dim vettore As Integrer[] = [1100, 2200, 3300, 4400]

oppure successivamente:

Dim vettore As Integrer[]
.....
vettore = [11, 22, 33, 44]

Nel caso in cui i valori non sono esplicitati, essi potranno essere attribuiti a ciascun elemento in modo dinamico mediante i Metodi ".Add( )" o ".Push( )" tipici dell'Oggetto Array.

Ad ogni modo, 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 i predetti appositi Metodi ".Add( )" e ".Push( )".

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

Un array a una dimensione (monodimensionale) privo di definizione del numero dei suoi elementi può 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.

Esempio:

Dim vettore As Integer[]

La sola e mera dichiarazione dell'array (vettore) non è sufficiente per la creazione (istanziazione) dell'array, e dunque con il conseguente uso delle previste sue risorse native (Proprietà e Metodi).
Infatti, per creare (istanziare) 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 (istanziato) 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

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

Un array monodimensionale con definizione del numero dei suoi elementi sarà creato in maniera analoga a quella degli array senza definizione del numero dei suoi elementi, con la differenza, però, che all'interno delle parentesi quadre sarà specificato il numero degli elementi che compongono il vettore.
Esempio:

Dim vettore As New Byte[8]

Va sottolineato che con la definizione esplicita dei valori, contenuti dal vettore, la creazione dell'Oggetto Array avviene automaticamente, non risultando così necessaria in tal caso l'uso della parola-chiave New.

Incremento degli elementi

Anche nel caso di array con dichiarazione del numero degli elementi, l'incremento del loro numero avviene 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[4]

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

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

L'incremento avvenire anche con successiva esplicitazione degli elementi:

Public Sub Main()
 
 Dim bb As New Byte[4]
 
  Print bb.Count
  
  bb = [1, 2, 3, 4, 5]
  Print bb.Count, bb[4]
  
End

Variazione del numero degli elementi di un array mediante il Metodo .Resize( )

La variazione - in incremento e in decremento - del numero degli elementi di un array può avvenire mediante il Metodo ".Resize( )" dell'Oggetto Array. Se la variazione è in incremento, allora i nuovi elementi risulteranno istanziati a zero.

Esempio:

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

' 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 in incremento del numero degli elementi mediante il metodo ".Resize()":
  bb.Resize(8)
  Print bb.Count, bb[6]
  
' Variazione in diminuzione del numero degli elementi mediante il metodo ".Resize()":
  bb.Resize(3)
  Print bb.Count, bb[2]
  
End


Attribuzione dei valori agli elementi di un array

l'attribuzione di valori agli elementi è possibile solo se è stato creato, nelle modalità sopra esposte, l'Oggetto Array.

Più in particolare, con riferimento ad un vettore privo di definizione del numero dei propri elementi l'attribuzione può avvenire:
1) all'atto della esplicitazione degli elementi;
2) contestualmente e mediante l'incremento del numero dei propri elementi mediante i previsti Metodi .Add( ) o Push( ).

Con riferimento invece agli array aventi un numero definito di elementi, e comunque in ogni caso in cui l'array abbia almeno un elemento, l'attribuzione di un valore avvenire mediante assegnazione del medesimo all'indice relativo all'elemento:

Public Sub Main()
 
 Dim vettore As New Short[4]
  
  vettore[2] = 1234
  
  Print vettore[2]
  
End