|
|
(2 versioni intermedie di uno stesso utente non sono mostrate) |
Riga 1: |
Riga 1: |
− | ==Introduzione==
| + | #REDIRECT [[Array_multidimensionali_con_numero_determinato_di_elementi]] |
− | Una "'''Matrice'''" è 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.
| |
− | <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''".
| |
− | | |
− | | |
− | | |
− | ==Dichiarazione delle Matrici e degli array multidimensionali in Gambas==
| |
− | In Gambas una "''Matrice''" va dichiarata prima della routine all'esterno:
| |
− | | |
− | ''<Font Color= #006400>' viene dichiarata la matrice:''</font>
| |
− | matrix[5, 5] As Integer
| |
− |
| |
− |
| |
− | Public Sub Form_Open()
| |
− |
| |
− | ''<Font Color= #006400>' qui viene usata la matrice:''</font>
| |
− | matrix[....
| |
− | ......
| |
− |
| |
− | '''End'''
| |
− | | |
− | | |
− | Invece, un "''array multidimensionale''" può essere dichiarato anche all'interno della routine:
| |
− | | |
− | Public Sub Form_Open()
| |
− |
| |
− | ''<Font Color= #006400>' viene dichiarato l'array multidimensionale:''</font>
| |
− | Dim a As New Integer[2, 4]
| |
− |
| |
− | ''<Font Color= #006400>' qui viene usato l'array:''</font>
| |
− | a[.....
| |
− | ......
| |
− |
| |
− | '''End'''
| |
− | | |
− | | |
− | ==Creazione di una semplice matrice==
| |
− | | |
− | ''<Font Color= #006400>' Gambas class file''</font>
| |
− |
| |
− | <Font Color= #006400>' ''definiamo una matrice di due righe e due colonne per un totale di quattro elementi:''</font>
| |
− | a[2, 2] As String
| |
− |
| |
− |
| |
− | '''Public''' Sub Button1_Click() ''<Font Color= #006400>' scrive la matrice''</font>
| |
− |
| |
− | Dim x, y As Integer
| |
− | Dim b As String
| |
− |
| |
− | For x = 0 To 1
| |
− | For y = 0 To 1
| |
− |
| |
− | ''<Font Color= #006400>'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= #006400>' legge la matrice''</font>
| |
− |
| |
− | Dim c, d As Integer
| |
− |
| |
− | For c = 0 To 1
| |
− | For d = 0 To 1
| |
− | Print a[c, d]
| |
− | Next
| |
− | Print "------"
| |
− | Next
| |
− |
| |
− | '''End'''
| |
− | | |
− | | |
− | ==Riordinare i valori contenuti negli elementi di un array multidimensionale==
| |
− | Supponiamo di avere un array multidimensionale di 2 righe e 2 colonne. Lo scopo è quello di inserire quattro valori senza un ordine preciso, e di riordinarli in modo ascendente o discendente.
| |
− | | |
− | Possiamo effettuare questo esperimento sia con valori numerici, che con stringhe.
| |
− | | |
− | <FONT color=#B22222><B>Caso di matrice contenente valori numerici</b></font>
| |
− | | |
− | <FONT color=#006400>' ''Gambas class file
| |
− |
| |
− | ' ''dichiariamo un array multidimensionale:''</font>
| |
− | matrix As New Integer[2, 2]
| |
− |
| |
− |
| |
− | '''Public''' Sub Button1_Click()
| |
− |
| |
− | Dim x, y As Integer
| |
− | Dim $b As String
| |
− |
| |
− | <FONT color=#006400>' ''riempiamo l'array con valori numerali interi:''</font>
| |
− | For x = 0 To 1
| |
− | For y = 0 To 1
| |
− | $b = InputBox("Immetti un numero: ")
| |
− | matrix[x, y] = CInt($b)
| |
− | Next
| |
− | Next
| |
− |
| |
− | '''End'''
| |
− |
| |
− |
| |
− |
| |
− | '''Public''' Sub Button2_Click()
| |
− |
| |
− | Dim num As Integer
| |
− |
| |
− | <FONT color=#006400>' ''riordiniamo i valori dell'array in ordine ascendente:''</font>
| |
− | matrix.Sort(gb.Ascent) <FONT color=#B22222>{[[#Note|1]]}</font>
| |
− |
| |
− | <FONT color=#006400>' ''...e li andiamo a vedere ordinati in modo ascendente in console:''</font>
| |
− | For Each num In matrix
| |
− | Print num
| |
− | Next
| |
− |
| |
− | '''End'''
| |
− | | |
− | | |
− | | |
− | <FONT color=#B22222><B>Caso di array multidimensionale contenente valori stringa (si potranno ovviamente inserire valori composti da uno o più caratteri, ed anche numerali)</b></font>
| |
− | | |
− | <FONT color=#006400>' ''Gambas class file</font>
| |
− |
| |
− | <FONT color=#006400>' ''dichiariamo un array multidimensionale:''</font>
| |
− | arr As New string[2, 2]
| |
− |
| |
− |
| |
− | '''Public''' Sub Button1_Click()
| |
− |
| |
− | Dim x, y As Integer
| |
− | Dim $b As String
| |
− |
| |
− | <FONT color=#006400>' ''riempiamo l'array con valori stringa (basta anche un solo carattere):''</font>
| |
− | For x = 0 To 1
| |
− | For y = 0 To 1
| |
− | $b = InputBox("Immetti una parola o un carattere (anche numerale): ")
| |
− | arr[x, y] = $b
| |
− | Next
| |
− | Next
| |
− |
| |
− | '''End'''
| |
− |
| |
− |
| |
− |
| |
− | '''Public''' Sub Button2_Click()
| |
− |
| |
− | Dim car As String
| |
− |
| |
− | <FONT color=#006400>' ''riordiniamo i valori della matrice in ordine ascendente:''</font>
| |
− | arr.Sort(gb.Ascent) <FONT color=#B22222>{[[#Note|1]]}</font>
| |
− |
| |
− | <FONT color=#006400>' ''...e li andiamo a vedere ordinati in modo ascendente in console:''</font>
| |
− | For Each car In arr
| |
− | Print car
| |
− | Next
| |
− |
| |
− | '''End'''
| |
− | | |
− | | |
− | | |
− | ==Ottenere da due array multidimensionali distinti un unico semplice array==
| |
− | | |
− | <FONT color=#006400>' ''dichiariamo due array multidimensionali:''</font>
| |
− | a As New Integer[2, 2]
| |
− | b As New Integer[2, 2]
| |
− |
| |
− |
| |
− | '''Public''' Sub Button1_Click()
| |
− |
| |
− | Dim x, y As Integer
| |
− | Dim $b As String
| |
− |
| |
− | <FONT color=#006400>' ''riempiamo l'array con valori numerali interi:''</font>
| |
− | For x = 0 To 1
| |
− | For y = 0 To 1
| |
− | $b = InputBox("Immetti un numero nel 1° array: ")
| |
− | a[x, y] = CInt($b)
| |
− | Next
| |
− | Next
| |
− |
| |
− | For x = 0 To 1
| |
− | For y = 0 To 1
| |
− | $b = InputBox("Immetti un numero nel 2° array: ")
| |
− | b[x, y] = CInt($b)
| |
− | Next
| |
− | Next
| |
− |
| |
− | '''End'''
| |
− |
| |
− |
| |
− | '''Public''' Sub Button2_Click()
| |
− |
| |
− | Dim c As New Integer[]
| |
− | Dim num As Integer
| |
− |
| |
− | For Each num In a
| |
− | c.add(num)
| |
− | Next
| |
− |
| |
− | For Each num In b
| |
− | c.add(num)
| |
− | Next
| |
− |
| |
− | <FONT color=#006400>' ''Volendo, possiamo anche riordinare i valori:''</font>
| |
− | c.Sort(gb.Descent)
| |
− |
| |
− | For Each num In c
| |
− | Print num
| |
− | Next
| |
− |
| |
− | '''End'''
| |
− | | |
− | | |
− | ==Ottenere da due array multidimensionali distinti un unico array multidimensionale==
| |
− | | |
− | <FONT color=#006400>' ''dichiariamo due array multidimensionali:''</font>
| |
− | a As New Integer[2, 2]
| |
− | b As New Integer[2, 2]
| |
− |
| |
− |
| |
− | '''Public''' Sub Button1_Click()
| |
− |
| |
− | Dim x, y As Integer
| |
− | Dim $b As String
| |
− |
| |
− | <FONT color=#006400>' ''riempiamo l'array con valori numerali interi:''</font>
| |
− | For x = 0 To 1
| |
− | For y = 0 To 1
| |
− | $b = InputBox("Immetti un numero nel 1° array: ")
| |
− | a[x, y] = CInt($b)
| |
− | Next
| |
− | Next
| |
− |
| |
− | For x = 0 To 1
| |
− | For y = 0 To 1
| |
− | $b = InputBox("Immetti un numero nel 2° array: ")
| |
− | b[x, y] = CInt($b)
| |
− | Next
| |
− | Next
| |
− |
| |
− | '''End'''
| |
− |
| |
− |
| |
− | '''Public''' Sub Button2_Click()
| |
− |
| |
− | Dim x, y, z, nn As Integer
| |
− | Dim c As New Integer[2, 4]
| |
− |
| |
− | z = 1
| |
− |
| |
− | <FONT color=#006400>' ''Tentiamo di creare un algoritmo che possa sostituire queste righe:''
| |
− | ' ''c[0, 0] = a[0, 0]''
| |
− | ' ''c[0, 1] = a[0, 1]''
| |
− | ' ''c[0, 2] = b[0, 0]''
| |
− | ' ''c[0, 3] = b[0, 1]''
| |
− |
| |
− | ' ''c[1, 0] = a[1, 0]''
| |
− | ' ''c[1, 1] = a[1, 1]''
| |
− | ' ''c[1, 2] = b[1, 0]''
| |
− | ' ''c[1, 3] = b[1, 1]''</font>
| |
− |
| |
− |
| |
− | For x = 0 To 1
| |
− | For y = 0 To 3
| |
− | z = Abs(z - 1)
| |
− | If y > 1 Then
| |
− | c[x, y] = b[x, z]
| |
− | Else
| |
− | c[x, y] = a[x, z]
| |
− | Endif
| |
− | Next
| |
− | Next
| |
− |
| |
− | <FONT color=#006400>' ''Volendo, possiamo anche riordinare i valori:''</font>
| |
− | c.Sort(gb.Ascent)
| |
− |
| |
− | For Each nn In c
| |
− | Print nn
| |
− | Next
| |
− |
| |
− | '''End'''
| |
− | | |
− | | |
− | | |
− | ==Note==
| |
− | [1] Se volessimo, invece, ordinare i numeri in modo discendente, useremmo: ''gb.Descent''.
| |