IF...THEN...ELSE...ENDIF: differenze tra le versioni
Nessun oggetto della modifica |
Nessun oggetto della modifica |
||
| (24 versioni intermedie di 6 utenti non mostrate) | |||
| Riga 1: | Riga 1: | ||
L'istruzione '''IF'''...'''THEN'''...'''ELSE'''...'''ENDIF''' (letteralmente: ''SE''...''ALLORA''...''ALTRIMENTI''...''FINE DEL CONDIZIONALE'' ) esegue una verifica condizionale. <SUP>[[[#Note|nota 1]]]</sup> | |||
DIM variabile AS Integer | |||
FOR variabile = 1 TO 10 | |||
'''IF''' ''variabile'' = 5 '''THEN''' | |||
<<vostro codice 1>> | |||
'''ELSE''' | |||
<<vostro codice 2>> | |||
'''ENDIF''' | |||
NEXT | |||
''Spiegazione'' | |||
Per variabile che va da 1 a 10 se il valore di variabile è uguale a 5 esegue <<vostro codice 1>> altrimenti esegue <<vostro codice 2>> quindi procede con il prossimo valore di variabile. | |||
''Esempio 1'' - '''Verifica condizionale immediata''' | |||
IF variabile1 = variabile2 THEN <<vostro codice>> | |||
''Spiegazione'' | |||
Se il valore di variabile1 è uguale a variabile2 allora esegui <<vostro codice>>. | |||
In questo caso <<vostro codice>> sarà un'istruzione semplice ed immediata (un assegnazione di un valore ad una variabile, un uscita dal programma, una chiamata di un funzione). | |||
''Esempio 2'' - '''Verifica condizionale complessa''' | |||
IF variabile1 = variabile2 THEN | |||
<<vostro codice>> | |||
ENDIF | |||
''Spiegazione'' | |||
Se il valore di variabile1 è uguale a variabile2 allora esegui <<vostro codice>>. | |||
In questo caso <<vostro codice>> può essere anche di natura complessa (cicli For..Next, ulteriori istruzioni If..Then, ecc.). | |||
L'istruzione ENDIF comunica al sistema la "chiusura" della verifica condizionale. | |||
''Esempio 3'' - '''Verifica condizionale logica''' | |||
IF variabile1 = variabile2 THEN | |||
<<vostro codice 1>> | |||
ELSE | |||
<<vostro codice 2>> | |||
ENDIF | |||
''Spiegazione'' | |||
Nell'esempio è stata adottata una verifica logica, ovvero che può avere solo due condizioni: se il valore di variabile1 è uguale a variabile2 allora esegui <<vostro codice 1>>, altrimenti esegui <<vostro codice 2>>. | |||
''Esempio 4'' - '''Verifica condizionale multipla''' | |||
IF variabile1 = variabile2 THEN | |||
<<vostro codice 1>> | |||
ELSE IF variabile1 < variabile2 THEN | |||
<<vostro codice 2>> | |||
ELSE IF variabile1 > variabile2 THEN | |||
<<vostro codice 3>> | |||
ELSE | |||
<<vostro codice 4>> | |||
ENDIF | |||
''Spiegazione'' | |||
Nell'esempio è stata adottata una verifica multipla, ovvero il controllo su molteplici condizioni: | |||
1) se il valore di variabile1 è uguale a variabile2 esegui <<vostro codice 1>>; | |||
altrimenti | |||
2) se il valore di variabile1 è minore di variabile2 esegui <<vostro codice 2>>; | |||
altrimenti | |||
3) se il valore di variabile1 è maggiore di variabile2 esegui <<vostro codice 3>>; | |||
altrimenti | |||
4) esegui <<vostro codice 4>>. | |||
Questo tipo di verifica permette di eseguire decisioni su più possibilità (se previste); nel caso nessuna sia valida, verrà eseguito il codice dopo l'ultimo ELSE. | |||
---- | |||
La sintassi prevede anche la possibilità di concatenare più IF per la stessa condizione: | |||
''Esempio 5'' - '''Verifica condizionale con concatenamento AND''' | |||
IF <condizione 1> AND IF <condizione 2> THEN | |||
<<vostro codice 1>> | |||
END IF | |||
''Esempio 6'' - '''Verifica condizionale con concatenamento OR''' | |||
IF <condizione 1> OR IF <condizione 2> THEN | |||
<<vostro codice 2>> | |||
END IF | |||
''Spiegazione'' | |||
Questo tipo di sintassi viene in aiuto nel caso si debba eseguire lo stesso codice (evitare sempre le duplicazioni!); le condizioni non vengono valutate tutte prima del risultato, ma solo una per volta, da sinistra verso destra, e la successiva solo se la precedente ritorna un valore logico positivo: | |||
''esempio 5:'' verifica <condizione 1> e, se vera, verifica <condizione 2>, se vera anche questa esegue il codice <<vostro codice 2>> | |||
''esempio 6:'' verifica <condizione 1> e, se vera esegue il codice <<vostro codice 2>>, altrimenti verifica <condizione 2>, se vera questa esegue il codice <<vostro codice 2>> | |||
L'unico problema, almeno per ora, è che le IF devono stare tutte sulla stessa riga, in caso contrario si verificherà un errore di compilazione. | |||
---- | |||
Le possibile scelte condizionali che offre l’istruzione IF…THEN sono: | |||
<FONT Color=green>'''='''</font> oppure <FONT Color=green>'''=='''</font> uguale (variabile1 = variabile2) | |||
<FONT Color=green>'''>'''</font> maggiore (variabile1 > variabile2) | |||
<FONT Color=green>'''<'''</font> minore (variabile1 < variabile2) | |||
<FONT Color=green>'''<>'''</font> diverso (variabile1 <> variabile2) | |||
<FONT Color=green>'''>='''</font> maggiore o uguale (variabile1 >= variabile2) | |||
<FONT Color=green>'''<='''</font> minore o uguale (variabile1 <= variabile2) | |||
==='''IF''' su un'unica riga=== | |||
E' possibile scrivere l'intera riga di comando con '''IF'''...'''THEN''' su un'unica linea: | |||
IF variabile1 = variabile2 THEN <<vostro codice 1>> ELSE <<vostro codice 2>> | |||
Pertanto sarà omessa la parola-chiave di chiusura "'''ENDIF'''". | |||
> | ==='''IF''' su un'unica riga e fra parentesi=== | ||
Un'altra modalità di espressione del condizionale '''IF''' su un'unica riga e fra parentesi: | |||
IF(test As Boolean, True As Variant, False As Variant) As Variant | |||
Esempio: | |||
Public Sub Main() | |||
Dim a As Byte = 1 | |||
Dim s As String | |||
<FONT Color=gray>' ''Nel <FONT Color=red>1° argomento</font> verifica se la variabile "a" = 1.'' | |||
' ''Nel <FONT Color=blue>2° argomento</font> è presente il valore che sarà restituito nella variabile "s", se la verifica è vera.'' | |||
' ''Nel <FONT Color=darkorange>3° argomento</font> è presente ciò che sarà restituito, se la verifica è invece falsa.''</font> | |||
s = If(<FONT Color=red>a == 1</font>, <FONT Color=blue>"a = 1"</font>, <FONT Color=darkorange>"a <> 1"</font>) | |||
Print s | |||
End | |||
<> | ===Omettere l'uso della parola-chiave "Then"=== | ||
E' possibile omettere l'uso della parola-chiave "<B>THEN</b>", <U>purché l'istruzione non sia scritta su un'unica linea</u>: | |||
IF variabile1 == variabile2 | |||
<<vostro codice>> | |||
ENDIF | |||
=Note= | |||
[1] la sintassi '''IF...ELSE...ENDIF''' si rende necessaria quando la verifica deve essere fatta su valori, o condizioni, che possono assumere valori troppo dinamici e generici; nel caso di valori fissi viene in aiuto un'altra sintassi, che in molti casi si rende più leggibile: [[Select Case]]. | |||
Versione attuale delle 18:44, 17 ott 2024
L'istruzione IF...THEN...ELSE...ENDIF (letteralmente: SE...ALLORA...ALTRIMENTI...FINE DEL CONDIZIONALE ) esegue una verifica condizionale. [nota 1]
DIM variabile AS Integer
FOR variabile = 1 TO 10
IF variabile = 5 THEN
<<vostro codice 1>>
ELSE
<<vostro codice 2>>
ENDIF
NEXT
Spiegazione
Per variabile che va da 1 a 10 se il valore di variabile è uguale a 5 esegue <<vostro codice 1>> altrimenti esegue <<vostro codice 2>> quindi procede con il prossimo valore di variabile.
Esempio 1 - Verifica condizionale immediata
IF variabile1 = variabile2 THEN <<vostro codice>>
Spiegazione
Se il valore di variabile1 è uguale a variabile2 allora esegui <<vostro codice>>.
In questo caso <<vostro codice>> sarà un'istruzione semplice ed immediata (un assegnazione di un valore ad una variabile, un uscita dal programma, una chiamata di un funzione).
Esempio 2 - Verifica condizionale complessa
IF variabile1 = variabile2 THEN <<vostro codice>> ENDIF
Spiegazione
Se il valore di variabile1 è uguale a variabile2 allora esegui <<vostro codice>>.
In questo caso <<vostro codice>> può essere anche di natura complessa (cicli For..Next, ulteriori istruzioni If..Then, ecc.). L'istruzione ENDIF comunica al sistema la "chiusura" della verifica condizionale.
Esempio 3 - Verifica condizionale logica
IF variabile1 = variabile2 THEN <<vostro codice 1>> ELSE <<vostro codice 2>> ENDIF
Spiegazione
Nell'esempio è stata adottata una verifica logica, ovvero che può avere solo due condizioni: se il valore di variabile1 è uguale a variabile2 allora esegui <<vostro codice 1>>, altrimenti esegui <<vostro codice 2>>.
Esempio 4 - Verifica condizionale multipla
IF variabile1 = variabile2 THEN <<vostro codice 1>> ELSE IF variabile1 < variabile2 THEN <<vostro codice 2>> ELSE IF variabile1 > variabile2 THEN <<vostro codice 3>> ELSE <<vostro codice 4>> ENDIF
Spiegazione
Nell'esempio è stata adottata una verifica multipla, ovvero il controllo su molteplici condizioni:
1) se il valore di variabile1 è uguale a variabile2 esegui <<vostro codice 1>>;
altrimenti
2) se il valore di variabile1 è minore di variabile2 esegui <<vostro codice 2>>;
altrimenti
3) se il valore di variabile1 è maggiore di variabile2 esegui <<vostro codice 3>>;
altrimenti
4) esegui <<vostro codice 4>>.
Questo tipo di verifica permette di eseguire decisioni su più possibilità (se previste); nel caso nessuna sia valida, verrà eseguito il codice dopo l'ultimo ELSE.
La sintassi prevede anche la possibilità di concatenare più IF per la stessa condizione:
Esempio 5 - Verifica condizionale con concatenamento AND
IF <condizione 1> AND IF <condizione 2> THEN <<vostro codice 1>> END IF
Esempio 6 - Verifica condizionale con concatenamento OR
IF <condizione 1> OR IF <condizione 2> THEN <<vostro codice 2>> END IF
Spiegazione
Questo tipo di sintassi viene in aiuto nel caso si debba eseguire lo stesso codice (evitare sempre le duplicazioni!); le condizioni non vengono valutate tutte prima del risultato, ma solo una per volta, da sinistra verso destra, e la successiva solo se la precedente ritorna un valore logico positivo:
esempio 5: verifica <condizione 1> e, se vera, verifica <condizione 2>, se vera anche questa esegue il codice <<vostro codice 2>>
esempio 6: verifica <condizione 1> e, se vera esegue il codice <<vostro codice 2>>, altrimenti verifica <condizione 2>, se vera questa esegue il codice <<vostro codice 2>>
L'unico problema, almeno per ora, è che le IF devono stare tutte sulla stessa riga, in caso contrario si verificherà un errore di compilazione.
Le possibile scelte condizionali che offre l’istruzione IF…THEN sono:
= oppure == uguale (variabile1 = variabile2) > maggiore (variabile1 > variabile2) < minore (variabile1 < variabile2) <> diverso (variabile1 <> variabile2) >= maggiore o uguale (variabile1 >= variabile2) <= minore o uguale (variabile1 <= variabile2)
IF su un'unica riga
E' possibile scrivere l'intera riga di comando con IF...THEN su un'unica linea:
IF variabile1 = variabile2 THEN <<vostro codice 1>> ELSE <<vostro codice 2>>
Pertanto sarà omessa la parola-chiave di chiusura "ENDIF".
IF su un'unica riga e fra parentesi
Un'altra modalità di espressione del condizionale IF su un'unica riga e fra parentesi:
IF(test As Boolean, True As Variant, False As Variant) As Variant
Esempio:
Public Sub Main() Dim a As Byte = 1 Dim s As String ' Nel 1° argomento verifica se la variabile "a" = 1. ' Nel 2° argomento è presente il valore che sarà restituito nella variabile "s", se la verifica è vera. ' Nel 3° argomento è presente ciò che sarà restituito, se la verifica è invece falsa. s = If(a == 1, "a = 1", "a <> 1") Print s End
Omettere l'uso della parola-chiave "Then"
E' possibile omettere l'uso della parola-chiave "THEN", purché l'istruzione non sia scritta su un'unica linea:
IF variabile1 == variabile2 <<vostro codice>> ENDIF
Note
[1] la sintassi IF...ELSE...ENDIF si rende necessaria quando la verifica deve essere fatta su valori, o condizioni, che possono assumere valori troppo dinamici e generici; nel caso di valori fissi viene in aiuto un'altra sintassi, che in molti casi si rende più leggibile: Select Case.