Differenze tra le versioni di "Matrici ed Array multidimensionali definiti"
(Creata pagina con '==Introduzione== 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...') |
|||
Riga 1: | Riga 1: | ||
==Introduzione== | ==Introduzione== | ||
− | 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. | + | Una "'''Matrice'''" è 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>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>Un elemento della Matrice occupa la posizione individuata dall'intersezione tra la ''m''-esima riga e la ''n''-esima colonna della Matrice. |
Versione delle 06:41, 6 giu 2013
Indice
- 1 Introduzione
- 2 Dichiarazione delle Matrici e degli array multidimensionali in Gambas
- 3 Creazione di una semplice matrice
- 4 Riordinare i valori contenuti negli elementi di un array multidimensionale
- 5 Ottenere da due array multidimensionali distinti un unico semplice array
- 6 Ottenere da due array multidimensionali distinti un unico array multidimensionale
- 7 Note
Introduzione
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.
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".
Dichiarazione delle Matrici e degli array multidimensionali in Gambas
In Gambas una "Matrice" va dichiarata prima della routine all'esterno:
' viene dichiarata la matrice: matrix[5, 5] As Integer Public Sub Form_Open() ' qui viene usata la matrice: matrix[.... ...... End
Invece, un "array multidimensionale" può essere dichiarato anche all'interno della routine:
Public Sub Form_Open() ' viene dichiarato l'array multidimensionale: Dim a As New Integer[2, 4] ' qui viene usato l'array: a[..... ...... End
Creazione di una semplice matrice
' Gambas class file ' definiamo una matrice di due righe e due colonne per un totale di quattro elementi: a[2, 2] As String Public Sub Button1_Click() ' scrive la matrice Dim x, y As Integer Dim b As String For x = 0 To 1 For y = 0 To 1 '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": b = InputBox("Immetti un nome: ") a[x, y] = b Next Next End Public Sub Button2_Click() ' legge la matrice 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.
Caso di matrice contenente valori numerici
' Gambas class file ' dichiariamo un array multidimensionale: matrix As New Integer[2, 2] Public Sub Button1_Click() Dim x, y As Integer Dim $b As String ' riempiamo l'array con valori numerali interi: 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 ' riordiniamo i valori dell'array in ordine ascendente: matrix.Sort(gb.Ascent) {1} ' ...e li andiamo a vedere ordinati in modo ascendente in console: For Each num In matrix Print num Next End
Caso di array multidimensionale contenente valori stringa (si potranno ovviamente inserire valori composti da uno o più caratteri, ed anche numerali)
' Gambas class file ' dichiariamo un array multidimensionale: arr As New string[2, 2] Public Sub Button1_Click() Dim x, y As Integer Dim $b As String ' riempiamo l'array con valori stringa (basta anche un solo carattere): 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 ' riordiniamo i valori della matrice in ordine ascendente: arr.Sort(gb.Ascent) {1} ' ...e li andiamo a vedere ordinati in modo ascendente in console: For Each car In arr Print car Next End
Ottenere da due array multidimensionali distinti un unico semplice array
' dichiariamo due array multidimensionali: 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 ' riempiamo l'array con valori numerali interi: 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 ' Volendo, possiamo anche riordinare i valori: c.Sort(gb.Descent) For Each num In c Print num Next End
Ottenere da due array multidimensionali distinti un unico array multidimensionale
' dichiariamo due array multidimensionali: 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 ' riempiamo l'array con valori numerali interi: 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 ' 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] 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 ' Volendo, possiamo anche riordinare i valori: 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.