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

Da Gambas-it.org - Wikipedia.
 
(15 versioni intermedie di uno stesso utente non sono mostrate)
Riga 5: Riga 5:
 
<BR>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''".
 
<BR>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''".
  
 
+
In Gambas vi è anche questo tipo di [[Array_multidimensionali_statici|''Array'']] (vettori), al quale viene in sede di definizione specificato il numero dei propri ''elementi'' costitutivi delle sue dimensioni.
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=
 
=Dichiarazione ed inizializzazione delle Matrici=
In Gambas una Matrice può essere ''locale'' o ''globale'', e viene dichiarata secondo la seguente sintassi:
+
In Gambas una Matrice può essere ''locale'' o ''globale'' e viene dichiarata impostando le sue dimensioni tra parentesi quadre alla destra del tipo di dato di appartenenza secondo la seguente sintassi:
 
  DIM Identificatore AS [ NEW ] TipoDati [ ''dimensioni degli elementi della matrice'' ]
 
  DIM Identificatore AS [ NEW ] TipoDati [ ''dimensioni degli elementi della matrice'' ]
 
+
Esempio di ''array'' costituito da tre dimensioni, la prima delle quali è formata da 2 elementi, la seconda da 5 e la terza da 4:
Esempio:
+
  Dim array As New <FONT Color=#B22222>Integer<B>[2, 5, 4]</b></font>
  '''Public''' Sub Main()
+
ovviamente nel caso di dichiarazione di una variabile array ''globale'':
   
+
  Private array As New Integer[2, 5, 4]
  Dim bb As New Byte[3, 4]
 
 
   
 
   
 +
Public Sub Main()
 
   ......
 
   ......
La ''dimensione'' di una Matrice in Gambas non può essere superiore ad otto.
+
Nei casi sopra mostrati la dichiarazione prevede un ''array multidimensionale'' contenente tre ''array monodimensionali'', che a loro volta contengono un numero determinato di valori (''elementi'' ) di tipo ''Intero'':
 +
<TABLE border="1" cellspacing="0">
 +
  <TR><TD></td><TD colspan=5 align=center><B>ARRAY MULTIDIMENSIONALE</b></td></tr>
 +
  <TR><TD><FONT Size=1>1° array monodimensionale</font></td><TD>1° elemento</td><TD>2° elemento</td>
 +
  <TR><TD><FONT Size=1>2° array monodimensionale</font></td><TD>1° elemento</td><TD>2° elemento</td><TD>3° elemento</td><TD>4° elemento</td><TD>5° elemento</td></tr>
 +
  <TR><TD><FONT Size=1>3° array monodimensionale</font></td><TD>1° elemento</td><TD>2° elemento</td><TD>3° elemento</td><TD>4° elemento</td></tr>
 +
</table>
  
Esempio:
+
==Assegnare un valore a un ''Elemento'' di un array multidimensionale==
'''Public''' Sub Main()
+
Per assegnare un valore ad un ''Elemento'' di array multidimensionale, si dovrà individuare l'<I>Elemento</i> da valorizzare, tenendo conto del suo numero d'<I>Indice</i>:
 +
Public Sub Main()
 
   
 
   
<Font Color=gray>' ''Viene dichiarata una matrice a 8 dimensioni:''</font>
+
   Dim ar As New Integer[2, 2]
   Dim bb As New Byte[3, 4, 2, 2, 3, 20, 33, 5]
+
 
 +
  <FONT Color=#B22222>ar[0, 0] = 0
 +
  ar[0, 1] = 1
 +
  ar[1, 0] = 10
 +
  ar[1, 1] = 11</font>
 
   
 
   
  ......
+
  Print ar[0, 0]
Per conoscere il numero delle dimensioni di una matrice, è possibile usare la proprietà ''.Bounds.Count'':
+
  Print ar[0, 1]
'''Public''' Sub Main()
+
  Print ar[1, 0]
 +
  Print ar[1, 1]
 
   
 
   
<Font Color=gray>' ''Viene dichiarata una matrice a 3 dimensioni, ciascuna delle quali ha un numero diverso di elementi:''</font>
+
End
   Dim bb As New Byte[3, 4, 2]
+
Di seguito un altro esempio, nel quale la valorizzazione e la lettura di verifica avverrà con un ciclo "FOR":
   
+
Public Sub Main()
  Print bb.Bounds.Count
+
 
 +
  Dim bb As New Byte[3, 2]
 +
  Dim x, y As Byte
 +
 
 +
<FONT Color=gray>' ''Poiché l'array è bidimensionale, ci serviamo di due cicli "FOR" per assegnare un valore a ciascun suo elemento:''</font>
 +
   For x = 0 To 2
 +
    For y = 0 To 1
 +
      bb[x, y] = x + y
 +
    Next
 +
  Next
 +
 
 +
  <FONT Color=gray>' ''Infine legge i valori assegnati all'array:''</font>
 +
  For x = 0 To 2
 +
    For y = 0 To 1
 +
      Print bb[x, y]
 +
    Next
 +
    Print "------"
 +
  Next
 
   
 
   
  '''End'''
+
  End
  
 +
==Limite massimo del numero di dimensioni in un array multidimensionale==
 +
La ''dimensione'' di una Matrice in Gambas non può essere superiore ad otto.
  
=Dichiarazione ed inizializzazione delle Matrici ''annidate''=
+
Esempio:
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()
 
  Public Sub Main()
 +
<Font Color=gray>' ''Viene dichiarata una matrice a 8 dimensioni:''</font>
 +
  Dim bb As New Byte[3, 4, 2, 2, 3, 20, 33, 5]
 
   
 
   
<Font Color=gray>' ''Qui viene usata la matrice "annidata":''</font>
+
  ......
    matrix[....
 
    ......
 
 
'''End'''
 
  
 
+
==Conoscere il numero delle dimensioni e degli elementi contenuti da un array multidimensionale==
===Creazione di una matrice ''annidata''===
+
Per conoscere il numero delle dimensioni di un array multidimensionale, è possibile usare la Proprietà ".Bounds.Count":
 
+
  Public Sub Main()
<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
 
 
   
 
   
 +
<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]
 
   
 
   
'''Public''' Sub Button1_Click()   <Font Color=gray>' ''Scrive la matrice "annidata"''</font>
+
   Print bb<FONT Color=#B22222>.Bounds.Count</font>
 
   
 
   
  Dim x, y As Integer
+
End
  Dim b As String
+
Per conoscere la quantità complessiva degli elementi posseduti dall'array multidimensionale, si deve usare la Proprietà ".Count":
 
+
Public Sub Main()
  For x = 0 To 1
 
    For y = 0 To 1
 
 
   
 
   
  <Font Color=gray>' ''Immettiamo quattro nomi.''
+
  <Font Color=gray>' ''Viene dichiarata una matrice a 3 dimensioni, ciascuna delle quali ha un numero diverso di elementi:''</font>
' ''Per esempio, i primi due potrebbero essere un nome di animale ed un nome di pianta che iniziano per "A";
+
  Dim bb As New Byte[3, 4, 2]
' ''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'''
+
  Print bb<FONT Color=#B22222>.Count</font>
 
   
 
   
 +
End
 +
Per conoscere la quantità di una singola dimensione dell'array multidimensionale, si deve usare la Proprietà ".Count[<FONT Color=gray>indice_delle_dimensioni_della_matrice</font>]":
 +
Public Sub Main()
 
   
 
   
  '''Public''' Sub Button2_Click()  <Font Color=gray>' ''legge la matrice "annidata"''</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 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>
+
  Print bb<FONT Color=#B22222>.Bounds['''0''']</font>
  bb = New Byte[<FONT color=#B22222>b</font>, 3]
+
  Print bb<FONT Color=#B22222>.Bounds['''1''']</font>
   
+
  Print bb<FONT Color=#B22222>.Bounds['''2''']</font>
  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 attuale delle 05:58, 19 dic 2023

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".

In Gambas vi è anche questo tipo di Array (vettori), al quale viene in sede di definizione specificato il numero dei propri elementi costitutivi delle sue dimensioni.

Dichiarazione ed inizializzazione delle Matrici

In Gambas una Matrice può essere locale o globale e viene dichiarata impostando le sue dimensioni tra parentesi quadre alla destra del tipo di dato di appartenenza secondo la seguente sintassi:

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

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

Dim array As New Integer[2, 5, 4]

ovviamente nel caso di dichiarazione di una variabile array globale:

Private array As New Integer[2, 5, 4]

Public Sub Main()
  ......

Nei casi sopra mostrati la dichiarazione prevede un array multidimensionale contenente tre array monodimensionali, che a loro volta contengono un numero determinato di valori (elementi ) di tipo Intero:

ARRAY MULTIDIMENSIONALE
1° array monodimensionale1° elemento2° elemento
2° array monodimensionale1° elemento2° elemento3° elemento4° elemento5° elemento
3° array monodimensionale1° elemento2° elemento3° elemento4° elemento

Assegnare un valore a un Elemento di un array multidimensionale

Per assegnare un valore ad un Elemento di array multidimensionale, si dovrà individuare l'Elemento da valorizzare, tenendo conto del suo numero d'Indice:

Public Sub Main()

 Dim ar As New Integer[2, 2]
 
 ar[0, 0] = 0
 ar[0, 1] = 1
 ar[1, 0] = 10
 ar[1, 1] = 11

 Print ar[0, 0]
 Print ar[0, 1]
 Print ar[1, 0]
 Print ar[1, 1]

End

Di seguito un altro esempio, nel quale la valorizzazione e la lettura di verifica avverrà con un ciclo "FOR":

Public Sub Main()
 
 Dim bb As New Byte[3, 2]
 Dim x, y As Byte
  
' Poiché l'array è bidimensionale, ci serviamo di due cicli "FOR" per assegnare un valore a ciascun suo elemento:
 For x = 0 To 2
   For y = 0 To 1
     bb[x, y] = x + y
   Next
 Next
 
' Infine legge i valori assegnati all'array:
 For x = 0 To 2
   For y = 0 To 1
     Print bb[x, y]
   Next
   Print "------"
 Next

End

Limite massimo del numero di dimensioni in un array multidimensionale

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]

 ......

Conoscere il numero delle dimensioni e degli elementi contenuti da un array multidimensionale

Per conoscere il numero delle dimensioni di un array multidimensionale, è 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

Per conoscere la quantità complessiva degli elementi posseduti dall'array multidimensionale, si deve usare la Proprietà ".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.Count

End

Per conoscere la quantità di una singola dimensione dell'array multidimensionale, si deve usare la Proprietà ".Count[indice_delle_dimensioni_della_matrice]":

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[0]
 Print bb.Bounds[1]
 Print bb.Bounds[2]

End