Differenze tra le versioni di "SELECT CASE...CASE...END SELECT"
(7 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
'''SELECT CASE''' variabile | '''SELECT CASE''' variabile | ||
'''CASE''' ''variabile(1)'' | '''CASE''' ''variabile(1)'' | ||
− | + | <<vostro codice 1>> | |
'''CASE''' ''variabile(2)'' | '''CASE''' ''variabile(2)'' | ||
− | + | <<vostro codice 2>> | |
'''CASE''' ''variabile(3)'' | '''CASE''' ''variabile(3)'' | ||
− | + | <<vostro codice 3>> | |
− | '''CASE ELSE''' oppure '''DEFAULT''' | + | '''CASE ELSE''' oppure soltanto '''DEFAULT''' |
− | + | <<vostro codice 4>> | |
'''END SELECT''' | '''END SELECT''' | ||
''' Esegue del codice previa verifica della condizione ''' | ''' Esegue del codice previa verifica della condizione ''' | ||
− | |||
''Spiegazione'' | ''Spiegazione'' | ||
Ogni valore che assume variabile esegue il codice successivo alla verifica. | Ogni valore che assume variabile esegue il codice successivo alla verifica. | ||
− | Questa funzione è simile a [[If..Then..Else]] con la differenza che è più immediata e pulita la lettura del codice, e prevede un controllo più stretto sul range di valori. | + | <BR>Questa funzione è simile a [[IF...THEN...ELSE...ENDIF|If...Then...Else...Endif]] con la differenza che è più immediata e pulita la lettura del codice, e prevede un controllo più stretto sul range di valori. |
− | Inoltre è possibile gestire il flusso di dati in modo che in caso non sia soddisfatta nessuna condizione il sistema esegua qualche cosa, questo è possibile tramite '''CASE ELSE''' o '''DEFAULT'''. | + | <BR>Inoltre è possibile gestire il flusso di dati in modo che in caso non sia soddisfatta nessuna condizione il sistema esegua qualche cosa, questo è possibile tramite '''CASE ELSE''' o '''DEFAULT''' da solo. |
''Esempio 1'' - '''Verifica pressione di un tasto''' | ''Esempio 1'' - '''Verifica pressione di un tasto''' | ||
− | |||
'''SELECT CASE''' key.Code | '''SELECT CASE''' key.Code | ||
− | + | '''CASE''' key.Del | |
− | + | Message.Info("premuto il tasto DEL") | |
− | + | '''CASE''' key.F1 | |
− | + | Message.Info("premuto il tasto F1") | |
− | + | '''DEFAULT''' | |
− | + | Message.Info("tasto non riconosciuto") | |
− | '''END SELECT''' | + | '''END SELECT''' |
+ | Se vogliamo utilizzare '''CASE ELSE''': | ||
+ | '''SELECT CASE''' key.Code | ||
+ | '''CASE''' key.Del | ||
+ | Message.Info("premuto il tasto DEL") | ||
+ | '''CASE''' key.F1 | ||
+ | Message.Info("premuto il tasto F1") | ||
+ | '''CASE ELSE''' | ||
+ | Message.Info("tasto non riconosciuto") | ||
+ | '''END SELECT''' | ||
''Spiegazione'' | ''Spiegazione'' | ||
Riga 35: | Riga 42: | ||
Per associare lo stesso codice a più situazioni, è possibile definirle nella stessa istruzione CASE, separando ogni valore da una '''virgola''': | Per associare lo stesso codice a più situazioni, è possibile definirle nella stessa istruzione CASE, separando ogni valore da una '''virgola''': | ||
− | |||
Esempio: | Esempio: | ||
− | |||
'''SELECT CASE''' key.Code | '''SELECT CASE''' key.Code | ||
− | + | '''CASE''' key.Del | |
− | + | Message.Info("premuto il tasto DEL") | |
− | + | '''CASE''' key.F1, key.F2, Key.Ins | |
− | + | Message.Info("premuto il tasto F1 oppure F2 oppure Ins") | |
− | + | '''DEFAULT''' | |
− | + | Message.Info("tasto non riconosciuto") | |
'''END SELECT''' | '''END SELECT''' | ||
− | + | Come si può notare dall'esempio, nel secondo CASE sono stati definiti tre valori (F1, F2 e Ins); alla pressione dei tasti corrispondenti verrà eseguita la stessa istruzione. | |
− | |||
− | Come si può notare dall'esempio, nel secondo CASE sono stati definiti tre valori (F1, F2 e | ||
− | |||
Per associare lo stesso codice a più situazioni che insistono in un ambito ben determinato di valori, allora si utilizzerà '''TO''': | Per associare lo stesso codice a più situazioni che insistono in un ambito ben determinato di valori, allora si utilizzerà '''TO''': | ||
Esempio: | Esempio: | ||
− | |||
'''SELECT CASE''' variabile | '''SELECT CASE''' variabile | ||
− | + | '''CASE''' variabile1 '''TO''' variabile2 | |
− | + | Message.Info("rientra nell'ambito da variabile1 a variabile 2") | |
− | + | '''CASE''' variabile3 '''TO''' variabile4 | |
− | + | Message.Info("rientra nell'ambito da variabile3 a variabile 4") | |
'''END SELECT''' | '''END SELECT''' | ||
Riga 65: | Riga 66: | ||
− | Le modalità di verifica con la ''virgola'' e con il ''TO'' possono essere anche utilizzate contestualmente nel medesimo CASE. | + | Le modalità di verifica con la ''virgola'' e con il '''TO''' possono essere anche utilizzate contestualmente nel medesimo CASE. |
Esempio: | Esempio: | ||
'''SELECT CASE''' variabile | '''SELECT CASE''' variabile | ||
− | '''CASE''' 8 '''TO''' | + | '''CASE''' 2, 8 '''TO''' 10''' |
Print "Primo caso" | Print "Primo caso" | ||
+ | '''CASE''' 16 '''TO''' 17''', 14 | ||
+ | Print "Secondo caso" | ||
'''CASE''' 20 '''TO''' 25''',''' 30 '''TO''' 35 | '''CASE''' 20 '''TO''' 25''',''' 30 '''TO''' 35 | ||
− | Print " | + | Print "Terzo caso" |
'''CASE''' 40 '''TO''' 45''',''' 48''',''' 50 '''TO''' 55''',''' 58 | '''CASE''' 40 '''TO''' 45''',''' 48''',''' 50 '''TO''' 55''',''' 58 | ||
− | Print " | + | Print "Quarto caso" |
+ | '''CASE ELSE''' | ||
+ | Print "Nulla" | ||
'''END SELECT''' | '''END SELECT''' | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
---- | ---- | ||
− | Nella verifica, altresì, potrà essere utilizzato anche l'operatore | + | Nella verifica, altresì, potrà essere utilizzato anche l'operatore '''LIKE''': <SUP>[[[#Note|nota 1]]]</sup> |
− | + | Public Sub Main() | |
Dim s As String = "abcg" | Dim s As String = "abcg" | ||
− | Select Case s | + | '''Select Case''' s |
Case "aaa" | Case "aaa" | ||
Print "aaa" | Print "aaa" | ||
− | Case <FONT Color= | + | Case <FONT Color=red>Like</font> "abc*" |
Print "like !" | Print "like !" | ||
− | End Select | + | '''End Select''' |
− | + | End | |
Riga 110: | Riga 104: | ||
---- | ---- | ||
=Note= | =Note= | ||
− | [1] Sull'uso dell'operatore "Like" vedere anche questa discussione: https:// | + | [1] Sull'uso dell'operatore "Like" vedere anche questa discussione: https://lists.gambas-basic.org/pipermail/user/2013-March/043458.html |
Versione attuale delle 15:53, 6 lug 2024
SELECT CASE variabile CASE variabile(1) <<vostro codice 1>> CASE variabile(2) <<vostro codice 2>> CASE variabile(3) <<vostro codice 3>> CASE ELSE oppure soltanto DEFAULT <<vostro codice 4>> END SELECT
Esegue del codice previa verifica della condizione
Spiegazione
Ogni valore che assume variabile esegue il codice successivo alla verifica.
Questa funzione è simile a If...Then...Else...Endif con la differenza che è più immediata e pulita la lettura del codice, e prevede un controllo più stretto sul range di valori.
Inoltre è possibile gestire il flusso di dati in modo che in caso non sia soddisfatta nessuna condizione il sistema esegua qualche cosa, questo è possibile tramite CASE ELSE o DEFAULT da solo.
Esempio 1 - Verifica pressione di un tasto
SELECT CASE key.Code CASE key.Del Message.Info("premuto il tasto DEL") CASE key.F1 Message.Info("premuto il tasto F1") DEFAULT Message.Info("tasto non riconosciuto") END SELECT
Se vogliamo utilizzare CASE ELSE:
SELECT CASE key.Code CASE key.Del Message.Info("premuto il tasto DEL") CASE key.F1 Message.Info("premuto il tasto F1") CASE ELSE Message.Info("tasto non riconosciuto") END SELECT
Spiegazione
Ad ogni pressione di un tasto il sistema verifica a quale codice della tastiera corrisponde e si comporta di conseguenza. Per provare l'esempio è sufficiente scrivere il codice sopra riportato all'interno di una TextBox.
Per associare lo stesso codice a più situazioni, è possibile definirle nella stessa istruzione CASE, separando ogni valore da una virgola:
Esempio:
SELECT CASE key.Code CASE key.Del Message.Info("premuto il tasto DEL") CASE key.F1, key.F2, Key.Ins Message.Info("premuto il tasto F1 oppure F2 oppure Ins") DEFAULT Message.Info("tasto non riconosciuto") END SELECT
Come si può notare dall'esempio, nel secondo CASE sono stati definiti tre valori (F1, F2 e Ins); alla pressione dei tasti corrispondenti verrà eseguita la stessa istruzione.
Per associare lo stesso codice a più situazioni che insistono in un ambito ben determinato di valori, allora si utilizzerà TO:
Esempio:
SELECT CASE variabile CASE variabile1 TO variabile2 Message.Info("rientra nell'ambito da variabile1 a variabile 2") CASE variabile3 TO variabile4 Message.Info("rientra nell'ambito da variabile3 a variabile 4") END SELECT
Le modalità di verifica con la virgola e con il TO possono essere anche utilizzate contestualmente nel medesimo CASE.
Esempio:
SELECT CASE variabile CASE 2, 8 TO 10 Print "Primo caso" CASE 16 TO 17, 14 Print "Secondo caso" CASE 20 TO 25, 30 TO 35 Print "Terzo caso" CASE 40 TO 45, 48, 50 TO 55, 58 Print "Quarto caso" CASE ELSE Print "Nulla" END SELECT
Nella verifica, altresì, potrà essere utilizzato anche l'operatore LIKE: [nota 1]
Public Sub Main() Dim s As String = "abcg" Select Case s Case "aaa" Print "aaa" Case Like "abc*" Print "like !" End Select End
Note
[1] Sull'uso dell'operatore "Like" vedere anche questa discussione: https://lists.gambas-basic.org/pipermail/user/2013-March/043458.html