Lesson IV. Logical
Structures
Objectives
ü To able
to write simple decision-making statements
ü To be
able to use the If-Then and If-Then-Else selection structures to choose between
alternative actions
ü To use
Logical Operators
ü To use
the Format() function
![]()
Logical structures allow nesting
in the program flow. You might want to do a particular routine if a certain
condition is true, and do another routine if it isn’t. For example, if you want to check if a
student has passed a subject, what do you do?
You check if his grade is greater than or equal to the passing
grade. You say “Passed” if this is true.
Otherwise, you say “Failed”.
There are a couple of logical
structures in VB. What we will discuss
in this lesson are: If, If-Else, and the Select-Case
statements. But before going into
these, let us discuss Comparison and Logical Operators first.
Comparison operators compare data
values against each other and produce True or False results. Put simply, we evaluate a comparison
expression as True or False.
The expression 1>2 is false because 1 is not greater than
2. The following table describes the
comparison operators provided for by Visual Basic.
|
Operator |
Usage |
Description |
|
> |
Salary > 10,000 |
Returns true of if the value on the left hand side is
greater than the value on the right hand side. |
|
< |
Age < 18 |
Returns true of if the value on the left hand side is
less than the value on the right hand side. |
|
= |
Gender = “Female” |
Returns true of if the values on the left and right hand
sides are equal to each other. |
|
>= |
Grade >= 60 |
Returns true of if the value on the left hand side is
greater than or equal to the value on the right hand side. |
|
<= |
Total <= Quota |
Returns true of if the value on the left hand side is
less than or equal to the value on the right hand side. |
|
<> |
Course <> “CS” |
Returns true of if the values on the left and right hand
sides are unequal. |
Note that expressions on both
sides of a comparison operator should conform to the same data type or at least
compatible types. You cannot compare
String and numeric values, as this will cause a type mismatch error.
VB also supports three additional
operators – And, Or, and Not. These are called Logical Operators. Logical operators allow you to combine two
or more comparison tests into a single compound comparison expression.
The next table describes the logical operators.
|
Operator |
Usage |
Description |
|
And |
(A>B) And (C<D) |
Returns true if both expressions are true. |
|
Or |
(A>B) Or (C<D) |
Returns true if at least one expression is true. |
|
Not |
Not (A>B) |
Returns true if the expression (A>B) is false. It returns false if the expression is
true. |
Comparisons are evaluated from left to right unless
explicitly indicated by parentheses.
Consider the following expressions:
Expression 1. (1>3)
Or (2=2) And (3<=2) « False Or True And False
Expression 2. (1>3)
Or ((2=2) And (3<=2)) « False Or (True And False)
The expression 1 returns False
while expression 2 returns True.
Expression 1 is evaluated from left to right, evaluating the Or
expression first then the And.
In expression 2, the And expression is evaluated first
because it is enclosed in parentheses.
The If statement has the following syntax:
If
<comparisonExpression> Then
One or more VB statements

The statements enclosed in the If statement are executed only
if <comparisonExpression> is true.
In the following example, the allowance is increased by 50 only if the
grade is greater than 90.
If
(Grade>90) Then
allowance = allowance + 50
If-Else statement is an extension of the If statement. While nesting in an If statement is “this
way or nowhere”, If-Else is “this way or that way”. The syntax is as follows:
If
<comparisonExpression> Then
One or more VB statements
One or more VB statements

As in the If statement, if
<comparisonExpression> is true, the statement block proceeding Then
is executed. The If-Else
statement executes the statements after the Else keyword if this is
false. The following is an example:
If
(grade>=60) Then
lblOutput.Caption = “You passed!”
lblOutput.Caption = “Sorry but you
failed.”
If we are comparing an expression
to several expressions, the If-Else statement may not be efficient. Consider this example: display “Excellent”
if the grade falls within the range 86-100, “Outstanding” for grades 71-85,
“Good” for grades 50-70, and “Failed” for grades below 50. This can be done through If-Else
statement:
If
(grade>=86) Then
lblOutput.Caption = “Excellent”
If (grade>=71) Then
lblOutput.Caption =
“Outstanding”
Else
If (grade>=50) Then
LblOutput.Caption = “Good”
Else
LblOutoput.Caption = “Failed”
End If
End If
The above code works but the coding is extremely difficult
to follow.
Visual Basic supports another logical statement called Select Case. The syntax is as follows:
Select Case <expression>
Case <value>:
One
or More VB statements
Case <value>:
One
or More VB statements
…
Case <value>:
One
or More VB statements
Case Else
One
or More VB statements
<expression> can be any VB expression – such as a calculation, a string value, or a numeric value – provided that it results in an integer or a string value. Each <value> must be compatible with <expression>, that is, if <expression> results in an integer, then all <value>s must be integers as well. VB compares <expression> to each <value>. If it finds a match, it executes the statements that immediately follow it. It then ignores the rest of the Case statements. In the event when no matches have been found, then the statements following the Case Else are executed.
The Case clause has several variations. Case <value> works when you are comparing <expression> to several specific values (e.g. Case 6, Case “Computer”). If you want to compare it to a range of values, you use either:
Case Is <relation>: e.g. Case Is <5:
or
Case <expression1> To <expression2>: e.g. Case 40 To 60:
The following code is the translation
of the If-Else code to Select-Case. It is now shorter and more readable.
Select Case grade
Case 50 To 70: lblOutput.Caption
= “Good”
Case 71 To 85: lblOutput.Caption
= “Outstanding”
Case 86 To 100: lblOutput.Caption = “Excellent”
Case Else: lblOutput.Caption = “Failed”
IN FOCUS: FORMAT FUNCTION
The Format() function
enables you to format how data are displayed.
If variable total_cost contains the total amount of a product,
you might want to display the value of this variable in currency format (in 2
decimal places with a currency sign).
Format() does not
change a value, it only changes the way a value looks. This function returns a variant. The
following is Format()’s syntax:
Format(<expression>,
<strFormat>)
<expression> can be any
variable, expression, or a constant.
<strFormat> may be a value in the following table:
|
strFormat |
Description |
|
“Currency” |
A dollar sign appears before the formatted
value. The value has a comma
thousands separator and 2 decimal places.
Negative values are automatically enclosed in parentheses. |
|
“Fixed” |
Displays at least one digit before and two digits
following the decimal point, with no thousands separator. |
|
“General Number” |
Displays the number with no thousands separator. |
|
“Percent” |
Displays the number, multiplied by 100, and adds
appends percent sign to the right of the number. |
You can also create your own strFormat. You’ll just need a combination of pound sign and zeros to format values. Each pound sign indicates where a significant digit goes. The zero indicates that you want either leading or trailing zeros, whether the zero or significant or not.
Examples:
A = 123.3232
B = 23.0002
C = 12233
D = .34
Format Expression Result
Format(A, ”Currency”) $ 123.32
Format(D, ”Percent”) 34%
Format(B, “Fixed”) 23.00
Format(D, “###”) Nothing
Format(D, “##.###”) .34
Format(D,”0.000”) 0.340
Format(C,”#,###.00”) 12,233.00
Format(C,”#,###.##”) 12,233.
Format(C, “P #,##0.00”) P 12, 233.00
We will create an application that asks for two grades and outputs their average. It will then display “Passed” if the average is greater than or equal to 60 or “Failed” if the average grade is less than 60.

1. Create a new project.
2. For the Form control, set the following properties:
1. Drag 2
Labels to the Form:
Set the following properties for
the first Label:
§
Name lblMGrade
§
BackStyle Transparent
§
Caption Enter
your Midterm Grade:
§
Font Arial,
Size 16
§
Top 240
§
Left 240
Set the following properties for
the second Label:
§
Name lblFGrade
§
BackStyle Transparent
§
Caption Enter
your Final Grade:
§
Font Arial,
Size 16
§
Top 960
§
Left 240
2. Drag 2
TextBoxes to the Form.
Set the following Properties for
the first TextBox:
§
Name txtMGrade
§
Font Arial,
Size 14
§
Text (None. Erase Default Value)
§
Width 615
§
Height 495
§
Top 240
§
Left 4200
§
MaxLength 3
Set the following properties for
the second TextBox:
§
Name txtFGrade
§
Font Arial,
Size 14
§
Text (None. Erase Default Value)
§
Width 615
§
Height 495
§
Top 960
§
Left 4200
§
MaxLength 3
3. Drag a
Shape to the Form.
Set the following properties for
the Shape:
§
Name shpRect
§
Width 4695
§
Height 1575
§
Top 1920
§
Left 240
4. Drag 2
Labels to the Form.
Set the following properties for
the first Label:
§
Name lblAve
§
Font Arial,
Size 14
§
Caption Average:
§
Width 2175
§
Height 375
§
BackColor Light
Yellow
§
Top 2160
§
Left 840
Set the following properties for
the second Label:
§
Name lblRema
§
Font Arial,
Size 14
§
Caption Remark:
§
Width 2175
§
Height 375
§
BackColor Light
Yellow
§
Top 2760
§
Left 840
5. Drag
additional 2 Labels to the Form.
Set the following properties for
Label 1:
§
Name lblAverage
§
Caption None. Erase Default Value
§
Width 1215
§
Height 375
§
Top 2160
§
Left 3120
§
Backcolor Lightyellow
Set the following properties for
Label 2:
§
Name lblRemark
§
Caption None. Erase Default Value
§
Width 1215
§
Height 375
§
Top 2760
§
Left 3120
§
Backcolor Lightyellow
6. Drag a
CommandButton to the Form.
Set the following properties for
the CommandButton.
§
Name cmdCompute
§
Caption COMPUTE
§
Width 1455
§
Height 495
§
Top 3960
§
Left 1800
7.
Double Click on the Command Button. Enter the following code to your cmdCompute_Click
procedure.
8. Run the
application and see how your new application works.
9. Save your
work as Lesson4.vbp.
1.
Rewrite the following nested If statement using a
single If with a logical operator:
If (level
>= 2) Then
If (course = ”BSCS”) Then
lblResult.Caption = “Qualified Member”
End If
End If
2.
How do comparison operators differ from mathematical operators?
3.
What role does the ASCII table play in comparison logic?
4.
What happens if every Case fails and there is no Case Else
option?
5.
Rewrite the following If statement to eliminate the Not. The logic should still be the same.
If Not(A <
4) Or Not(college = ”Engineering”) Then
6. Write a
program that contains a TextBox and a CommandButton. Put a Label above the TextBox
that tells the user to type a number from 1 to 10 inside the TextBox. Display a default value of 0. When the user
clicks the CommandButton, check the TextBox for a valid
number. Display “Valid Number” in
another Label if the number is within the range. Display “Invalid
Number. Please enter a number from 1 to
10” when the entered value is out of range.