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

Da Gambas-it.org - Wikipedia.
 
 
(24 versioni intermedie di 6 utenti non mostrate)
Riga 1: Riga 1:
IF…THEN…ELSE
+
L'istruzione '''IF'''...'''THEN'''...'''ELSE'''...'''ENDIF''' (letteralmente: ''SE''...''ALLORA''...''ALTRIMENTI''...''FINE DEL CONDIZIONALE'' ) esegue una verifica condizionale. <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
29 11 2007
+
DIM variabile AS Integer
 +
 +
    FOR variabile = 1 TO 10
 +
      '''IF''' ''variabile'' = 5 '''THEN'''
 +
          <<vostro codice 1>>
 +
      '''ELSE'''
 +
          <<vostro codice 2>>
 +
      '''ENDIF'''
 +
    NEXT
 +
''Spiegazione''
  
DIM variabile AS Integer
+
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.
  
FOR variabile = 1 TO 10
 
  
    IF variabile = 5 THEN
+
''Esempio 1'' - '''Verifica condizionale immediata'''
  
        PRINT “Trovato il numero”
+
IF variabile1 = variabile2 THEN <<vostro codice>>
 +
''Spiegazione''
  
    ELSE
+
Se il valore di variabile1 è uguale a variabile2 allora esegui <<vostro codice>>.
  
        PRINT “Sto cercando il numero…”
+
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).
  
    ENDIF
 
  
NEXT
+
''Esempio 2'' - '''Verifica condizionale complessa'''
  
Un’altro mattone fondamentale nella scrittura di codice Basic (e quindi in Gambas) è l’istruzione IF…THEN…ELSE (letteralmente se…allora…altrimenti).
+
IF variabile1 = variabile2 THEN
 +
<<vostro codice>>
 +
ENDIF
  
Come per l’esempio FOR…NEXT le righe di programma sopra riportate si trasformano in questo modo:
+
''Spiegazione''
  
Per variabile che va’ da 1 a 10 se il valore di variabile è uguale a 5 stampa la frase ”Trovato il numero” altrimenti stampa la frase “Sto cercando il numero…” quindi procedi con il prossimo valore di variabile.
+
Se il valore di variabile1 è uguale a variabile2 allora esegui <<vostro codice>>.
  
Sostituendo le parole al codice si avrebbe
+
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.
  
Per variabile che va’ da 1 a 10
 
  
se il valore di variabile è uguale a 5
+
''Esempio 3'' - '''Verifica condizionale logica'''
  
stampa la parola “Trovato il numero”
+
IF variabile1 = variabile2 THEN
 +
<<vostro codice 1>>
 +
ELSE                 
 +
<<vostro codice 2>>
 +
ENDIF
  
altrimenti
+
''Spiegazione''
  
stampa la parola “Sto cercando il numero…”
+
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>>.
  
quindi procedi con il prossimo valore di variabile
 
  
Analizziamo ogni singola riga per comprenderne meglio il significato:
+
''Esempio 4'' - '''Verifica condizionale multipla'''
  
DIM variabile AS Integer dichiarazione della variabile (nome e tipo)
+
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
  
FOR variabile = 1 TO 10 comunichiamo al sistema che valori può assumere variabile, ovvero da 1 a 10
+
''Spiegazione''
  
IF variabile = 5 THEN comunichiamo al sistema che deve controllare il valore di variabile, se questo valore è uguale a 5 allora deve fare qualche cosa
+
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:
  
PRINT “Trovato il numero” ad ogni valore di variabile uguale a 5 il sistema stampa la frase “Trovato il numero”, ovviamente tale frase sarà stampata una sola volta in quanto in un campo di numeri da 1 a 10, il numero 5 non è ripetuto.
+
''Esempio 5'' - '''Verifica condizionale con concatenamento AND'''
  
ELSE con l’istruzione IF chiediamo al programma di verificare una rispondenza, se questa non si avvera il controllo passa all’istruzione ELSE (altrimenti) che esegue un’altra porzione di codice.
+
IF <condizione 1> AND IF <condizione 2> THEN
 +
<<vostro codice 1>>
 +
END IF
  
PRINT “Sto cercando il numero…” ad ogni valore di variabile che non sia uguale a 5 il sistema stampa la frase “Sto cercando il numero…”, tale frase sarà stampata 9 volte.
+
''Esempio 6'' - '''Verifica condizionale con concatenamento OR'''
  
ENDIF termina il codice iniziato con IF.
+
IF <condizione 1> OR IF <condizione 2> THEN
 +
<<vostro codice 2>>
 +
END IF
  
NEXT procediamo con un nuovo valore fino al raggiungimento del numero 10.
+
''Spiegazione''
  
A differenza dell’istruzione FOR…NEXT, IF…THEN può essere scritta anche in una linea sola evitando quindi l’utilizzo di ELSE ed ENDIF:
+
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:
  
IF variabile = 5 THEN PRINT “Trovato il numero”
+
''esempio 5:'' verifica <condizione 1> e, se vera, verifica <condizione 2>, se vera anche questa esegue il codice <<vostro codice 2>>
  
Se vogliamo stampare solo la frase “Trovato il numero” eviteremo l’utilizzo di ELSE:
+
''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>>
  
DIM variabile AS Integer
+
L'unico problema, almeno per ora, è che le IF devono stare tutte sulla stessa riga, in caso contrario si verificherà un errore di compilazione.
 +
----
  
FOR variabile = 1 TO 10
 
  
    IF variabile = 5 THEN
+
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)
  
        PRINT “Trovato il numero”
+
==='''IF''' su un'unica riga===
 
+
E' possibile scrivere l'intera riga di comando con '''IF'''...'''THEN''' su un'unica linea:
    ENDIF  
+
IF variabile1 = variabile2 THEN <<vostro codice 1>> ELSE <<vostro codice 2>>
 
+
Pertanto sarà omessa la parola-chiave di chiusura "'''ENDIF'''".
NEXT
 
 
 
Le possibile scelte condizionali che offre l’istruzione IF…THEN sono:
 
  
= uguale (variabile = 5)
 
  
> maggiore (variabile > 5)
+
==='''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
  
< minore (variabile > 5)
 
  
<> diverso (variabile <> 5)
+
===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
  
>= maggiore o uguale (variabile >= 5)
 
  
<= minore o uguale (variabile <= 5)
 
  
Alcune istruzioni sono spiegate marginalmente in questo articolo in quanto già trattate precedentemente.
+
=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 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.