Chapter 4
Decisions and
Conditions
McGraw-Hill
Copyright © 2011 by The McGraw-Hill Companies, Inc. All Rights Reserved.
Objectives (1 of 2)
•
•
•
•
•
•
•
Use If statements to control the flow of logic.
Understand and use nested If statements.
Read and create action diagrams that illustrate the logic
in a selection process.
Evaluate conditions using the comparison operators.
Combine conditions using And, Or, AndAlso, and
OrElse.
Test the Checked property of radio buttons and check
boxes.
Perform validation on numeric fields.
4-2
Objectives (2 of 2)
•
•
•
•
•
Use a Case structure for multiple decisions.
Use one event procedure to respond to the events for
multiple controls and determine which control caused
the event.
Call an event procedure from another procedure.
Create message boxes with multiple buttons and
choose alternate actions based on the user response.
Debug projects using breakpoints, stepping program
execution, and displaying intermediate results.
4-3
If Statements
•
•
•
•
•
•
Used to make decisions
If true, only the Then clause is executed, if false,
only Else clause, if present, is executed
Block If…Then…Else must always conclude with
End If.
Then must be on same line as If or ElseIf.
End If and Else must appear alone on a line.
Note: ElseIf is 1 word, End If is 2 words.
4-4
If…Then…Else — General Form
If (condition) Then
statement(s)
[ElseIf (condition) Then
statement(s)]
[Else
statement(s)]
End If
Logic of an If /Then/
Else statement
Logic of an If statement without the Else
4-5
If…Then…Else — Example
unitsDecimal = Decimal.Parse(unitsTextBox.Text)
If unitsDecimal < 32D Then
freshmanRadioButton.Checked = True
Else
freshmanRadioButton.Checked = False
End IF
4-6
Charting If Statements
•
•
•
A Uniform Modeling Language (UML) activity diagram is
a useful tool for showing the logic of an IF statement.
Can be used to help programmers organize their
thoughts and design projects more quickly
UML includes several types of diagrams.
• Activity diagram-visual planning tool for decisions/actions for
either the entire application or single procedure
4-7
Conditions
•
•
•
•
•
•
Test in an If statement is based on a condition.
Six relational operators are used for comparison.
Negative numbers are less than positive numbers.
An equal sign is used to test for equality.
Strings can be compared. Enclose strings in quotes.
• JOAN is less than JOHN
• HOPE is less than HOPELESS
Numbers are always less than letters.
• 300ZX is less than Porsche
4-8
The Helpful Editor
•
•
When entering IF statements, the editor
automatically adds the Then and End If.
The editor attempts to correct errors by supplying a
colon if multiple statements are entered on a line.
• The colon is a statement terminator.
• Good programming practices dictate that
there should be only one statement per line—
so remove the extra colon if found, and
correct the syntax.
4-9
The Six Relational Operators
The test in an IF statement if based on a condition. To
form conditions, comparison operators are used.
> < = <> >= <=
4-10
Comparing Strings
•
•
•
Comparison begins with the left-most character
and proceeds one character at a time, left to right.
If a character in one string is not equal to the
corresponding character in the 2nd string, the
comparison terminates.
The string with the lower-ranking character is
judged less than the other.
• Ranking is based on ANSI code, an established order
(collating sequence) for all letters, numbers, and
special characters.
4-11
Comparing Upper
and Lowercase Characters
•
Use ToUpper and ToLower methods of the String
class to return the uppercase or lowercase equivalent
of a string, respectively.
If
nameTextBox.Text.ToUpper( )
 BI
Then
' Do something.
When
name TextBox.Text to uppercase, it
Endconverting
If
must be compared to an uppercase literal (“BASIC”) if it
is to evaluate as True.
4-12
Compound Condition
If maleRadioButton.hecked
nd _
Integer.Parse(ageTextBox.Text)
< 21 Then
minorMaleountInteger + 1
End If
If juniorRadioButton.hecked
Or seniorRadioButton.hecked
Then
upperlassmanInteger + 1
End If
4-13
Combining Logical Operators
•
•
•
Compound conditions can combine multiple logical
conditions.
When both And and Or are evaluated, And is evaluated
before the Or.
Use parenthesis to change the order of evaluation—
condition inside the parenthesis is evaluated first.
If saleDecimal > 1000.0D Or
discountRadioButton.hecke
d _
nd
stateTextBox.Text.ToUpper(
) <>  Then
' ode here to
4-14
Short-Circuit Operations
•
•
•
Visual Basic has 2 operators that provide shortcircuit evaluation for compound conditions:
the AndAlso and OrElse. VB evaluates both
expressions for True or False, then evaluates the
And.
The OrElse is designed to short circuit when the
first condition evaluates True.
AndAlso and OrElse are used for advanced
programming when the 2nd expression should not
be executed for some reason.
4-15
Nested If Statements
If tempInteger > 32
Then
If tempInteger > 80
Then
commentLabel.Text 
Hot
Else
commentLabel.Text 
Moderate
End If
Else
commentLabel.Text 
Freezing
End If
4-16
•
•
Using If Statements with Radio Buttons &
Check Boxes
Instead of coding the
CheckedChanged events,
use If statements to see
which are selected.
Place your code in the
Click event of Buttons,
such as an OK or Apply
button; VS checks to see
which options are
selected.
4-17
Enhancing Message Boxes
•
•
•
•
For longer, more complex messages, store the
message text in a String variable and use that
variable as an argument of the Show method.
VB will wrap longer messages to a second line.
Include ControlChars to control the line length and
position of the line break in multiple lines of output.
Combine multiple NewLine constants to achieve
double spacing and create multiple message lines.
4-18
Message String Example
Dim formattedTotaltring
s tring
Dim formattedvgtring
tring
Dim messagetring
s
tring
s
formattedTotaltring 
totalalesDecimal.Totring(N
)
formattedvgtring 
averagealeDecimal.Totring(
N)
4-19
Message Box — Multiple Lines of Output
ControlChars.NewLine
Used to force to next line
4-20
ControlChars Constants
ControlChar Constant
Description
CrLf
Carriage return/linefeed character combination
Cr
Carriage return
Lf
Line feed
NewLine
New line character. Same effect as a carriage
return/linefeed character combination
NullChar
Character with a value of zero
Tab
Tab character
Back
Backspace character
FormFeed
Formfeed character (not useful in Microsoft
Windows)
VerticalTab
Vertical tab character (not useful in Microsoft
Windows
Quote
Quotation mark character
4-21
Displaying Multiple Buttons
•
•
•
Use MessageBoxButtons constants to display
more than one button in the Message Box.
Message Box's Show method returns a
DialogResult object that can be checked to see
which button the user clicked.
Declare a variable to hold an instance of the
DialogResult type to capture the outcome of the
Show method.
4-22
Message Box - Multiple Buttons
MessageBoxButtons.YesNo
4-23
Declaring an Object Variable for the Method
Return
Dim whichButtonDialogResult
s DialogResult
whichButtonDialogResult 
MessageBox.how _
(lear the current order
figures?, lear Order, _
MessageBoxButtons.YesNo,
MessageBoxIcon.Question)
If whichButtonDialogResult
 DialogResult.Yes Then
4-24
Specifying a Default Button and Options
•
•
•
Use a different signature for the Message Box
Show method to specify a default button.
Add the MessageBoxDefaultButton argument
after the MessageBoxIcons argument.
Set message alignment with
MessageBoxOptions argument.
4-25
Input Validation
•
•
Check to see if valid values were entered by user
before beginning calculations—called validation.
Check for a range of values (reasonableness).
•
‘ Code to perform calculations….
Check for a required field (not blank).
• If Integer.Parse(HoursTextBox.Text) <= 10 Then
• If NameTextBox.Text <> "" Then ...
4-26
Performing Multiple Validations
•
•
Use nested If statement to validate multiple values on a
form.
--OR-Use Case structure to validate multiple values.
• Simpler and clearer than nested If
• No limit to number of statements that follow a Case
statement
• When using a relational operator you must use the
word Is.
• Use the word To to indicate a range of constants.
4-27
Sharing an Event Procedure
•
Add events to the Handles clause at the top of an
event procedure.
• Allows the procedure to respond to events of other
•
•
controls
Good professional technique is to set up a modulelevel variable to hold the selection a user makes.
Key to using a shared event procedure is the
sender argument.
• Cast (convert) sender to a specific object type using
the CType function.
4-28
Calling Event Procedures
•
•
Reusable code
General Form
•
Examples
• [Call] ProcedureName ( )
• Keyword Call is optional and rarely used.
• Call clearButton_Click (sender, e)
OR
• ClearButton_Click (sender, e)
4-29
Calling Event Procedures — Example
•
•
A form with
buttons that
perform
overlapping
functions
The New Order
button must do
the same tasks
as Clear for
Next Item.
4-30
Debugging Tools
•
•
•
•
•
•
Use Debug Menu and Debug options on VB
Standard toolbar.
Place Debug.WriteLine method in code.
Set BreakPoints to stop at a particular location in
code and watch what happens.
Step Into, Step Over, Step Out
Edit and Continue
Locals Window, and Autos Window
• View the values of properties, variables, mathematical
expressions, and conditions.
4-31
Debug Menu and Toolbar
The debugging
buttons on the
VB standard
toolbar
The
debugging
options on
the Debug
menu
showing the
keyboard
shortcut
keys
4-32
Writing to the Immediate Window
• Debug.WriteLine(TextString)
• Debug.WriteLine(Object)
Debug.WriteLine(calculateB
utton procedure entered)
Debug.WriteLine(quantityTex
tBox)
4-33
Breakpoints
Toggle Breakpoints On/Off by
clicking in Editor's gray left margin
indicator.
4-34
Edit and Continue
When attempting to continue execution after making
changes in Debugging mode, this dialog box appears if
the edits are too major—Click Restart to recompile and
run again. Note: Edit and Continue is not supported in a
64 bit Windows environment.
4-35
The Locals Window
Shows values of local variables that
are within scope of current
statement
4-36
The Autos Window
Automatically adjusts to show
variables and properties that appear
in previous and next few lines
4-37