![]() |
Boolean Conjunctions and Disjunctions |
Conditional Conjunctions
Nesting a Conditional Statement
In the body of the conditional statement, you can create another conditional statement. This is referred to as nesting the condition.
Practical Learning: Nesting a Conditional Statement
Private Sub cmdDecide_Click()
Dim decision As String
Dim creditScore As Integer
If IsNumeric(txtCreditScore) Then
creditScore = CInt(Nz(txtCreditScore))
If creditScore >= 650 Then
decision = "Loan Approved"
ElseIf creditScore >= 550 Then
decision = "We will need 2 professional and 3 personal references."
Else
decision = "Loan Denied"
End If
End If
txtDecision = decision
End Sub




Nesting an Immediate If Function
To get the functionality of an If...Then...ElseIf... conditional statement, you can nest one IIf() function in another. In reality, you would call the IIf() function in place of the FalsePart of another IIf() function. The nesting can be resolved as follows:
Function IIf(ByVal Expression As Boolean,
ByVal TruePart As Object,
Function IIf(ByVal Expression As Boolean,
ByVal TruePart As Object,
Function IIf(ByVal Expression As Boolean,
ByVal TruePart As Object,
Function IIf(ByVal Expression As Boolean,
ByVal TruePart As Object,
ByVal FalsePart As Object
) As Object
) As Object
) As Object
) As Object
By nesting IIf() calls, a long expression like the following can be written in one line:
Private Sub FirstName_LostFocus()
If FirstName = "" Then
If LastName = "" Then
FullName = ""
Else
FullName = LastName
End If
Else
FullName = LastName & ", " & FirstName
End If
End Sub
Practical Learning: Nesting an Immediate If Function
Private Sub cmdCalculate_Click()
Dim factor
Dim principal
Dim futureValue
Dim interestRate
Dim interestEarned
Dim periods As Integer
Dim compounded As Integer
Dim compoundFrequency As Integer
principal = CDbl(Nz(txtPrincipal))
interestRate = CDbl(Nz(txtInterestRate)) / 100#
periods = CInt(Nz(txtPeriods))
compounded = CInt(InputBox("Enter a number for the desired compound frequency:" & vbCrLf & _
"1 - Daily" & vbCrLf & _
"2 - Weekly" & vbCrLf & _
"3 - Monthly" & vbCrLf & _
"4 - Quarterly" & vbCrLf & _
"5 - Semiannually" & vbCrLf & _
"6 - Anually", _
"Compound interest", "1"))
compoundFrequency = iif(compounded = 1, 365, iif(compounded = 2, 52, iif(compounded = 3, 12, iif(compounded = 4, 4, iif(compounded = 5, 2, 1)))))
factor = iif(compounded = 1, interestRate / 365, _
iif(compounded = 2, interestRate / 52, _
iif(compounded = 3, interestRate / 12, _
iif(compounded = 4, interestRate / 4, _
iif(compounded = 5, interestRate / 2, interestRate) _
) _
) _
) _
)
futureValue = principal * ((1# + factor) ^ (periods * compoundFrequency))
interestEarned = futureValue - principal
txtCompounded = iif(compounded = 1, "Compounded Daily", _
iif(compounded = 2, "Compounded Weekly", _
iif(compounded = 3, "Compounded Monthly", _
iif(compounded = 4, "Compounded Quarterly", _
iif(compounded = 6, "Compounded Semi-Annually", _
"Compounded Anually")))))
txtInterestEarned = FormatNumber(interestEarned)
txtFutureValue = FormatNumber(futureValue)
End Sub



When you nest one condition in another condition as in:
If condition1 = True ' The first or external condition
If condition2 = True ' The second or internal condition
statement(s)
End If
End If
you are in fact saying "If condition1 verifies, Then if condition2 verifies, do this...". To support a simplified version of this scenario, the Visual Basic language provides the Boolean conjunction operator named And. Its primary formula is:
condition1 And Condition2
statement(s)
You must formulate each condition to produce a true or a false result. The result is as follows:
Sub Calculate()
Dim principal As Double, commission As Double
Dim numberOfShares As Integer, pricePerShare As Double
numberOfShares = CInt(TxtNumberOfShares)
pricePerShare = CDbl(TxtPricePerShare)
principal = numberOfShares * pricePerShare
If principal >= 0.00 And principal <= 2500.00 Then
commission = 26.25 + (principal * 0.0014)
End If
End SubTo make your code easier to read, it is a good idea to include each Boolean operation in its own parentheses.
Practical
Learning: Creating and Using Boolean Conjunctions
Private Sub cmdCalculate_Click()
Dim principal As Double, commission As Double
Dim numberOfShares As Integer, pricePerShare As Double
numberOfShares = CInt(Nz(txtNumberOfShares))
pricePerShare = CDbl(Nz(txtPricePerShare))
principal = numberOfShares * pricePerShare
If principal = 0# Then
commission = 0#
End If
If (principal > 0#) And (principal <= 2500#) Then
commission = 26.25 + (principal * 0.0014)
End If
If (principal > 2500#) And (principal <= 6000#) Then
commission = 45# + (principal * 0.0054)
End If
If (principal > 6000#) And (principal <= 20000#) Then
commission = 60# + (principal * 0.0028)
End If
If (principal > 20000#) And (principal <= 50000#) Then
commission = 75# + (principal * 0.001875)
End If
If (principal > 50000#) And (principal <= 500000#) Then
commission = 131.25 + (principal * 0.0009)
End If
If (principal > 500000#) Then
commission = 206.25 + (principal * 0.000075)
End If
txtPrincipal = FormatNumber(principal)
txtCommission = FormatNumber(commission)
txtTotalInvestment = FormatNumber(principal + commission)
End Sub



Creating Many Conjunctions
Depending on your program, if two conditions are not enough, you can create as many conjunctions as you want. The formula to follow is:
condition1 And condition2 And condition3 And . . . And condition_n
When the expression is checked, if any of the operations is false, the whole operation is false. The only time the whole operation is true is if all of the operations are true.
Of course, you can nest a Boolean condition inside another conditional statement.
Introduction
A Boolean disjunction is a combination of conditions where only one of the conditions needs to be true for the whole operation to be true. This operation is performed using the Boolean disjunction operator represented as Or. The primary formula to follow is:
condition1 Or condition2
The operation works as follows:
Combining Conjunctions and Disjunctions
Conjunctions and disjunctions can be used in the same expression. A conjunction (or disjunction) can be used to evaluate one sub-expression while a disjunction (or conjunction) can be used to evaluate another sub-expression.
As seen previously, one way you can combine conditional statements is by nesting them.
Practical
Learning: Ending the Lesson
|
|
||
| Previous | Copyright © 2008-2022, FunctionX, Inc. | Next |
|
|
||