Controllo dell'esecuzione dei programmi

Le istruzioni condizionali consentono di scrivere codice BSL che prende decisioni e ripete azioni. In BSL sono disponibili le seguenti istruzioni condizionali:

  • istruzione If...Then...Else
  • Istruzione Select Case

Nota:

L'istruzione If...Then...Else viene utilizzata per valutare se una condizione è True o False e, a seconda del risultato, per specificare una o più istruzioni da eseguire. In genere, la condizione è un'espressione che utilizza un operatore di confronto per eseguire il confronto tra valori o variabili. Per informazioni sugli operatori di confronto, vedere Operatori di confronto. Le istruzioni If...Then...Else possono essere nidificate a tutti i livelli necessari.

Esecuzione di istruzioni se una condizione è True

Per eseguire solo un'istruzione quando una condizione è True, utilizzare la sintassi a riga singola per l'istruzione If...Then...Else. Nell'esempio seguente viene illustrata la sintassi a riga singola.

In questo esempio viene omessa la parola chiave Else.

Sub Test()
    Dim myNumber
    myNumber = 10
    If myNumber < 15 Then myNumber = 15
    'myNumber: 15
End Sub

Per eseguire più di una riga di codice, è necessario utilizzare la sintassi a più righe (o a blocchi). Questa sintassi include l'istruzione End If, come illustrato nell'esempio seguente.

Sub Test()
    Dim myNumber
    myNumber = 10
    If myNumber < 15 Then 
        myNumber = 15
    End If
    'myNumber: 15
End Sub

Esecuzione di alcune istruzioni se una condizione è True ed esecuzione di altre istruzioni se una condizione è False

È possibile utilizzare un'istruzione If...Then...Else per definire due blocchi di istruzioni eseguibili: un blocco da eseguire se la condizione è True, l'altro blocco da eseguire se la condizione è False.

Sub Test(value)
    If value = 0 Then
        value = 10
    Else
        value = 20
    End If
    ' Outputs: value: 10 if value was 0, otherwise 20
End Sub

Scelta tra alternative diverse

Una variazione dell'istruzione If...Then...Else consente di scegliere tra alternative diverse. L'aggiunta di clausole ElseIf espande la funzionalità dell'istruzione If...Then...Else in modo da poter controllare il flusso del programma in base a diverse possibilità. Ad esempio:

Sub ReportValue(value)
If value = 0 Then
                    value = 10
        ElseIf value = 1 Then
                    value = 20
        ElseIf value = 2 Then
                    value = 30
        Else
                    value = 40
        End If
        'value: 20
End Sub
ReportValue(1) ' Condition ElseIf value = 1 is met and value will be set to 20

È possibile aggiungere tutte le clausole ElseIf necessarie per fornire scelte alternative. L'uso eccessivo delle clausole ElseIf può spesso compromettere i risultati. Un modo migliore per scegliere tra diverse alternative è l'istruzione Select Case.

Sub NestedIf(value)
    If value < 10 Then
        If value < 5 Then
            'value is less than 5
        Else
            'value is between 5 and 9
        End If
    Else
        'value is 10 or greater
    End If
End Sub

NestedIf(6)   ' Triggers the logic: value is between 5 and 9

Decisioni mediante l'istruzione Select Case

La struttura dell'istruzione Select Case fornisce un'alternativa a If...Then...ElseIf per l'esecuzione selettiva di un blocco di istruzioni rispetto a più blocchi di istruzioni. Un'istruzione Select Case fornisce funzionalità simili a quelle dell'istruzione If...Then...Else, ma ottimizzando l'efficienza e la leggibilità del codice.

Un'istruzione Select Case opera come un'unica espressione di test valutata una volta nella parte superiore della struttura. Il risultato dell'espressione viene quindi confrontato con i valori di ogni istruzione Case presente nella struttura. Se viene rilevata una corrispondenza, viene eseguito il blocco di istruzioni associato a tale caso, come illustrato nell'esempio seguente.

Negli esempi seguenti viene illustrato l'uso dell'istruzione Select Case.

Esempio 1

Dim age
age = (30/6) * 6   ' age = 30
Select Case True
    Case age < 18
        'You're a minor Section
    Case age >= 18 And age <= 65
        'You're an adult Section
    Case Else
        'You're a senior citizen Section
End Select

Esempio 2

Dim grade
grade = "B"
Select Case grade
        Case "A", "B", "C"
                'Pass Section
        Case "D"
                'Barely Passed Section
        Case "F"
                'Fail Section
        Case Else
                'Invalid grade Section
End Select

Nota:

L'istruzione Select Case valuta un'espressione una volta nella parte superiore della struttura. L'istruzione If...Then...ElseIf può invece valutare un'espressione diversa per ogni istruzione ElseIf. È possibile sostituire una struttura di istruzioni If...Then...ElseIf con una struttura di istruzioni Select Case solo se ogni istruzione ElseIf valuta la stessa espressione.