iLogic zawiera instrukcje warunkowe, których można użyć w oknie dialogowym Edycja reguły.
Użytkownik może umieścić instrukcje w regułach (niewielkich programach Visual Basic) definiowanych dla danego modelu. Instrukcje warunkowe, takie jak If-Then-Else, umożliwiają regułom działanie na podstawie ustalonych kryteriów.
W instrukcji If-Then-Else wykonywany jest jeden zestaw czynności, jeśli warunek został spełniony (prawda), a inny, jeśli warunek nie został spełniony (fałsz).
Po wykonaniu instrukcji prawda/fałsz program przechodzi do kolejnej instrukcji.
Strukturę If-Then-Else można wdrożyć w iLogic w postaci bloku lub w formie wielowierszowej.
Na przykład:
If size = “small” Then length = 6.0 Else length = 12 End If
Jeśli wyrażenie warunkowe jest prawdziwe, zostaną wykonane instrukcje pomiędzy słowami kluczowymi Then a Else. Instrukcje pomiędzy słowami kluczowymi Else a End If zostaną pominięte. Jeśli wyrażenie warunkowe to fałsz, wykonywane są instrukcje pomiędzy słowami kluczowymi Else a End If. Instrukcje pomiędzy słowami kluczowymi Then a Else są pomijane. W każdym przypadku program przechodzi następnie od instrukcji występującej po instrukcji End If.
W instrukcji If-Then-Else czynność jest wykonywana bez względu na to, czy warunek to prawda czy fałsz . Czasem jednak czynność lub zestaw czynności powinien zostać wykonany wyłącznie wtedy, kiedy warunek to prawda, jeśli natomiast warunek to fałsz, nie należy robić nic.
Część Else bloku If może zostać ominięta. Na przykład:
If size = “small” Then length = 6.0 End If
Można również wykorzystać zestawy czynności null lub empty w postaci bloku instrukcji If. Na przykład użytkownik może wydać instrukcję "jeśli warunek jest prawdziwy, nie rób nic - w przeciwnym wypadku wykonaj czynności", jak to pokazano poniżej:
If length > 20 Then Else MessageBox.Show(" Invalid Size.Length must be at least 20 in. ", "Title") End If
Korzystając z pustego zbioru czynności, dobrze jest zwiększyć przejrzystość zapisu, dodając komentarz w miejscu, w którym normalnie znalazłyby się instrukcje prawda:
If length > 20 Then ’do nothing Else MessageBox.Show(" Invalid Size.Length must be at least 20 in ", "Title") End If
Chociaż postać blokowa instrukcji If zwiększa jej przejrzystość, możliwe jest również zapisanie instrukcji If w postaci pojedynczego wiersza. W tym formacie instrukcja End If nie jest wykorzystywana.
Na przykład:
If length < 20 Then MessageBox.Show("Length is Too Short", "Title") If mass < 1000 Then length =20 Else length =40
Zmienna logiczna, czyli przyjmująca wartość Prawda lub Fałsz, może zostać użyta wszędzie tam, gdzie można też zastosować wyrażenie pokrewne.
Na przykład poniższe dwie instrukcje są jednoznaczne:
If Feature.IsActive("Fillet1") = true Then . . . If Feature.IsActive("Fillet1") Then . . .
W drugiej instrukcji wartość Prawda jest domniemana.
Podobnie, poniższe dwie instrukcje mogą być stosowane zamiennie, by sprawdzić, czy wartość logiczna jest prawdziwa, czy fałszywa.
If Feature.IsActive("Fillet1") = false Then . . . If Not Feature.IsActive("Fillet1") Then . . .
Te przykłady przedstawiają wynik funkcji. Inne mogą obejmować wykorzystanie nazwy parametru jako wartości logicznej lub przypisanie wartości logicznej do lokalnej zmiennej.
Struktura przypadkowa pozwala wybrać między więcej niż dwiema alternatywami.
Strukturę przypadku można wdrożyć przy użyciu struktury bloku rozszerzonego If lub struktury instrukcji Select Case.
Instrukcja bloku rozszerzonego If wykorzystuje jedno lub więcej zdań składowych ElseIf umieszczonych pomiędzy pierwszym zdaniem składowym If a ostatnim zdaniem składowym Else. Słowo kluczowe ElseIf jest pojedynczym słowem.
Na przykład:
If material = "Steel" Then density = 0.284 ElseIf material = "Copper" Then density = 0.323 ElseIf material = "Aluminum" Then density = 0.098 End If
W tym formacie program wykonuje instrukcje powiązane z pierwszym znalezionym prawdziwym wyrażeniem. Później program przechodzi do instrukcji następujących po instrukcji End If. Końcową instrukcję Else należy wykorzystać do wychwycenia wszelkich błędów, które mogą wystąpić, gdy zaistnieją warunki nieodpowiadające wcześniejszym warunkom If lub ElseIf.
Użycie polecenia ElseIf eliminuje potrzebę powielania instrukcji EndIf w zagnieżdżonej strukturze If. Dla celów porównawczych powyższy przykład można również zapisać jako:
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
Select Case to oferująca kilka opcji instrukcja o dużych możliwościach.
Na przykład:
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
W tym formacie instrukcja Select Case określa wyrażenie do przetestowania. Każde kolejne zdanie składowe Case określa jedno lub więcej wyrażeń, które zostaną porównane z wyrażeniem testowym. Pierwsze zdanie składowe Case zawierające wyrażenie, które odpowiada wyrażeniu testowemu, spowoduje wykonanie przypisanych mu czynności. Później program przechodzi do instrukcji następującej po instrukcji End Select. Końcowe zdanie składowe Case Else pozwala wychwycić błędy, które mogą wystąpić, gdy nieprzewidziana wartość wyrażenia testowego nie będzie odpowiadać liście wyrażeń w żadnym z poprzedzających zdań składowych Case.
Wyrażenie testowe następujące po Select Case może mieć bardziej złożoną postać, np.:
Select Case radius +1 Select Case MinOfMany(x,y,z)
Lista wyrażeń w zdaniu składowym Case może zostać utworzona w dowolnym z poniższych formatów:
Format | Przykłady: |
---|---|
<wyrażenie>[,wyrażenie,...] |
Case 1, 10, 100
Case „Y”, „y” |
<wyrażenie> Do <wyrażenie> |
Case 1 To 9
Case „A” To „C” |
Jest<wyrażenie operatora pokrewnego> | Case Is >= 21 |
(połączenie dowolnych z wyżej wymienionych) | Case Is <= 5, 20 To 29, 43 |
Na przykład:
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
Instrukcja Select Case nie wymaga przypisania do żadnej szczególnej zmiennej ani wyrażenia. Może posłużyć do oceny dowolnej ilości warunków, w następującej postaci:
Select Case True Case length >= 10 width = length -1 thickness = length/5 Case length < 10 width = length - .75 thickness = length/6 End Select