Differenze tra le versioni di "IF...THEN...ELSE...ENDIF"

Da Gambas-it.org - Wikipedia.
 
(9 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
 +
L'istruzione '''IF'''...'''THEN'''...'''ELSE'''...'''ENDIF''' (letteralmente: ''SE''...''ALLORA''...''ALTRIMENTI''...''FINE DEL CONDIZIONALE'' ) esegue una verifica condizionale. <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
 
  DIM variabile AS Integer
 
  DIM variabile AS Integer
 +
 
     FOR variabile = 1 TO 10
 
     FOR variabile = 1 TO 10
 
       '''IF''' ''variabile'' = 5 '''THEN'''
 
       '''IF''' ''variabile'' = 5 '''THEN'''
Riga 7: Riga 9:
 
       '''ENDIF'''  
 
       '''ENDIF'''  
 
     NEXT
 
     NEXT
''' Esegue una verifica condizionale.'''
 
----
 
 
 
Un altro mattone fondamentale nella scrittura del codice è l’istruzione '''IF…THEN…ELSE''' (letteralmente se…allora…altrimenti).  |[[#Note|1]]|
 
 
 
''Spiegazione''
 
''Spiegazione''
  
Riga 106: Riga 102:
  
 
Le possibile scelte condizionali che offre l’istruzione IF…THEN sono:
 
Le possibile scelte condizionali che offre l’istruzione IF…THEN sono:
 
+
<FONT Color=green>'''='''</font> oppure <FONT Color=green>'''=='''</font> uguale (variabile1 = variabile2)
'''=''' uguale (variabile1 = variabile2)
+
 
+
<FONT Color=green>'''>'''</font> maggiore (variabile1 > variabile2)
'''>''' maggiore (variabile1 > variabile2)
+
 
+
<FONT Color=green>'''<'''</font> minore (variabile1 < variabile2)
'''<''' minore (variabile1 < variabile2)
+
 
+
<FONT Color=green>'''<>'''</font> diverso (variabile1 <> variabile2)
'''<>''' diverso (variabile1 <> variabile2)
+
 
+
<FONT Color=green>'''>='''</font> maggiore o uguale (variabile1 >= variabile2)
'''>=''' maggiore o uguale (variabile1 >= variabile2)
+
 
+
<FONT Color=green>'''<='''</font> minore o uguale (variabile1 <= variabile2)
'''<=''' minore o uguale (variabile1 <= variabile2)
 
 
 
  
 
==='''IF''' su un'unica riga===
 
==='''IF''' su un'unica riga===
 
E' possibile scrivere l'intera riga di comando con '''IF'''...'''THEN''' su un'unica linea:
 
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>>
 
  IF variabile1 = variabile2 THEN <<vostro codice 1>> ELSE <<vostro codice 2>>
 +
Pertanto sarà omessa la parola-chiave di chiusura "'''ENDIF'''".
  
  
Riga 129: Riga 124:
 
  IF(test As Boolean, True As Variant, False As Variant) As Variant
 
  IF(test As Boolean, True As Variant, False As Variant) As Variant
 
Esempio:
 
Esempio:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
   
 
   
 
   Dim a As Byte = 1
 
   Dim a As Byte = 1
 
   Dim s As String  
 
   Dim s As String  
 
+
 
  s = If(a = 1, "a = 1", "a <> 1")
+
<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
+
  Print s
 
   
 
   
  '''End'''
+
  End
  
  
 
===Omettere l'uso della parola-chiave "Then"===
 
===Omettere l'uso della parola-chiave "Then"===
E' possibile omettere l'uso della parola-chiave "<B>THEN</b>", purché l'istruzione non sia scritta su un'unica linea:
+
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
 
  IF variabile1 == variabile2
 
   <<vostro codice>>
 
   <<vostro codice>>

Versione attuale delle 17: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.