simply4you.it simply4you.it

   Home
     Articoli, Tutorial...
       Visual Basic
         Lezione 7
Indice
Lez. 01
Lez. 02
Lez. 03
Lez. 04
Lez. 05
Lez. 06
Lez. 07
Lez. 08
Lez. 09
Lez. 10
Lez. 11
Lez. 12
Lez. 13
Lez. 14
Lez. 15
Lez. 16
Lez. 17
Lez. 18
Lez. 19
Lez. 20
Lez. 21
Lez. 22
Lez. 23
Lez. 24
Lez. 25
Lez. 26
Lez. 27
Lez. 28
Lez. 29
Lez. 30
Lez. 31
Lez. 32
Lez. 33


Autore
Giorgio Abraini

E-Mail
giorgio102@libero.it

VBItalia.it



Commenta anche tu !  


LINK Visual Basic













   Invia il link di questo articolo ad un amico  Invia ad un amico Visualizza la versione stampabile di questo articolo  Stampa Commenta questo Articolo  Commenta Parlane in Chat  Chat   Parlane sul Forum  Forum

Corsi Programmazione in aula:
ASP, Dreamweaver MX, Flash MX, HTML, Introduzione alla programmazione strutturata, JSP/Servlet, JavaScript, Linguaggio C, Linux programmazione shell, Oracle PL/SQL, Oracle Portal 9.0.2, PHP, Perl, Programmazione Java, Programmazione Java avanzata, Programmazione web Corso avanzato, Programmazione web Corso base, Programmazione web Corso intermedio, XML


Settima lezione - Utilizzo delle variabili Booleane

Nella scorsa lezione abbiamo visto cosa sono le variabili booleane e quali operazioni si possono fare con esse: ora vediamo come si usano. L'istruzione principale che fa uso di espressioni booleane è il costrutto

"if condizione then istruzione"

che, come dice il nome, esegue una o più istruzioni se si verifica una certa condizione. Ad esempio, l'istruzione:

If lblName.Visible = True Then
	lblName.Caption = "Pippo"
End if

aggiorna la proprietà Caption dell'etichetta lblName se questa etichetta è visibile: il tipo della proprietà Visible, infti, è proprio Boolean. Quando Visual Basic deve eseguire un'istruzione come quella riporta, prima di tutto verifica se l'espressione compresa tra le parole chiave If e Then è vera o falsa: se l'etichetta è visibile (cioè se la proprietà visible è uguale a True), la condizione è verifica e quindi sarà eseguita l'istruzione seguente la parola chiave Then; altrimenti la condizione non sarà verifica e l'istruzione sarà del tutto ignora. Solitamente i programmori VB ("VB" è ovviamente l'abbreviazione di Visual Basic…) utilizzano una sintassi leggermente diversa, organizza su più di una riga (cosiddetta a blocco):

If lblName.Visible = True Then
	lblName.Caption = "Pippo"
End If

In Visual Basic di solito si inserisce una istruzione per ogni riga, poiché è sufficiente il ritorno a capo per far capire a Visual Basic che l'istruzione è termina; nel caso della If…Then, quindi, è possibile far stare tutta l'istruzione sulla stessa riga, ma se le istruzioni che seguono Then vengono riporte nelle righe successive, è necessario indicare dove finiscono le istruzioni appartenenti al blocco If, e questo si fa appunto con la parola chiave End If, estamente come si fa con End Sub o End Function per indicare la fine di una subroutine o di una funzione.
Personalmente ritengo che la seconda sintassi sia più chiara e comoda, soprtutto quando le istruzioni da eseguire nel blocco sono più di una: infti, se volessimo utilizzare la sintassi su una singola riga, bisognerebbe separare le varie istruzioni con i ":", ad esempio:

If lblName.Visible = True Then
	lblName.Caption = "Pippo":Form1.Caption = "Pippo"
	....

(Nota: il cartere " : " può essere utilizzo per riunire più istruzioni sulla stessa riga anche al di fuori di un'istruzione If…Then) L'istruzione If…Then permette di eseguire certe istruzioni anche nel caso in cui la condizione non sia verifica: ciò è possibile grazie alla parola chiave Else, ad esempio:

If strName = "Pippo" Then
	frmProva.Show
Else
	frmProva.Hide
End If

Se la variabile stringa strName è uguale a "Pippo", il form frmProva viene mostro, altrimenti viene nascosto.
In questo modo è possibile ottenere una certa flessibilità nell'esecuzione condizionale di un gruppo di istruzioni; questa flessibilità è ulteriormente aumenta dalla possibilità di utilizzare la parola chiave ElseIf:

If strName = "Pippo" Then
	frmProva.Show
	frmProva.lblName.Caption = "Pippo"
	ElseIf strName = "Topolino" Then
	frmProva.Show
	frmProva.lblName.Caption = "Minnie"
ElseIf strName = "Pluto" Then
	frmProva.Show
	frmProva.lblName.Caption="Orazio"
Else
	frmProva.Hide
End If

In un blocco di questo tipo, Visual Basic comincia a verificare le condizioni una per una: quando una delle condizioni è verifica, vengono eseguite le istruzioni relive a quella condizione, ignorando le altre; se nessuna delle condizioni è verifica, vengono eseguite le istruzioni comprese nella clausola else, se è presente: altrimenti non viene eseguita alcuna istruzione. Infti le clausole Else e ElseIf sono facoltive.
All'interno di ogni blocco If…Then è possibile inserire qualunque istruzione, anche un'altra If…Then (si parla dei cosiddetti blocchi annidi); ad esempio si potrebbe fare:

If intX > 10 Then
	If intX > 100 Then
		intY = intX / 2
	Else
		intY = intX + 10
	End If
ElseIf intX > 5 Then
	intY = 0
Else
	bValue = True
End If

In questo blocco viene valuto il valore della variabile Integer intX: se è maggiore di 10, viene effettuo un ulteriore controllo: se intX è maggiore di 100, viene posto intY = intX/2, altrimenti intY = intX+10; se invece intX non è maggiore di 10 (cioè intX <= 10), Visual Basic controlla se intX > 5: in questo caso si pone intY = 0. Se infine intX <= 5, la variabile booleana bValue viene imposta a True. E' chiaro quindi che l'istruzione If…Then permette di effettuare confronti flessibili e ramifici per determinare quali istruzioni è opportuno eseguire.
Ma non basta: le condizioni da valutare possono essere espressioni anche molto complesse, utilizzando gli operori logici che abbiamo visto nella lezione precedente; ad esempio:

If ((intX> 10 And intX < 100) Or _
   (intX > 200 And intX<= intY / 3)) Imp _
   bValue = False Then
	...
End If

La valutazione della condizione segue le regole generali per l'uso delle parentesi: dapprima viene confronto il valore di intX con 10 e con 100: se è compreso tra questi due valori (esclusi gli estremi), l'espressione nella prima sotto-parentesi sarà True;
poi intX viene confronto con 200 e con intY / 3: se è compreso tra questi due valori, la seconda sotto-parentesi sarà True; se almeno una delle due sotto-parentesi è True, anche la super-parentesi sarà True. Infine viene confronta la variabile bValue con il valore False: se bValue è False, l'espressione "bValue = False" sarà True, e quindi lo sarà anche l'intera condizione valuta dalla If (infti l'operore Imp restituisce sempre True se la seconda espressione è True: v.lezione precedente); se invece bValue = True, la seconda espressione sarà False: in tal caso l'intera condizione sarà True solo se anche la super-parentesi sarà False. Un esempio dovrebbe chiarire tutto: supponiamo che intX = 90, intY = 600, bValue = True; allora avremo:

If ((True And True) Or (False And True)) Imp False Then
che corrisponde a:
If (True Or False) Imp False Then
che corrisponde a:
If True Imp False Then

Siccome True Imp False restituisce False, le istruzioni successive a Then non saranno eseguite. Vi faccio notare che Visual Basic valuta sempre tutte le espressioni, anche se in qualche caso è inutile; supponiamo ad esempio di avere:

If intX > 10 And intX < 20 Then

con intX = 5; sapendo che intX > 10 è False e che il valore della condizione dipende dall'operore And, si potrebbe anche fare a meno di confrontare intX con 20, perché qualunque sia il risulto di questo confronto la condizione sarà comunque False, do che la prima espressione è False e l'And restituisce True solo se entrambe le espressioni sono True.
In effetti alcuni linguaggi più "intelligenti" (ad esempio il C++) evitano i confronti inutili; Visual Basic invece li fa sempre tutti, e nel caso di controlli pesanti bisognerebbe tenerne conto, facendo in modo che vengano valute solo le espressioni strettamente necessarie. Ad es., l'istruzione:

If intX > 10 And intX < 20 Then
	intX = intX * 2
End If
potrebbe essere modifica in questo modo:
If intX > 10 Then
	if intX < 20 Then
		IntX = IntX * 2
	End If
End If

In questo modo, se intX=5, Visual Basic non perde tempo a confrontare intX con 20, perché già la prima condizione è falsa, e quindi il secondo blocco If sarà ignoro.



<< Lezione Precedente (6 Lezione) Lezione Successiva (8 Lezione) >>




Note sul corso:
I diritti di ognuna delle lezioni presente in queste pagine appartengono all'autore Giorgio Abraini. La riproduzione e la divulgazione delle stesse sono consentite solamente dietro citazione di fonte ed autore.
Per suggerimenti, consigli o richieste conttare giorgio102@libero.it.
Fonte : VBItalia.it



   Invia il link di questo articolo ad un amico  Invia ad un amico Visualizza la versione stampabile di questo articolo  Stampa Commenta questo Articolo  Commenta Parlane in Chat  Chat   Parlane sul Forum  Forum