Gestione di un ciclo in vbs (o visual basic script) con brevi nozioni teoriche su cos'e' un tipo di dato
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 prima lezione abbiamo visto degli esempi dei tre macro tipi di
istruzioni presenti nel mondo della programmazione; in questa lezione
approfondiremo l’argomento vedendo degli altri esempi di cicli, accenneremo
brevemente al salto non condizionato e concluderemo esaminando il concetto
di tipo di dati.
Scripting in visual basic - Cicli: LoopWhile.vbs
Nella prima lezione abbiamo visto come fare a far ripetere una certa azione
al programma per un numero determinato di volte; tuttavia, non sempre sappiamo a
priori quante volte far ripetere l’istruzione al nostro computer, ma potremmo
semplicemente volergli dire “fino a che non si verifica una determinata
situazione continua a ripetere la tale azione”.
L’esempio più comune è quello della password: vogliamo fare un programma che nel
caso in cui l’utente digiti la parola d’ordine “pippo” il programma gli risponda
“risposta esatta”, altrimenti continui a ripetere la richiesta.
Se proviamo a “tradurlo” come abbiamo imparato la volta scorsa (e come è sempre
consigliato fare prima di cominciare a scrivere un programma), risulta qualcosa
del tipo “fino a che l’utente non scrive la parola d’ordine “pippo” continua a
chiedergli di scrivere qualcosa”.
Proviamo a vedere come scriverlo adesso nel codice: creiamo un nuovo documento e
chiamiamolo WhileLoop.vbs
'-------------------------------
' Name: WhileLoop.vbs
' Author: Jeff Skyrunner
' Date: 22/06/10
' Desc: Continua a chiedere la parola d'ordine fino
' a quando l'utente non scrive "pippo"
'------------------------------
' Inizializzo la variabile
sToCompare = “”
' Condizione del ciclo: fino a che sToCompare e' diversa da pippo
' bisogna ripetere la richiesta di parola d'ordine
Do while sToCompare <> "pippo"
' Input Box di lettura del messaggio
sToCompare = InputBox("Scrivi la parola d'ordine")
Loop
MsgBox “Finito!”
Con la prima istruzione
' Inizializzo la variabile
sToCompare = “”
assegniamo alla variabile che ci servirà come confronto il valore “” ovvero “stringa
vuota”; l’inizializzazione delle variabili ed i loro tipi li vedremo nelle
lezioni successive, ma per adesso vi basti pensare che è come dire che al
momento quella variabile “non vale niente” (ma va bene pensare così solo per
adesso che siamo alla seconda lezione!).
Il blocco successivo di istruzioni
Do while sToCompare <> "pippo"
' Input Box di lettura del messaggio
sToCompare = InputBox("Scrivi la parola d'ordine")
Loop
viene letto come “fino a che sToCompare è diverso da pippo (while sToCompare <>
“pippo”) esegui l’istruzione (Do) di visualizzare una input Box con dentro
scritto “Scrivi la parola d’ordine” mettendo quanto scritto dall’utente nella
variabile sToCompare (sToCompare = Input Box(“Scrivi la parola d’ordine”)) e
ripetila in continuazione (Loop)”.
Infine l’istruzione MsgBox “Finito!” ci serve solo per darci una segnalazione
che il programma è effettivamente uscito dal ciclo e termina.
La cosa essenziale da notare è come il controllo di quanto vale sToCompare viene
fatto prima che l’istruzione venga eseguita almeno una volta; provate infatti a
modificare il programma inizializzando sToCompare a “pippo” in questo modo:
'-------------------------------
' Name: WhileLoop.vbs
' Author: Jeff Skyrunner
' Date: 22/06/10
' Desc: Continua a chiedere la parola d'ordine fino
' a quando l'utente non scrive "pippo"
'------------------------------
' Inizializzo la variabile con il valore “pippo”: in questo modo il ciclo
' non verrà mai eseguito
sToCompare = “pippo”
' Condizione del ciclo: fino a che sToCompare e' diversa da pippo
' bisogna ripetere la richiesta di parola d'ordine
Do while sToCompare <> "pippo"
' Input Box di lettura del messaggio
sToCompare = InputBox("Scrivi la parola d'ordine")
Loop
MsgBox “Finito!”
Lanciando il programma possiamo vedere come arriva subito al messaggio “Finito!”:
nel momento in cui il programma arriva all’istruzione Do while sToCompare <> "pippo"
, infatti, sToCompare è già uguale a “pippo” e quindi non esegue il ciclo
nemmeno una volta.
Questo è uno dei motivi essenziali per i quali l’inizializzazione delle
variabili è fondamentale: sbagliare ad inizializzarle o non inizializzarle
affatto può portare a degli effetti inaspettati per il vostro programma.
Scripting in visual basic - Cicli: WhileLoop.vbs
Come possiamo fare se volessimo eseguire il ciclo almeno una volta? Dovremmo
utilizzare un’altra forma di ciclo, ovvero il Do … Loop While.
Creiamo un nuovo documento e lo chiamiamo LoopWhile.vbs
'-------------------------------
' Name: LoopWhile.vbs
' Author: Jeff Skyrunner
' Date: 22/06/10
' Desc: Continua a chiedere la parola d'ordine fino
' a quando l'utente non scrive "pippo"
'------------------------------
' Condizione del ciclo: fino a che sToCompare e' diversa da pippo
' bisogna ripetere la richiesta di parola d'ordine
Do
' Input Box di lettura del messaggio
sToCompare = InputBox("Scrivi la parola d'ordine")
Loop while sToCompare <> "pippo"
Msgbox “Fatto!”
Il programma è facilmente leggibile: si dice al computer di eseguire (Do)
l’istruzione sToCompare = InputBox("Scrivi la parola d'ordine") in continuazione
(Loop) fino a che la variabile sToCompare è diversa da “pippo” (sToCompare <> “pippo”).
In questo caso non è necessario inizializzare la variabile, in quanto comunque
l’istruzione viene eseguita lo stesso almeno una volta, indipendentemente dal
valore iniziale della variabile.
Quando usare un ciclo e quando un altro? Sostanzialmente dipende da quello che
volete fare e da quello che vi piace di più…
A titolo di conoscenza generale, esistono anche i cicli Do … Until e While …
Wend, ma non li tratteremo in quanto poco flessibili e sconsigliati.