Differenze tra le versioni di "Array: creazione, modifica e riempimento"

Da Gambas-it.org - Wikipedia.
Riga 117: Riga 117:
 
    
 
    
 
  <FONT color=gray>' ''Variazione del numero degli elementi mediante il metodo "'''.Resize()'''":''</font>
 
  <FONT color=gray>' ''Variazione del numero degli elementi mediante il metodo "'''.Resize()'''":''</font>
   bb.Resize(8)
+
   bb.<FONT Color=#B22222>Resize</font>(8)
 
   Print bb.Count, bb[6]
 
   Print bb.Count, bb[6]
 
    
 
    
 
  '''End'''
 
  '''End'''

Versione delle 05:38, 27 mar 2018

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;
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 può essere fatta con la dichiarazione della variabile vettoriale:

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

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 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 dell'array, e dunque con il conseguente uso delle previste sue risorse native (Proprietà e Metodi).
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

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)
  Print bb.Count
 
' 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.Push(83)
  Print bb.Count, bb[5]
  
End

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

La variazione 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 del numero degli elementi mediante il metodo ".Resize()":
  bb.Resize(8)
  Print bb.Count, bb[6]
  
End