definizioni di variabili e costanti ed esempi pratici di gestione tipi di dati con funzioni di conversione
Open Eye realizzazione siti web- info@open-eye.it
Open Eye realizzazione siti web- info@open-eye.it
Visual Basic Script: Cicli e tipi di dati
Nella prime lezioni abbiamo visto come tradurre quello che vogliamo far fare
al nostro computer in una serie di macroistruzioni per lui comprensibili (istruzioni
“semplici”, condizionali e cicli) con alcuni esempi pratici, ed abbiamo
fatto una breve digressione teorica sui tipi dati. In questa terza lezione
faremo ancora un po’ di teoria, guardando cosa sono e come vengono gestite
le variabili e costanti, guarderemo come scoprire il loro tipo dati e
scriveremo alcuni programmi per imparare a gestirli.
Scripting in visual basic - Variabili e costanti
Nelle lezioni precedenti abbiamo già utilizzato le variabili per i nostri
esempi, ma non le abbiamo definite, se non brevemente.
Abbiamo detto che si può pensare alle variabili come a dei contenitori
all’interno dei quali inserire dei valori, che possono essere di uno qualsiasi
dei tipi di dati definiti in precedenza. Detto con maggiore precisione si può
dire che le variabili sono dei riferimenti a delle aree di memoria dove il
computer memorizza i valori assegnati alla variabile stessa. In realtà, a noi
non interessa sapere quali siano le aree di memoria interessate, in quanto è una
cosa che possiamo demandare al computer.
Oltre alle variabili, esistono le costanti; la differenza tra variabili e
costanti è abbastanza intuibile dal nome: il valore assegnato ad una variabile è
modificabile durante il programma, mentre quello delle costanti è fisso.
Vediamo come si dichiarano queste due entità in vbs; per le costanti la
nomenclatura dice
Const Nome = valore
Ovvero, ad esempio
Const sEsempio = “stringa di esempio”
Const iNumero = 6
Const dDataCompleanno = #16-8-79#
Mentre per le variabili si utilizza la parola Dim
Dim Nome
Ovvero
Dim iNumVar
Come potete vedere dagli esempi, potete assegnare qualsiasi nome alle variabili ed alle costanti, basta che il nome non sia più lungo di 40 caratteri e cominci con uno dei caratteri dell’alfabeto (quindi niente numeri o segni di interpunzione). Inoltre, il vbs non fa distinzione tra maiuscole e minuscole per quanto riguarda i nomi delle variabili, quindi sEsempio è uguale a sesempio.
Scripting in visual basic - Ottenere il tipo dati: TestVarType.vbs
Dopo aver visto un po’ di definizioni teoriche su variabili e tipi dati, vediamo
come fare a capire da programma il tipo di dato di una variabile e prendiamo
confidenza con la funzione VarType e l’operatore Select Case.
Creiamo un nuovo programma, e chiamiamolo TestVarType.vbs
'-------------------------------
' Name: TestVarType.vbs
' Author: Jeff Skyrunner
' Date: 23/06/10
' Desc: Esempi di recupero tipi dati
'------------------------------
' Dichiarazione delle variabili
Dim vVariabile
Dim sTipoVariabile
' Leggo il tipo dato della variabile vVariant
iTipo = VarType(vVariabile)
' Visualizzo un messaggio con il numero restituito dalla funzione
Msgbox iTipo
' Uso la funzione Select ... Case per evitare di scrivere
' tantissimi If ... Then ... Else
Select Case iTipo
Case 0
sTipoVariabile = "Vuoto (non inizializzato)"
Case 1
sTipoVariabile = "Null (dato non valido)"
Case 2
sTipoVariabile = "Intero"
Case 3
sTipoVariabile = "Long"
Case 4
sTipoVariabile = "Single"
Case 5
sTipoVariabile = "Double"
Case 6
sTipoVariabile = "Currency"
Case 7
sTipoVariabile = "Date"
Case 8
sTipoVariabile = "String"
Case 9
sTipoVariabile = "Oggetto"
Case 10
sTipoVariabile = "Errore"
Case 11
sTipoVariabile = "Booleano"
Case 12
sTipoVariabile = "Variant"
Case 13
sTipoVariabile = "Oggetto per accesso a dati"
Case 17
sTipoVariabile = "Byte"
Case 8192
sTipoVariabile = "Array"
Case Else
sTipoVariabile = "Tipo non previsto"
End Select
' Visualizzo il tipo dati
msgbox "Il tipo di dato di vVariabile è " & sTipoVariabile
' Assegno un nuovo valore alla variabile
vVariabile = 1
Non spaventatevi: è lungo (e prossimamente vedremo come fare a renderlo molto
migliore in termini di leggibilità) ma è semplice da capire, tenendo d’occhio un
paio di passaggi chiave.
Andiamo ad analizzarlo riga per riga:
' Dichiarazione delle variabili
Dim vVariabile
Dim sTipoVariabile
Dim iTipo
Qui c’è poco da dire: dichiariamo le variabili che utilizzeremo; per quanto sia
vero che il vbscript non richiede che le variabili vengano dichiarate
esplicitamente prima di utilizzarle, adesso che state muovendo i primi passi nel
mondo della programmazione è meglio che vi abituiate a farlo, per semplici
motivi di ordine mentale… diciamo che ci sarà tempo più tardi per diventare
disordinati!
' Leggo il tipo dato della variabile vVariant
iTipo = VarType(vVariabile)
In questa istruzione utilizziamo la funzione VarType di vbscript che ci permette
di leggere il tipo di dati associato ad una variabile ed assegnarlo a iTipo;
tuttavia, leggendo sul manuale la descrizione della funzione (il manuale si può
scaricare dal sito della microsoft
http://www.microsoft.com/downloads/details.aspx?FamilyId=01592C48-207D-4BE1-8A76-1C4099D7BBB9&displaylang=en
) possiamo vedere che la funzione restituisce un valore intero a seconda del
tipo di dati.
La dimostrazione che la funzione abbia funzionato correttamente, ce la da
l’istruzione successiva:
' Visualizzo un messaggio con il numero restituito dalla funzione
Msgbox iTipo
Che ci fa comparire a video il numero che abbiamo inserito in iTipo, ovvero 0
Evidentemente, un numero non ci fa capire chiaramente di fronte a che tipo dati
siamo di fronte, quindi rendiamo più leggibile il risultato, usando il blocco di
istruzioni successive:
' Uso la funzione Select ... Case per evitare di scrivere
' tantissimi If ... Then ... Else
Select Case iTipo
Case 0
sTipoVariabile = "Vuoto (non inizializzato)"
Case 1
sTipoVariabile = "Null (dato non valido)"
Case 2
sTipoVariabile = "Intero"
Case 3
sTipoVariabile = "Long"
Case 4
sTipoVariabile = "Single"
Case 5
sTipoVariabile = "Double"
Case 6
sTipoVariabile = "Currency"
Case 7
sTipoVariabile = "Date"
Case 8
sTipoVariabile = "String"
Case 9
sTipoVariabile = "Oggetto"
Case 10
sTipoVariabile = "Errore"
Case 11
sTipoVariabile = "Booleano"
Case 12
sTipoVariabile = "Variant"
Case 13
sTipoVariabile = "Oggetto per accesso a dati"
Case 17
sTipoVariabile = "Byte"
Case 8192
sTipoVariabile = "Array"
Case Else
sTipoVariabile = "Tipo non previsto"
End Select
Come indica chiaramente il commento, la funzione case serve per risparmiarci un
po’ di if: invece di scrivere
If iTipo = 0 Then
sTipoVariabile = "Vuoto (non inizializzato)"
Elseif iTipo = 1 Then
sTipoVariabile = "Null (dato non valido)"
Elseif iTipo = 1 Then
sTipoVariabile = "Intero"
...
Preferiamo questo sistema che è più leggibile ed organico; sostanzialmente
diciamo al computer “scegli il caso in cui si trova iTipo (Select case iTipo):
in caso sia 0 (case 0) allora assegna a sTipoVariabile il valore “Vuoto (non
inizializzato)” (sTipoVariabile = "Vuoto (non inizializzato)"), in caso sia 1
(case 1) allora assegna a sTipoVariabile il valore “Null (dato non valido)” (sTipoVariabile
= "Null (dato non valido)") e così via.
Così facendo abbiamo assegnato a sTipoVariabile una stringa che sia descrittiva
per l’utente, oltre che più chiara, ed infatti l’istruzione successiva
' Visualizzo il tipo dati
msgbox "Il tipo di dato di vVariabile è " & sTipoVariabile
ci dice che “il tipo di dato di vVariabile è Vuoto (non inizializzato)”, il che
corrisponde sia a quanto restituito dalla funzione VarType, sia da quanto ci
aspettiamo, in quanto, effettivamente, vVariabile non ha nessun valore associato.
Piccola precisazione prima di procedere: l’operatore “&” è l’operatore che ci
permette di fare l’unione di due stringhe (in gergo, appending) e lo adoperiamo
quando vogliamo “costruire” una frase unica unendo due stringhe, come in questo
caso; lo vedremo meglio nel prossimo paragrafo.
Vediamo cosa succede assegnando alla variabile vVariabile il valore 1
' Assegno un nuovo valore alla variabile
vVariabile = 1
Questa volta il msgbox successivo
' Ne leggo il nuovo tipo
iTipo = VarType(vVariabile)
' Visualizzo un messaggio con il numero restituito dalla funzione
Msgbox iTipo
Ci restituirà il valore 2, che con la select case successiva (che non ripetiamo
in quanto identica a prima) ed il msgbox ci fa visualizzare il messaggio “il
tipo di dato vVariabile è Intero”.