- 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
Corso vbs\Variabili e costanti
Guido Ruggeri su winguidotecnica, 04\12\2010, h. 16.57.
Dato che è venuto fuori il discorso, sospendiamo
l'argomento dei confronti tra stringhe e apriamo una
parentesi per parlare di variabili e costanti.
Abbiamo ormai imparato che quando programmiamo noi usiamo
dei valori. E che i valori possono essere stringhe o numeri.
E che i numeri si distinguono in diversi tipi: Boolean,
Byte, Integer, Long, Single, Double, Currency, Date.
15 è un valore di tipo Byte.
3,1416 è un valore di tipo Single.
"Guido Ruggeri" è un valore di tipo String.
Una variabile è un'entità destinata a contenere dei
valori.
Fisicamente, si tratta di uno spazio nella memoria del
computer. Quando definiamo una variabile, in realtà quello
che fa il nostro interprete è dire al computer: guarda,
computer, che, da adesso in poi, fino a quando non ti dirò
diversamente, tu alcuni byte della tua memoria li dovrai
destinare a contenere certi valori che di volta in volta ti
assegnerò. Ci siamo intesi, compù?
Per nostra comodità, le variabili le identifichiamo con
dei nomi.
I nomi delle variabili servono a noi nel nostro codice
sorgente, ma non hanno significato per il processore.
Se una variabile è destinata a contenere il cognome di una
persona, noi, per nostra comodità, la chiameremo Cognome.
Esempio:
Cognome = "Ruggeri"
questa è una istruzione di assegnazione, con cui abbiamo
assegnato il valore "Ruggeri" alla variabile Cognome.
Questo significa che nel resto del programma noi potremo
usare la variabile Cognome come se fosse il valore
"Ruggeri".
Ad esempio, se eseguiamo l'istruzione:
msgbox "Io mi chiamo: Guido " & Cognome
otterremo una finestra in cui appare la stringa: "Io mi
chiamo: Guido Ruggeri".
Ma questo vale finché non assegneremo un altro valore alla
variabile Cognome.
Se ad esempio qualche riga dopo eseguiamo:
Cognome = "De Angelis"
l'assegnazione precedente si annulla, e il contenuto della
variabile Cognome, che era "Ruggeri", viene sostituito da
"De Angelis".
Qualche altra riga dopo, possiamo quindi eseguire
l'istruzione:
msgbox "Il moderatore si chiama: Antonio " & Cognome
e otterremo una finestra in cui appare la stringa: "Il
moderatore si chiama: Antonio De Angelis".
L'assegnazione, abbiamo detto, si ottiene usando l'operatore
=
Il nome della variabile si scrive a sinistra del segno di
= , mentre alla sua destra si scrive il valore da
assegnare alla variabile.
Oppure, anziché scrivere direttamente il valore, si scrive
qualcosa che ne restituisce uno: ad esempio, un'altra
variabile, un'espressione, una funzione, eccetera.
Ad esempio, scriviamo:
Area = 25 * 30
questa è un'istruzione di assegnazione con cui assegniamo
alla variabile Area il valore dell'espressione 25
moltiplicato 30.
La variabile Area assume quindi il valore 750, come possiamo
verificare scrivendo:
msgbox "L'area è: " & Area
otteniamo una finestra in cui appare la stringa: "L'area
è: 750".
I nomi delle variabili, abbiamo detto, li scegliamo a nostra
comodità, tanto devono servire a noi, non al processore,
perché quei nomi al processore nemmeno ci arrivano. Al
processore arrivano i corrispondenti indirizzi di memoria.
Le regole per i nomi delle variabili sono:
possono contenere lettere e numeri, ma devono iniziare con
una lettera;
esempio: posso chiamare due variabili Cognome1 e Cognome2,
ma non posso chiamarle 1Cognome e 2Cognome;
non possono contenere punti, spazi, parentesi e altri
caratteri che l'interprete usa come operatori;
esempio: non posso chiamare una variabile Cognome e nome, se
avessi questa esigenza dovrei chiamarla CognomeENome, cioè
tutta una parola senza spazi, oppure potrei fare uso del
segno di sottolineatura tra una parola e l'altra:
Cognome_e_nome.
Non potrei invece usare il trattino, perché quello viene
usato dal linguaggio come operatore per la sottrazione.
Quindi non potrei chiamare una variabile Cognome-e-nome.
Inoltre:
non possono essere più lunghi di 255 caratteri;
non possono coincidere con nessuna delle parole riservate
che il linguaggio già usa per istruzioni, operatori,
costanti e funzioni.
Ad esempio, non possiamo chiamare una variabile Msgbox,
perché quella parola già corrisponde ad una funzione del
linguaggio.
Le istruzioni di assegnazione, abbiamo detto, si realizzano
usando il segno di =, che è lo stesso che viene usato
per i confronti di uguaglianza.
Questo può portare, quando si legge il codice sorgente di
un programma, a confondere le istruzioni di assegnazione con
quelle di confronto.
Una volta, nelle prime versioni di Basic, non ci si poteva
sbagliare perché l'assegnazione richiedeva l'uso della
parola Let.
Si doveva cioè scrivere così:
Let Cognome = "Ruggeri"
Let Area = 25 * 30
poi l'uso della parola Let è diventato facoltativo, e in
VBScript è stato abolito.
Adesso parliamo di costanti.
Una costante è simile ad una variabile. La differenza è
che viene definita una volta per tutte all'inizio del
programma, e poi non può più essere modificata.
Alcune costanti sono già definite dal linguaggio, e alcune
abbiamo già imparato a conoscerle.
Le costanti True e False sono costanti booleane che
significano vero o falso. True vale -1, False vale 0.
Altre costanti, di tipo stringa, sono: vbCr, vbCrLf, vbLf,
che rappresentano i codici per il ritorno a capo.
Queste costanti le troviamo già pronte senza che noi
dobbiamo fare niente per definirle.
Altre costanti ce le possiamo definire noi, e in genere si
fa all'inizio del programma che stiamo scrivendo, usando
l'istruzione Const.
Ad esempio, la seguente istruzione:
Const PiGreco = 3.1416
definisce la costante PiGreco, e le assegna il valore
3,1416.
Quindi posso usare tale costante nel programma, non
diversamente da una variabile.
Proviamo, ad esempio, a scrivere il seguente programma per
il calcolo della circonferenza e dell'area di un cerchio.
Ed ora, un po' di pubblicità
:Const PiGreco = 3.1416
Raggio = CSng(InputBox("Raggio del cerchio:"))
Circonferenza = 2 * Raggio * PiGreco
Area = Raggio * Raggio * PiGreco
Msgbox "La circonferenza è: " & Circonferenza & vbCr &
"L'area è: " & Area
e se alla prima riga, anziché scrivere:
Const PiGreco = 3.1416
avessimo scritto:
PiGreco = 3.1416
cioè senza l'istruzione Const, cosa sarebbe cambiato?
Che PiGreco sarebbe stata una variabile, anziché una
costante, ma il programma avrebbe funzionato ugualmente.
Dov'è allora la differenza?
Che, definendo PiGreco come variabile, nulla ci avrebbe
impedito, qualche riga più avanti, di assegnarci un altro
valore, scrivendo, ad esempio:
PiGreco = 17
oppure:
PiGreco = "Lettera dell'alfabeto greco che viene dopo
Omicron"
Avendola già definita come costante, invece, tali
istruzioni non verrebbero accettate e genererebbero un
errore. Infatti ad una costante si può fare una sola
assegnazione, e poi non può più essere modificata.
Le costanti si usano quindi per mettere maggior ordine nei
nostri programmi.
Tenete presente che il problema dei programmi, specialmente
di quelli scritti in Basic, è che man mano che si
ingrandiscono e vengono modificati diventano sempre più
ingarbugliati. Diventa quindi facile usare per sbaglio il
nome di una variabile, dimenticando che era già stata
usata per altri scopi in altre parti del programma, col
rischio di far perdere a quella variabile il valore che, per
quegli altri scopi, dovrebbe avere .
Quindi ben venga tutto ciò che serve a mettere ordine e ad
evitarci di fare errori. L'uso delle costanti va in questa
direzione.
d.
> un chiarimento: le costanti create da noi vanno scritte
> all'inizio del programma o l'interprete le riconosce cmq,
> indipendentemente da dove sono situate?
Risposta:
In realtà non è necessario collocarle all'inizio.
Proviamo ad eseguire questo programma:
Raggio = CSng(InputBox("Raggio"))
Area = Raggio * Raggio * PiGreco
Const PiGreco = 3.1416
msgbox "Area: " & Area
Il programma funziona perfettamente. Eppure la costante
PiGreco l'ho definita nella terza riga, cioè addirittura
dopo averla già utilizzata, nella seconda riga.
Ciò nonostante, quando arriva alla seconda riga
l'interprete già sa che PiGreco deve valere 3,1416.
Diverso sarebbe stato il discorso se PiGreco l'avessi
definita come variabile, cioè se nella terza riga avessi
scritto:
PiGreco = 3.1416
In questo caso il programma, arrivato alla seconda riga,
avrebbe trovato la variabile PiGreco ancora priva di valore,
e quindi, nella moltiplicazione, l'avrebbe considerata
uguale a 0.
Avremmo quindi ottenuto Area = 0, indipendentemente da
quale valore si imetta per il raggio.
Mentre nella terza riga avremmo assegnato a PiGreco il
valore corretto, ma ormai sarebbe inutile perché l'area
sarebbe già stata calcolata con risultato 0.
Non succede, invece, se definiamo PiGreco come costante.
Questo cosa ci fa capire? che in realtà l'interprete
esamina il programma nella sua interezza prima di iniziare
ad eseguirlo, e l'assegnazione delle costanti avviene in
questa fase, indipendentemente da dove sono state scritte.
E' tuttavia una buona abitudine collocarle all'inizio del
programma.
Andando avanti, vedremo che le costanti, come anche le
variabili, si distinguono in pubbliche e private, a seconda
che abbiano validità nell'intero programma oppure soltanto
limitatamente ad alcune sua parti.
Perciò è importante abituarsi a definirle in modo
ordinato, piuttosto che sparpagliarle all'interno del
programma.
***
Aniceto Fois.
Con queste festività sarò certamente rimasto indietro, ma spedisco ugualmente questi semplici esercizi ispirati dalla scarsa padronanza delle equivalenze da parte di mia moglie mentre preparava dei dolcetti:
centilitri = csng(inputbox("misura espressa in centilitri"))
decilitri = csng(inputbox("misura espressa in decilitri"))
parametro = 10
msgbox "decilitri= " & centilitri/parametro
msgbox "centilitri= " & decilitri*parametro
metricubi = csng(inputbox("valore espresso in metri cubi"))
litri = csng(inputbox("valore espresso in litri"))
parametro = 1000
msgbox "litri= " & metricubi*parametro
msgbox "metri cubi= " & litri/parametro
Guido Ruggeri.
Pur nella loro semplicità, esercizi come questi sono molto
utili per rompere il ghiaccio e cominciare a destreggiarsi
con un linguaggio di programmazione.
Bene, continuiamo così!