- presentazione del sito
- Registrazione
- Eventi, mostre, convegni ed iniziative segnalate dalle aziende
- Recensioni ed articoli
- Le Mailing Lists
- La rivista Pc Ciechi
- Wiki
- Chi siamo
- Donazioni
- Un progetto degno di nota: Wintalbra
- Come navigare in questo sito
- rss
- Bancomat Accessibili sul territorio nazionale
- Contattaci
- I sostenitori di SpazioAusili
tipo di variabili in visual basic script
Guido Ruggeri su winguidotecnica, 28\12\2009, h. 11.44.
Abbiamo visto, con l'ultimo esercizio, che è importante
fare chiarezza su quale tipo di variabile stiamo usando.
Abbiamo anche detto che c'è una differenza tra VBScript e
altre versioni di Basic.
Nelle altre versioni, le variabili possono essere
specializzate per contenere soltanto un certo tipo di
valore: o numeri, o stringhe.
Apriamo allora una parentesi per parlare dei tipi di
variabile in Visual Basic 5, quello con cui scrivo WinGuido.
Ma sarebbe la stessa cosa anche per Visual Basic 6.
Il tipo più semplice è il tipo booleano.
Una variabile booleana può assumere soltanto due valori:
Vero, o Falso.
In inglese, True o False.
Di fatto si tratta di una variabile numerica: Visual Basic
la interpreta come falsa quando vale zero, vera quando
assume un qualsiasi valore diverso da zero.
Spesso una variabile booleana viene indicata col nome di
"flag", che in inglese significa bandiera.
In Visual Basic, se voglio che una variabile sia soltanto
booleana, devo dichiararla all'inizio del programma.
Facciamo l'esempio con una variabile che chiamiamo Successo,
che useremo per indicare se una qualche operazione ha avuto
successo oppure no.
Ed ora, un po' di pubblicità
:Dim Successo As Boolean
Con questa istruzione, noi diciamo al nostro interprete
Visual Basic: guarda che tutte le volte che, nel programma
che sto scrivendo, userò la variabile Successo, tu la
dovrai interpretare come variabile che contiene un valore
booleano: o True, o False.
Se quindi io cercherò di mettere nella variabile Successo
un valore che non è booleano, tu, interprete mio bello,
dovrai cercare, se sarà possibile, di convertirlo a valore
booleano.
Cioè, se io scriverò:
Successo = 10
tu dovrai convertirlo in:
Successo = True
Se invece io scriverò:
Successo = "E' riuscito!"
cioè se cercherò di mettere nella variabile Successo una
stringa che tu non sapresti convertire in True o in False,
tu non dovrai accettarlo.
Mi segnalerai cioè che ho commesso un errore.
Dopo il tipo booleano, quello più semplice è il tipo
Byte.
Una variabile di tipo Byte può contenere soltanto numeri
interi positivi, da 0 fino a 255.
Perciò la useremo soltanto quando dobbiamo fare dei
piccoli conteggi, e siamo sicuri di non dover andare oltre
il valore massimo che è 255.
Ad esempio, se vogliamo contare gli alunni della classe di
una scuola. Nessuna classe arriva a oltre 255 alunni,
perciò lo possiamo fare.
L'istruzione per dichiararla è:
Dim Alunni As Byte
Dopodiché, se scriverò:
Alunni = 27
andrà tutto bene e il programma accetterà il valore 27
nella variabile Alunni.
Se invece scriverò:
Alunni = 1265
il programma non lo accetterà perché avrò cercato di
mettere in una variabile di tipo byte un numeero superiore a
255. Avrò, cioè, provocato quello che si definisce
errore di overflow.
Se infine scriverò:
Alunni = "Sono tutti dei somari"
il programma non lo accetterà, perché avrò cercato di
mettere una stringa in una variabile di tipo byte, cioè
numerica.
E adesso passiamo alle variabili di tipo Integer. Con una
avvertenza: nelle più recenti versioni di Visual Basic,
Integer non corrisponde a quanto diremo adesso, ma al tipo
Long di cui parleremo più avanti.
Integer, lo dice la parola, così come Byte può contenere
solo numeri interi.
Ma Integer, a differenza di Byte, può contenere anche
numeri negativi.
Il range di valori tra cui può variare un Integer è:
da -32768 fino a 32767
Quindi è un intervallo abbstanza ampio per farci diversi
tipi di conteggio.
Ad esempio, le installazioni di WinGuido riscontrate dal
server finora sono state circa 16200. Se per numerarle
avessi usato una variabile di tipo integer, ce ne starebero
ancora circa il doppio, cioè fino a 32767.
Un esempio di dichiarazione di una tale variabile:
Dim Installazioni As Integer
Tuttavia, se si vuole lavorare su grandi numeri, è più
adatto l'altro tipo di numero intero, che è il tipo Long.
Il range di valori tra cui può variare un Long è:
da -2147483648 fino a 2147483647
Con un tipo Long posso stare tranquillo. Le installazioni di
WinGuido potranno aumentare quanto si vuole, ma certo fino a
due miliardi e passa non ci arriveranno mai.
Perciò, piuttosto che contarle con una variabile di tipo
Integer, mi conviene farlo con una variabile di tipo Long.
Dim Installazioni As Long
Finora abbiamo parlato di Boolean, Byte, Integer e Long, ma
ci sono anche tipi di variabile che possono contenere numeri
decimali, non solo interi.
Nei nostri ultimi esercizi, ci siamo destreggiati nel
calcolare aree e perimetri.
Ma questi possono anche essere decimali.
Consideriamo ad esempio un triangolo di base 5 ed altezza 7:
l'area è 17,5
Supponiamo di svolgere il seguente esercizio:
Dim Base as Integer
Dim Altezza as Integer
Dim Area as Integer
Base = 5
Altezza = 7
Area = Base * Altezza / 2
cosa succederebbe nell'ultima riga? che l'interprete
cercherebbe di mettere il valore 17,5 nella variabile Area.
Ma, nella terza riga, gli avevamo detto chiaramente: guarda
che Area è un Integer. Perciò vuole solo numeri interi.
17,5 non lo vuole.
Cosa farà il nostro interprete? Arrotonderà il valore al
numero intero più vicino, vale a dire: lo convertirà al
tipo Integer, e quindi lo memorizzerà nella variabile
Area.
Perciò ci ritroveremo con:
Area = 18
quindi, 18 anziché 17,5 perché c'è stato un
arrotondamento.
Per non avere arrotondamenti, dobbiamo usare tipi di
variabili numeriche che ammettono anche i decimali.
E questi sono 3: Single, Double, Currency.
Single vuol dire: precisione semplice, Double vuol dire
precisione doppia.
Se nell'esercizio precedente, la terza riga la sostituiamo
con:
Dim Area as Single
ecco che non avremo problemi, perché alla fine otterremo:
Area = 17,5
Viene da sé che converrà dimensionare anche Base e
Altezza come Single anziché come Integer, dato che anche i
loro valori potrebbero richiedere dei decimali.
I calcoli con i numeri decimali, si sa, portano sempre con
sé delle approssimazioni: più decimali consideriamo,
più sono precisi.
Consideriamo ad esempio la lunghezza di una circonferenza,
che si sa potersi ottenere moltiplicando il diametro per
3,14.
Se ad esempio un cerchio ha diametro 5, la sua circonferenza
è lunga 15,7.
Dire, però, che quel moltiplicatore sia 3,14 è una
approssimazione alla seconda cifra decimale.
In realtà quel numero vale 3,14159265358979 e nemmeno
finisce qui, continua con altre innumerevoli cifre.
Applicandolo con questa precisione, otteniamo che la
circonferenza è lunga 15,707963.
Insomma, chiaro il concetto? a volte, per sbrigarci,
consideriamo solo le prime cifre decimali, ma se vogliamo
una precisione maggiore dobbiamo considerarne di più.
E questa è la differenza tra variabile di tipo Single e
variabile di tipo Double.
Il tipo Single è più sbrigativo, mentre con il tipo
Double, si può arrivare a precisioni maggiori.
Il tipo Currency, invece, non arriva a grandi precisioni per
quanto riguarda i numeri decimali, ma permette di manipolare
grandi numeri per quanto riguarda la parte intera. Perciò
è indicato in modo particolare per le variabili che
rigurardano valuta in denaro.
Ad esempio:
supponiamo che oggi il cambio dell'euro in dollari valga
1,4492.
Ho 12 euro e 30 centesimi.
A quanti dollari corrispondono?
Dim Euro as Currency
Dim Dollari as Currency
Dim Cambio as Single
Cambio = 1,4492
Euro = 12,30
Dollari = Euro * Cambio
Msgbox = "Dollari = " & Dollari
Otterremo Dollari = 17,8352
Con ciò abbiamo parlato dei tipi di variabili numeriche:
Boolean, Byte, Integer, Long, Single, Double, Currency.
Ma prima di passare a parlare delle variabili di stringa,
c'è ancora da parlare di un tipo particolare di variabile
numerica.
Sto parlando delle variabili di tipo data. In inglese, Date.
Le variabili Date contengono, sotto forma numerica, date
comprensive di giorno, mese ed anno, ma in realtà
contengono anche ore, minuti e secondi.
Ma credo che parlare delle variabili Date sia un argomento
complesso che richiederà una lezione a parte. Per ora
limitiamoci a questo breve accenno.
Invece arriviamo finalmente alle variabili di tipo stringa,
in inglese String.
Ormai già sappiamo cos'è una stringa, perciò vado
subito con gli esempi di dichiarazione:
Dim Nome as String
Dim Cognome as String
Si può anche fare distinzione tra stringhe a lunghezza
fissa e stringhe a lunghezza variabile, ma dato che VBScript
questa distinzione non la supporta, lasciamola perdere.
Recapitolando, abbiamo parlato di variabili di tipo:
Boolean, Byte, Integer, Long, Single, Double, Currency,
Date, String.
Accenniamo che ci sono anche le variabili di tipo Object,
molto importanti nella programmazione a oggetti, ma siccome
siamo ancora lontani dal parlarne, per ora lasciamole da
parte.
Invece vorrei parlare delle variabili di tipo Variant.
Le variabili Variant possono contenere, di volta in volta,
un qualsiasi valore corrispondente ad uno qualsiasi degli
altri tipi.
Ad esempio, definiamo una variabile di tipo Variant:
Dim Esempio as Variant
poi potremo scrivere:
Esempio = True
e la variabile Esempio assume un valore di tipo booleano.
Qualche riga più avanti, potremo scrivere:
Esempio = 12
ed ecco che la variabile Esempio assume un valore di tipo
byte.
Poi, qualche riga dopo, scriveremo:
Esempio = 3,14
ed ecco che la variabile Esempio assume un valore di tipo
single.
Più avanti ancora scriviamo:
Esempio = "Io sono una variabile di tipo Variant"
ed ecco che la variabile Esempio assume un valore di tipo
stringa.
In parole povere, le variabili Variant non corrispondono ad
un tipo di dato definito, ma accettano qualsiasi dato
corrispondente a qualsiasi altro tipo di variabile.
Abbiamo parlato di Visual Basic 5 o 6.
E in VBScript?
In VBScript ci sono soltanto variabili di tipo Variant. Ecco
perché dicevamo che non è possibile definirne il tipo.
Ed ecco perché diventa importante supplire usando le
funzioni di conversione.
Già, le funzioni di conversione. Abbiamo parlato dei
diversi tipi di variabili, adesso dobbiamo parlare delle
funzioni che permettono di trasformare un tipo in un altro.
Ma per questo forse ci vorrà un'altra lezione apposita.