Come aggiungere informazioni

Istruzioni condizionali

    Indice (TOC)
    No headers

    È possibile utilizzare il linguaggio di programmazione Visual Basic (VB.NET) per creare regole iLogic. Le istruzioni condizionali quali If-Then-Else consentono alle regole l'esecuzione di azioni in base a determinati criteri.

    Funzionamento di un'istruzione If-Then-Else

    Nell'istruzione If-Then-Else viene eseguita una serie di azioni se la condizione è vera, un'altra serie se la condizione è falsa:

    (1) Condizione (2) Vero (3) Falso (4) Se la condizione è vera vengono eseguite queste istruzioni (5) Se la condizione è falsa vengono eseguite queste istruzioni

    Dopo l'esecuzione delle istruzioni associate alla condizione vera o falsa, il controllo del programma riprende con l'istruzione successiva.

    In iLogic è possibile utilizzare il modulo blocco o il modulo a più linee multilinea per implementare la struttura If-Then-Else.

    Ad esempio:

    If size = “small” Then
    length = 6.0
    Else
    length = 12
    End If

    Se l'espressione condizionale è vera, vengono eseguite le istruzioni tra le parole chiave Then e Else. Le istruzioni tra le parole chiave Else e End If vengono ignorate. Se l'espressione condizionale è false, vengono eseguite le istruzioni tra le parole chiave Else e End If. Le istruzioni tra le parole chiave Then e Else vengono ignorate. In ogni caso, il controllo del programma riprende con l'istruzione successiva all'istruzione End If.

    Funzionamento di un'istruzione If-Then

    In un'istruzione If-Then-Else, viene eseguita un'azione indipendentemente dal fatto che la condizione sia true o false. Tuttavia, talvolta è necessario eseguire un'azione o una serie di azioni solo se una condizione è true, e nessuna azione se la condizione è false:

    (1) Condizione (2) Vero (3) Se la condizione è vera, eseguire queste istruzioni (4) Falso

    È possibile omettere la parte Else della struttura If del blocco. Ad esempio:

    If size = “small” Then
    length = 6.0
    End If

    Utilizzo delle serie vuote o nulle

    È inoltre possibile utilizzare serie di azioni null o empty nel modulo blocco dell'istruzione If. È possibile, ad esempio, precisare "se la condizione è vera, non eseguire alcuna operazione - altrimenti, eseguire un'operazione", come nel blocco seguente:

    If length  > 20 Then
    Else MessageBox.Show(" Invalid Size.Length must be at least 20 in. ", "Title")
    End If

    Quando si utilizza un gruppo di azioni vuoto, migliorare la leggibilità includendo un commento nella della posizione prevista per le istruzioni true:

    If length  > 20 Then’do nothing
    Else MessageBox.Show(" Invalid Size.Length must be at least 20 in ", "Title")
    End If

    Utilizzo di un'istruzione If come istruzione a riga singola

    Sebbene il modulo del blocco dell'istruzione If migliori la leggibilità, è possibile scrivere l'istruzione If come riga singola. In questo formato, l'istruzione End If non viene utilizzata.

    Gli esempi includono:

    If length < 20 Then MessageBox.Show("Length is Too Short", "Title")
    If mass < 1000 Then length =20 Else length =40

    Utilizzo di variabili booleane nelle espressioni condizionali

    Una variabile booleana che può contenere il valore True o False, può essere utilizzata in qualsiasi punto in cui viene utilizzata un'espressione relazionale.

    Ad esempio, le seguenti due istruzioni sono equivalenti:

    If Feature.IsActive("Fillet1") = true Then . . .
    If Feature.IsActive("Fillet1") Then . . .

    Nella seconda istruzione il valore True è implicito.

    Analogamente, le due istruzioni seguenti possono essere utilizzate in modo intercambiabile per verificare se una variabile booleana è falsa:

    If Feature.IsActive("Fillet1") = false Then . . .
    If Not Feature.IsActive("Fillet1") Then . . .

    Questi esempi mostrano il risultato di una funzione. Altri esempi includono l'utilizzo di un nome parametro come variabile booleana, o l'utilizzo di una variabile locale per contenere un valore booleano.

    Informazioni sulla struttura Case

    La struttura Case consente di scegliere tra più di due alternative:

    (1) Case per il codice operazione alternativa (2) Case "1" (3) Case "2" (4) Case "3" (5) Case Else (6) Operazione alternativa se il codice è ="1" (7) Operazione alternativa se il codice è="2" (8) Operazione alternativa se il codice è="3" (9) Operazione alternativa se il codice non è"1", "2" o "3"

    È possibile implementare la struttura Case utilizzando una struttura a blocco esteso If o la struttura dell'istruzione Select Case.

    Informazioni su un'istruzione If a blocco esteso (If-Then-ElseIf)

    L'istruzione a blocco esteso If utilizza una o più clausole ElseIf nidificate tra la prima clausola If e l'ultima clausola Else. La parola chiave ElseIf è una sola parola.

    Ad esempio:

    If material = "Steel" Then
    density = 0.284
    ElseIf material = "Copper" Then
    density = 0.323
    ElseIf material = "Aluminum" Then
    density = 0.098
    End If

    In questo formato, il programma esegue le istruzioni associate con la prima espressione condizionale vera trovata. Quindi, il programma passa all'istruzione successiva all'istruzione End If. Utilizzare l'ultima istruzione Elseper intercettare gli errori che si verificano quando vengono rilevate condizioni impreviste che non corrispondono a condizioni If o ElseIf precedenti.

    L'utilizzo di ElseIf elimina la necessità di codificare più istruzioni End If in una struttura If nidificata. A scopo di confronto, l'esempio precedente può anche essere scritto nel modo seguente:

    If material = "Steel" Then
    density = 0.284
    Else
    If material = "Copper" Then
    density = 0.323
    Else
    If material = "Aluminum" Then
    density = 0.098
    End If
    End If
    End If

    Utilizzo di un'istruzione Select Case

    Select Case è un'istruzione particolarmente efficace con varie opzioni.

    Ad esempio:

    Select Case material
    Case “Steel”
    density =0.284
    Case “ Copper”
    density = 0.323
    Case “Aluminum”
    density = 0.098
    Case Else
    density = 0
    MessageBox.Show("not a valid material" , "Warning")
    End Select

    In questo formato, l'istruzione Select Case consente di specificare un'espressione di prova. Ogni clausola Case successiva specifica una o più espressioni da confrontare con l'espressione di prova. Vengono eseguite le azioni associate alla prima clausola Case contenente un'espressione che soddisfa l'espressione di prova. Il controllo del programma si ramifica quindi nell'istruzione successiva all'istruzione End Select. L'ultima clausola Case Else intercetta gli errori che si verificano quando un valore non previsto dell'espressione di prova non corrisponde all'elenco di espressioni di nessuna delle clausole Case precedenti.

    L'espressione di prova successiva a Select Case può essere un'espressione più complessa, ad esempio:

    Select Case radius +1
    Select Case  MinOfMany(x,y,z)

    L'elenco di espressioni in una clausola Case può corrispondere ad uno dei seguenti formati:

    Formato Esempi
    <espressione> [, espressione,...] Case 1, 10, 100

    Case “Y”, “y”

    <espressione> To <espressione> Case 1 To 9

    Case “A” To “C”

    Is <espressione operatore relazionale> Case Is >= 21
    (libera combinazione dei valori precedenti) Case Is <= 5, 20 To 29, 43

    Ad esempio:

    Select Case width
    Case 1,2,3,4,5
    MessageBox.Show("Small Plate", "Size")
    Case 6 to 15
    MessageBox.Show("Medium Plate", "Size") 
    Case Is > 15
    MessageBox.Show("Large Plate", "Size")
    End Select

    L'istruzione Select Case non richiede un'associazione con un'espressione o variabile specifica. Può essere utilizzata per valutare qualsiasi numero di condizioni, utilizzando il seguente formato:

    Select Case True
    Case length >= 10
    width = length -1
    thickness = length/5
    Case length < 10
    width = length - .75
    thickness = length/6
    End Select

    Procedure

    Istruzioni condizionali

    Esecuzione le azioni alternative per le condizioni vere o false

    1. Posizionare il cursore nella posizione desiderata nell'area di testo della regola della finestra di dialogo Modifica regola.
    2. Selezionare If...Then...EndIf dall'elenco a discesa nella barra degli strumenti.
    3. Sostituire My_expression con la prima espressione da valutare.
    4. Specificare l'azione da intraprendere se la condizione è vera, sulla riga tra l'istruzione If-Then e l'istruzione EndIf.
    5. Lasciare il cursore alla fine dell'azione appena inserita e selezionare Else dall'elenco a discesa.
    6. Specificare l'azione da intraprendere se la condizione è falsa, sulla riga tra l'istruzione Else e l'istruzione EndIf.

    Quando si immettono le azioni da eseguire, è possibile utilizzare le opzioni disponibili nell'area Frammenti per inserire una funzione in corrispondenza della posizione del cursore. È quindi possibile aggiungere gli argomenti appropriati per la funzione.

    NotaÈ inoltre possibile specificare manualmente qualsiasi testo descritto in questa procedura; tuttavia l'utilizzo degli elenchi a discesa e dei frammenti consente di ridurre gli errori.

    Esecuzione dell'azione solo se la condizione è vera

    1. Collocare il cursore nella posizione desiderata nell'area di testo della regola della finestra di dialogo Modifica regola.
    2. Selezionare If...Then...EndIf dall'elenco a discesa nella barra degli strumenti.
    3. Sostituire My_expression con l'espressione da valutare.
    4. Specificare l'azione da intraprendere se la condizione è vera, sulla riga tra l'istruzione If-Then e l'istruzione EndIf.

    Quando si immette l'azione da eseguire, utilizzare le opzioni nell'area Frammenti per inserire una funzione in corrispondenza della posizione del cursore. È quindi possibile aggiungere gli argomenti appropriati per la funzione.

    NotaÈ inoltre possibile specificare manualmente qualsiasi testo descritto in questa procedura; tuttavia l'utilizzo degli elenchi a discesa e dei frammenti consente di ridurre gli errori.

    Nessuna operazione in corrispondenza di una condizione

    1. Posizionare il cursore nella posizione desiderata nell'area di testo della regola della finestra di dialogo Modifica regola.
    2. Selezionare If...Then...EndIf dall'elenco a discesa nella barra degli strumenti.
    3. Posizionare il cursore tra le due linee inserite e selezionare Else dall'elenco a discesa.
    4. Sostituire My_expression con l'espressione da valutare.
    5. <consigliato> Immettere un commento, ad esempio 'nessuna operazione, per sostituire ciò che normalmente sarebbe un'azione nell'istruzione.
      • Immettere il commento alla fine dell'istruzione If-Then per non eseguire alcuna operazione se la condizione è vera.
      • Immettere il commento dopo l'istruzione Else per non eseguire alcuna operazione se la condizione è falsa.
    6. Immettere l'azione da eseguire per la condizione vera o falsa, a seconda della condizione che include l'azione.

    Quando si immette l'azione da eseguire, utilizzare le opzioni nell'area Frammenti per inserire una funzione in corrispondenza della posizione del cursore. È quindi possibile aggiungere gli argomenti appropriati per la funzione.

    NotaÈ inoltre possibile specificare manualmente qualsiasi testo descritto in questa procedura; tuttavia l'utilizzo degli elenchi a discesa e dei frammenti consente di ridurre gli errori.

    Esecuzione di azioni alternative per più di due condizioni

    1. Posizionare il cursore nel punto desiderato nell'area di testo della regola della finestra di dialogo Modifica regola.
    2. Selezionare If...Then...EndIf dall'elenco a discesa nella barra degli strumenti.
    3. Sostituire My_expression con la prima espressione da valutare.
    4. Immettere l'azione da eseguire per la condizione, tra le due righe.
    5. Con il cursore alla fine dell'azione appena immessa, selezionare ElseIf...Then dall'elenco a discesa, quindi sostituire My_expression con la seguente espressione da valutare.
    6. Immettere l'azione da eseguire per questa condizione sulla riga vuota sotto la condizione.
    7. Ripetere i due passaggi precedenti per il numero di volte necessario per inserire le restanti condizioni.

    Quando si immettono le azioni da eseguire, utilizzare le opzioni nell'area Frammenti per inserire una funzione in corrispondenza della posizione del cursore. È quindi possibile aggiungere gli argomenti appropriati per la funzione.

    NotaÈ inoltre possibile specificare manualmente qualsiasi testo descritto in questa procedura; tuttavia l'utilizzo degli elenchi a discesa e dei frammenti consente di ridurre gli errori.

    Esecuzione di operazioni alternative in base al confronto mediante Case

    Select Case <test expression>Case <expression list 1><statement list 1>Case <expression list 2><statement list 2>Case Else<statement list n>End Select
    1. Posizionare il cursore nella posizione desiderata nell'area di testo della regola della finestra di dialogo Modifica regola.
    2. Selezionare Select Case dall'elenco a discesa parole chiave nella barra degli strumenti.
    3. Aggiungere uno spazio alla fine dell'istruzione inserita, quindi immettere l'espressione di prova.
    4. Premere INVIO e selezionare Case dall'elenco a discesa parole chiave nella barra degli strumenti.
    5. Aggiungere uno spazio alla fine dell'istruzione inserita, quindi immettere la prima espressione da confrontare con l'espressione di prova.
    6. Immettere l'azione da eseguire per questa condizione, sulla riga vuota sotto l'espressione.
    7. Ripetere i due passaggi precedenti per il numero di volte necessario a soddisfare le esigenze di ciascuna espressione.
    8. Posizionare il cursore su una riga vuota al di sotto dell'ultima espressione e selezionare Case Else dal menu parole chiave.
    9. Nella riga vuota sotto l'istruzione inserita, immettere l'ultima clausola Case per intercettare risultati imprevisti, quindi premere INVIO.
    10. Posizionare il cursore su una riga vuota al di sotto dell'ultima espressione e selezionare End Select dal menu parole chiave.

    Quando si immettono le azioni da eseguire, utilizzare le opzioni nell'area Frammenti per inserire una funzione in corrispondenza della posizione del cursore. È quindi possibile aggiungere gli argomenti appropriati per la funzione.

    NotaÈ inoltre possibile specificare manualmente qualsiasi testo descritto in questa procedura; tuttavia l'utilizzo degli elenchi a discesa e dei frammenti consente di ridurre gli errori.

    Riferimenti

    Istruzioni condizionali

    Formato If-Then-Else

    If <conditional expression> Then<one or more statements to be executed if condition is true>Else<one or more statements to be executed if condition is false>End If

    Formato If-Then

    If <conditional expression> Then<one or more statements to be executed if condition is true>End If

    Formato Null

    If <conditional expression> Then ‘do nothingElse <one or more statements to be executed if condition is false>End If

    Istruzione If come riga singola

    If <conditional expression> Then <true statement> [Else <false statement>]

    Formato blocco If esteso (If-Then-ElseIf)

    If <conditional expression 1> Then<one or more statements to be executed if condition 1 is true>ElseIf <conditional expression 2> Then<one or more statements to be executed if condition 2 is true>...
    ElseIf <conditional expression n> Then
    <one or more statements to be executed if condition n is true>
    Else
    <one or more statements to be executed if none of the above conditions is true>
    End If

    Formato Select Case

    Select Case <test expression>Case <expression list 1><statement list 1>Case <expression list 2><statement list 2>Case Else<statement list n>End Select