Differenze tra le versioni di "Array multidimensionali con numero determinato di elementi"

Da Gambas-it.org - Wikipedia.
Riga 18: Riga 18:
 
   
 
   
 
   Dim bb As New Byte[3, 4]
 
   Dim bb As New Byte[3, 4]
 +
ovviamente nel caso di dichiarazione di una variabile array ''globale'':
 +
Private bb As New Byte[3, 4]
 
   
 
   
  ......
+
  '''Public''' Sub Main()
 +
    ......
 
La ''dimensione'' di una Matrice in Gambas non può essere superiore ad otto.
 
La ''dimensione'' di una Matrice in Gambas non può essere superiore ad otto.
 
+
<BR>Esempio:
Esempio:
 
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
   
 
   
Riga 32: Riga 34:
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
   
 
   
<Font Color=gray>' ''Viene dichiarata una matrice a 3 dimensioni, ciascuna delle quali ha un numero diverso di elementi:''</font>
+
<Font Color=gray>' ''Viene dichiarata una matrice a 3 dimensioni, ciascuna delle quali ha un numero diverso di elementi:''</font>
 
   Dim bb As New Byte[3, 4, 2]
 
   Dim bb As New Byte[3, 4, 2]
 
   
 
   
  Print bb.Bounds.Count
+
  Print bb.Bounds.Count
 
'''End'''
 
 
 
 
 
=Dichiarazione ed inizializzazione delle Matrici ''annidate''=
 
Una Matrice ''annidata'' è una matrice che viene allocata direttamente all'interno di un oggetto. Essa non può essere ''locale'', e pertanto va dichiarata prima della routine, all'esterno. Le dimensioni ed il numero degli elementi della matrice ''annidata'' sono definiti con la notazione ''<Font Color=B22222>variabile[m, n]</font>''.
 
 
 
Esempio:
 
<Font Color=gray>' ''Viene dichiarata la matrice e definite le sue dimensioni ed il numero degli elementi:''</font>
 
Private matrix[5, 5] As Integer
 
 
 
Public Sub Main()
 
 
<Font Color=gray>' ''Qui viene usata la matrice "annidata":''</font>
 
    matrix[....
 
    ......
 
 
'''End'''
 
 
 
 
 
===Creazione di una matrice ''annidata''===
 
 
 
<Font Color=gray>' ''Definiamo una matrice "annidata" di due righe e due colonne per un totale di quattro elementi:''</font>
 
Private a[2, 2] As String
 
 
 
'''Public''' Sub Button1_Click()  <Font Color=gray>' ''Scrive la matrice "annidata"''</font>
 
 
  Dim x, y As Integer
 
  Dim b As String
 
 
 
  For x = 0 To 1
 
    For y = 0 To 1
 
 
<Font Color=gray>' ''Immettiamo quattro nomi.''
 
' ''Per esempio, i primi due potrebbero essere un nome di animale ed un nome di pianta che iniziano per "A";
 
' ''gli altri due potrebbero essere un nome di animale ed un nome di pianta che iniziano per "B"'':</font>
 
      b = InputBox("Immetti un nome: ")
 
      a[x, y] = b
 
    Next
 
  Next
 
 
'''End'''
 
 
 
'''Public''' Sub Button2_Click()  <Font Color=gray>' ''legge la matrice "annidata"''</font>
 
 
  Dim c, d As Integer
 
 
  For c = 0 To 1
 
    For d = 0 To 1
 
      Print a[c, d]
 
    Next
 
  Print "------"
 
  Next
 
 
'''End'''
 
 
 
 
 
==Definizione degli elementi di una Matrice mediante una variabile==
 
Il numero di elementi di una Matrice (array multidimensionale) può essere definito - in sede di creazione della Matrice medesima - anche con una variabile.
 
 
 
Mostriamo un esempio nel quale la definizione del numero degli elementi della prima dimensione di una Matrice ''annidata'' avviene assegnando un valore (che viene stabilito casualmente con un numero compreso tra 1 e 5) all'atto della creazione di una nuova variabile di Matrice cliccando su un ''Button'':
 
'''Public''' Sub Button1_Click()
 
 
  Dim bb As Byte[]
 
  Dim b As Byte
 
 
  b = Rnd(1, 6)
 
 
<FONT color=gray>' ''Definiamo ora la quantità di righe della Matrice bidimensionale'':</font>
 
  bb = New Byte[<FONT color=#B22222>b</font>, 3]
 
   
 
  Print bb.Count
 
 
   
 
   
 
  '''End'''
 
  '''End'''
Da notare due particolarità:
 
<BR>come da un array dichiarato "monodimensionale" sia stato creato in un array "''bidimensionale''" di tipo "''annidato''";
 
<BR>come tale array bidimensionale ''annidato'' funzioni nonostante abbia una dichiarazione "''locale''" del suo identificatore.
 

Versione delle 06:31, 13 ott 2021

Introduzione

Una "Matrice" (o anche Vettore multidimensionale o array multidimensionale) è un insieme di numeri ordinati secondo righe e colonne di ordine m x n, tale da formare una tabella di elementi, ove m e n sono numeri interi e stabiliti. In particolare m è il numero delle righe e n il numero delle colonne.
Se m = n la Matrice viene definita: quadrata.
Un elemento della Matrice occupa la posizione individuata dall'intersezione tra la m-esima riga e la n-esima colonna della Matrice.
Se la Matrice è formata da una riga ed una colonna, allora è considerata un Vettore. Se la Matrice è formata da una sola riga e da più colonne, allora la Matrice è definita: "Matrice riga". Se la Matrice è formata da più righe, ma da una sola colonna, allora la Matrice è definita: "Matrice colonna".


Esempio di Matrice costituita da tre dimensioni, la prima delle quali è formata da 2 elementi, la seconda da 5 e la terza da 4:

matrix[2, 5, 4]


Dichiarazione ed inizializzazione delle Matrici

In Gambas una Matrice può essere locale o globale, e viene dichiarata secondo la seguente sintassi:

DIM Identificatore AS [ NEW ] TipoDati [ dimensioni degli elementi della matrice ]

Esempio:

Public Sub Main()

 Dim bb As New Byte[3, 4]

ovviamente nel caso di dichiarazione di una variabile array globale:

Private bb As New Byte[3, 4]

 Public Sub Main()
   ......

La dimensione di una Matrice in Gambas non può essere superiore ad otto.
Esempio:

Public Sub Main()

' Viene dichiarata una matrice a 8 dimensioni:
 Dim bb As New Byte[3, 4, 2, 2, 3, 20, 33, 5]

  ......

Per conoscere il numero delle dimensioni di una matrice, è possibile usare la proprietà .Bounds.Count:

Public Sub Main()

' Viene dichiarata una matrice a 3 dimensioni, ciascuna delle quali ha un numero diverso di elementi:
 Dim bb As New Byte[3, 4, 2]

 Print bb.Bounds.Count

End