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

Da Gambas-it.org - Wikipedia.
(Pagina svuotata)
Riga 1: Riga 1:
Descriveremo la creazione e l'assegnazione di valori ad un array monodimensionale, o [http://it.wikipedia.org/wiki/Array vettore], 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.
 
  
Un vettore è dinamico se, non avendo definita a priori la quantità dei suoi elementi interni, è suscettibile di incrementare detta quantità di volta in volta, ogni qualvolta lo preveda il codice.
 
 
Esso va dichiarato ponendo:
 
* il nome indentificatore della variabile vettoriale
 
* la parola chiave ''New'' (che determina la <SPAN Style="text-decoration:underline">creazione</span> di un nuovo oggetto Gambas);
 
* il tipo di valore assunto dal vettore;
 
* due parentesi quadre prive al loro interno di qualsiasi carattere.
 
Esempio con un vettore di tipo ''Byte'':
 
Dim vettore As New Byte[]
 
 
 
==Creazione di un array monodimensionale, definizione ''dinamica'' dei suoi elementi e loro riempimento==
 
Oltre alla dichiarazione dell'array (vettore), 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 <FONT color=#B22222>New</font> Byte<FONT color=#B22222>[]</font>  <FONT color=gray>' ''All'interno delle parentesi quadre non è indicato alcun valore''</font>
 
  Dim j As Byte
 
 
<FONT color=gray>' ''Allo stato iniziale in questo caso il numero degli elementi del vettore è uguale a '''zero''':''</font>
 
  Print bb.Count
 
 
 
  For j = 0 To 9
 
 
 
<FONT color=gray>' ''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.''</font>
 
    bb.<FONT color=#B22222>Push</font>(j)
 
   
 
  Next
 
 
 
<FONT color=gray>' ''Al termine il numero degli elementi del vettore è incrementato. In tal caso è uguale a 10.''</font>
 
  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[]
 
 
<FONT color=gray>' ''Verifica dello stato iniziale del numero degli elementi del vettore:''</font>
 
  Print bb.Count
 
 
<FONT color=gray>' ''Variazione del numero degli elementi mediante "'''dichiarazione esplicita'''":''</font>
 
  bb = [0, 1, 2]
 
  Print bb.Count
 
 
<FONT color=gray>' ''Variazione del numero degli elementi mediante il metodo "'''.Push()'''" (si può usare anhe il metodo '''.Add()''' ):''</font>
 
  bb.Push(99)
 
  Print bb.Count
 
 
 
<FONT color=gray>' ''Variazione del numero degli elementi mediante il metodo "'''.Resize()'''":''</font>
 
  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]
 
 
<FONT color=gray>' ''Verifica dello stato iniziale del numero degli elementi del vettore:''</font>
 
  Print bb.Count
 
 
 
<FONT color=gray>' ''Variazione del numero degli elementi mediante "'''dichiarazione esplicita'''":''</font>
 
  bb = [0, 1, 2, 3]
 
  Print bb.Count
 
 
<FONT color=gray>' ''Variazione del numero degli elementi mediante il metodo "'''.Push()'''" (si può usare anhe il metodo '''.Add()''' ):''</font>
 
  bb.Push(99)
 
  Print bb.Count
 
 
 
<FONT color=gray>' ''Variazione del numero degli elementi mediante il metodo "'''.Resize()'''":''</font>
 
  bb.Resize(3)
 
  Print b.Count
 
 
 
'''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. Si provvede, insomma, a stabilire il numero definito degli elementi dell'array semplicemente in una fase successiva e non preliminarmente.
 
 
Nella dichiarazione della variabile di tipo vettoriale ovviamente non sarà fatta alcuna determinazione del numero di elementi del vettore medesimo. Tale definizione avverra successivamente in routine: si provvederà alla creazione della variabile vettoriale e, quindi, alla definizione del numero dei suoi elementi.
 
'''Public''' Sub Main()
 
 
 
  Dim ii As Integer[]  <FONT color=gray>' ''dichiara l'array, ma senza definirne la quantità degli elementi''</font>
 
  Dim i As Integer
 
 
 
<FONT color=gray>' ''Il vettore assume la quantità di elementi definiti manualmente con l'"InputBox":''</font>
 
  <FONT color=B22222>ii = New Integer[<B>8</b>]</font>
 
 
 
    For i = 0 To ii.Max
 
<FONT color=gray>' ''Riempie ogni elemento dell'array, però, ovviamente fino al suo numero massimo definito:''</font>
 
      ii[i] = i
 
      Print ii[i]
 
    Next
 
 
 
'''End'''
 
e similmente in un array multidimensionale.
 
 
 
====Definizione del numero degli elementi sulla base della dimensione di un file====
 
Se il numero di elementi del vettore dovrà assumere il valore uguale al numero di byte che compongono un file, si potrà utilizzare la proprietà ''.Size'' della Classe ''Stat()'':
 
'''Public''' Sub Main()
 
 
  Dim bb As Byte[]
 
  Dim fl As File
 
 
 
 
  fl = Open "<FONT color=gray>''/percorso/del/file''</font>" For Read
 
 
 
  bb = New Byte[<FONT color=B22222>Lof(fl)</font>]
 
 
  bb.Read(fl)
 
 
 
  Print bb.ToString()
 
 
 
  fl.Close
 
 
 
'''End'''
 

Versione delle 21:16, 26 mar 2018