Strutture: dichiarazione ed uso: differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| Riga 26: | Riga 26: | ||
variabValor = Inputbox("Immetto un valore per \"riempire\" il campo \"variabile\" di \"nuovaStruttura\": valore3 .") | variabValor = Inputbox("Immetto un valore per \"riempire\" il campo \"variabile\" di \"nuovaStruttura\": valore3 .") | ||
<Font Color= #006400>' ''attribuisco un valore a ciascun campo variabile della | <Font Color= #006400>' ''attribuisco un valore a ciascun campo variabile della variabile di tipo Struttura'' | ||
' ''(qui i valori sono due "costanti" ed uno "variabile" che immetto io con InputBox):''</font> | ' ''(qui i valori sono due "costanti" ed uno "variabile" che immetto io con InputBox):''</font> | ||
<Font Color= #0000FF>nuovaStruttura</font>.valore1 = 3 | <Font Color= #0000FF>nuovaStruttura</font>.valore1 = 3 | ||
Versione delle 02:53, 16 mag 2012
La Struttura similmente all'Array aggrega due o più elementi. Però, mentre l'Array aggrega elementi del medesimo tipo (per esempio tutti valori di tipo Integer, o di tipo Byte, etc), la Struttura aggrega solitamente (ma non necessariamente) elementi di tipo diverso.
Dichiariamo una Struttura con dei campi, che dovranno essere riempiti con dei valori. Tale Struttura avrà un proprio nome e farà da modello alle particolari variabili strutture che saranno effettivamente utilizzate per contenere valori.
PUBLIC Struct NomeStruttura ' definisco i campi della Struttura "modello"
' Questa Struttura si riserverà, occupandola, 9 byte di memoria in tutto:
valore1 As Integer ' dal byte n° 0 al n° 3
valore2 As Integer ' dal byte n° 4 al n° 7
valore3 as Byte ' il byte n° 8
END Struct
' creo una struttura "reale" composta a perfetta immagine di quella modello:
Private nuovaStruttura As New NomeStruttura
' E' possibile anche usare la parola "Struct" invece di New:
Private nuovaStruttura As Struct NomeStruttura
Public Sub Form_Open()
Dim variabValor as Byte
variabValor = Inputbox("Immetto un valore per \"riempire\" il campo \"variabile\" di \"nuovaStruttura\": valore3 .")
' attribuisco un valore a ciascun campo variabile della variabile di tipo Struttura
' (qui i valori sono due "costanti" ed uno "variabile" che immetto io con InputBox):
nuovaStruttura.valore1 = 3
nuovaStruttura.valore2 = 6
nuovaStruttura.valore3 = variabValor
End
Public Sub Button1_Click()
' quindi opero con i valori contenuti da "nuovaStruttura",
' per esempio li faccio mostrare in console:
With nuovaStruttura
Print .valore1
Print .valore2
Print .valore3
End With
End
Strutture contenenti Array e Matrici
Le Strutture possono essere costituite da campi di variabili Array e Matrici.
Esempio:
PUBLIC Struct StrutturaModello
arB[10] As Byte ' array monodimensionale definito
arI As Integer[] ' array monodimensionale non definito
mt$[10, 4] As String ' matrice
End Struct
Private strutturaVariabile As New StrutturaModello
PUBLIC Sub Form_Open()
Dim a, m As Byte
strutturaVariabile.arI = New Integer[]
For a = 0 To 9
With strutturaVariabile
.arB[a] = a
.arI.Add(a + a)
For m = 0 To 3
.mt$[a, m] = Chr(strutturaVariabile.arI[a] + 70)
Next
End With
Next
End
PUBLIC Sub Button1_Click()
Dim a, m As Byte
For a = 0 To 9
With strutturaVariabile
Print .arB[a]
Print .arI[a]
For m = 0 To 3
Print .mt$[a, m]
Next
End With
Next
End
Strutture che contengono altre Strutture
Le Strutture possono contenere, come proprio elemento, altre Strutture. Da tenere presente che è necessario dichiarare e definire la Struttura, che sarà contenuta nella Struttura principale, prima della dichiarazione della Struttura principale contenente.
Esempio:
' va dichiarata e definita innanzitutto la Struttura ' che sarà contenuta nella Struttura principale: Public Struct strutturaInterna sb As Byte sI As Integer s$ As String End Struct Private internaStru As New strutturaInterna ' ...quindi la Struttura principale: PUBLIC Struct StrutturaPrincipale prB As Byte prI As Integer internaStru As Struct strutturaInterna End Struct Private struttVariab As New StrutturaPrincipale Public Sub Form_Open() Dim a As Byte a = 1 ' Assegnamo i valori alle variabili contenute nei campi della Struttura principale: With struttVariab .prB = 10 .prI = 1000 .internaStru.sb = a .internaStru.sI = struttVariab.prI + a .internaStru.s$ = "prova " & Str(a) End With End ' Andiamo a mostrare i risultati in console: Public Sub Button1_Click() Dim a As Byte a = 1 With struttVariab Print .prB Print .prI Print .internaStru.sb Print .internaStru.sI Print .internaStru.s$ End With End
Il risultato in console sarà:
10
1000
1
1001
prova 1
Variabili array di tipo "Struttura"
E' infine possibile realizzare variabili array di tipo "Struttura".
Esempio 1 (variabili Strutture array con numero di elementi definito)
Public Struct strutturaModello
prB As Byte
prI As Integer
End Struct
' Dichiariamo la variabile della Struttura come array con numero di elementi definito.
' Sarà necessario inserire dopo "As" la parola "Struct":
Private strutturaVariabile[10] As Struct StrutturaModello
Public Sub Form_Open()
Dim a As Byte
' Assegnamo i valori agli elementi della Struttura-Array:
For a = 0 To 9
With strutturaVariabile[a]
.prB = a
.prI = 1000 + a
End With
Next
End
' Andiamo a mostrare i risultati in console:
Public Sub Button1_Click()
Dim a As Byte
For a = 0 To 9
With strutturaVariabile[a]
Print .prB
Print .prI
End With
Next
End
Esempio 2 (variabili Strutture array con numero di elementi definito)
Public Struct strutturaModello
prB As Byte
prI As Integer
End Struct
' Dichiariamo la variabile della Struttura come array con numero di elementi definito.
' In questo caso sarà necessario inserire dopo "As" la parola "New":
Private strutturaVariabile As New StrutturaModello[10]
Public Sub Form_Open()
Dim a As Byte
' Assegnamo i valori agli elementi della Struttura-Array:
For a = 0 To 9
strutturaVariabile[a] = New StrutturaModello
With strutturaVariabile[a]
.prB = a
.prI = 1000 + a
End With
Next
End
' Andiamo a mostrare i risultati in console:
Public Sub Button1_Click()
Dim a As Byte
For a = 0 To 9
With strutturaVariabile[a]
Print .prB
Print .prI
End With
Next
End
Esempio 3 (variabili Strutture array con numero di elementi indefinito)
Public Struct strutturaModello
prB As Byte
prI As Integer
End Struct
' Dichiariamo la variabile della Struttura come array con numero di elementi indefinito.
' In questo caso sarà necessario inserire dopo "As" la parola "New":
Private prima As New StrutturaModello[]
' Dichiariamo un'altra variabile simile alla Struttura modello:
Private seconda As New StrutturaModello
Public Sub Form_Open()
Dim a As Byte
prima = New StrutturaModello[]
' Assegnamo i valori agli elementi della Struttura-Array:
For a = 0 To 9
seconda = New StrutturaModello
With seconda
.prB = a
.prI = 1000 + a
End With
' La variabile Struttura array vuole una variabile Struttura - non array - del tipo "StrutturaModello":
prima.Add(seconda)
Next
End
' Andiamo a mostrare i risultati in console:
Public Sub Button1_Click()
Dim a As Byte
For a = 0 To 9
With prima[a]
Print .prB
Print .prI
End With
Next
End