|
|
(Una versione intermedia di uno stesso utente non è mostrata) |
Riga 1: |
Riga 1: |
− | ==Introduzione==
| + | #REDIRECT [[Array_multidimensionali_con_numero_determinato_di_elementi]] |
− | Una "'''Matrice'''" (o anche ''Vettore multidimensionale'' o ''array multidimensionale'') è un insieme di numeri ordinati secondo righe e colonne di ordine <Font Color= #B22222>''m''</font> x <Font Color= #B22222>''n''</font>, 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.
| |
− | <BR>Se ''m'' = ''n'' la Matrice viene definita: ''quadrata''.
| |
− | <BR>Un elemento della Matrice occupa la posizione individuata dall'intersezione tra la ''m''-esima riga e la ''n''-esima colonna della Matrice.
| |
− | <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''".
| |
− | | |
− | La ''Matrice'' è sempre ''statica'', cioè sia il numero delle sue dimensioni sia il numero degli elementi di ciascuna sua dimensione è sempre <SPAN Style="text-decoration:underline">determinato</span>.
| |
− | <BR>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]
| |
− |
| |
− | ......
| |
− | La ''dimensione'' di una Matrice in Gambas non può essere superiore ad otto.
| |
− | | |
− | Esempio:
| |
− | '''Public''' Sub Main()
| |
− |
| |
− | <Font Color=gray>' ''Viene dichiarata una matrice con dimensione di 8 elementi:''</font>
| |
− | 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()
| |
− |
| |
− | Dim bb As New Byte[3, 4, 2]
| |
− |
| |
− | 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 successiva degli elementi di un identificatore di Matrice==
| |
− | Si può ottenere la determinazione ''successiva'' del numero degli elementi di un identificatore di una ''[http://it.wikipedia.org/wiki/Array#Array_multidimensionali Vettore multidimensionale]'', o ''[http://it.wikipedia.org/wiki/Matrice Matrice]''. Per ottenere ciò, bisognerà incrementare l'indicazione della quantità degli elementi all'atto della creazione della matrice.
| |
− | <BR>Ogni dimensione andrà espressa da una variabile, il cui valore sarà di volta in volta incrementato. Il valore di partenza di detta variabile dovrà essere almeno pari a 1 (uno) .
| |
− | | |
− | Facciamo l'esempio di una ''Matrice'' bidimensionale, di cui intendiamo ''definire'' dinamicamente (ossia incrementare) il numero degli elementi solamente della prima dimensione (riga), per consentire conseguentemente di volta in volta così il loro utilizzo:
| |
− | '''Private''' b As Byte
| |
− | '''Private''' bb As Byte[]
| |
− |
| |
− |
| |
− | '''Public''' Sub Button1_Click()
| |
− |
| |
− | Inc b
| |
− |
| |
− | <FONT color=gray>' ''Definiamo ora la quantità di righe della Matrice bidimensionale''
| |
− | ' ''(in questo esempio con un un'unità superiore alla quantità precedentemente definita'':</font>
| |
− | bb = New Byte[<FONT color=#B22222>b</font>, 3]
| |
− |
| |
− | bb[b - 1, 1] = b
| |
− |
| |
− | Print bb.Count, bb[b - 1, 1]
| |
− |
| |
− | '''End'''
| |
− | In questo caso le eventuali assegnazioni precedenti di valori agli elementi della Matrice, verranno perse, in quanto ogni volta viene generato un nuovo oggetto variabile di tipo Matrice. Pertanto gli Array multidimensionali e le matrici sono ''statici''.
| |