```aslkjdhfalskhjfgalsdkfhalskdhjfglaskdhjflaskdhjfglaksjdhflakshflaksdhjfglaksjhflaksjhf
4-1
Chapter
4
Chapter 4
Decisions and Conditions
McGraw-Hill
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-3
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-4
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-5
If…Then…Else – General Form
If (condition) Then
statement(s)
[ElseIf (condition) Then
statement(s)]
[Else
statement(s)]
End If
Logic with the Else
Logic without the Else
4-6
If…Then…Else - Example
With Me
unitsDecimal = Decimal.Parse(unitsTextBox.Text)
If unitsDecimal < 32D Then
Else
End If
End With
4-7
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-8
 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 statement per line—so remove the extra colon if
found and correct the syntax
4-9
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-10
The Six Relational Operators
The test in an IF statement if based on a condition. To
form conditions comparison operators are used.
> < = <> >= <=
4-11
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 judge
less than the other
 Ranking is based on ANSI code, an established order
(collating sequence) for all letters, numbers, and special
characters
4-12
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( ) = “BASIC" Then
' Do something.
End If
When converting name TextBox.Text to uppercase
it must be compared to an uppercase literal
(“BASIC”) if it is to evaluate as True
4-13
Compound Condition
 Logical operations compare Boolean expressions and
return a Boolean result
 Logical operators: Or, And, Not, AndAlso, OrElse, Xor
Integer.Parse(ageTextBox.Text) < 21 Then
minorMaleCountInteger += 1
End If
Then
upperClassmanInteger += 1
End If
4-14
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—
inside the parenthesis is evaluated first
If saleDecimal > 1000.0 Or
And stateTextBox.Text.ToUpper( ) <> "CA" Then
' Code here to calculate the discount.
End If
4-15
Short-Circuit Operations
 VB.NET 2005 adds 2 new operators that provide
short-circuit evaluation for compound conditions:
 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-16
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-17
Using If Statements with Radio Buttons &
Check Boxes
CheckedChanged
events, use If
statements to see which
are selected
 Place the If statement in
the Click event for a
Button, such as an OK
or Apply button; VS
checks to see which
options are selected
4-18
An Example of Using If Statements with
With Me
.nameLabel.ForeColor = Color.Red
.nameLabel.ForeColor = Color.Green
.nameLabel.ForeColor = Color.Blue
Else
.nameLabel.ForeColor = Color.Black
End If
End With
4-19
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-20
Message String Example
Dim formattedTotalString As String
Dim formattedAvgString As String
Dim messageString As String
formattedTotalString = totalSalesDecimal.ToString("N")
formattedAvgString = averageSalesDecimal.ToString("N")
messageString = "Total Sales: " & formattedTotalString _
& ControlChars.NewLine & "Average Sale: " & _
formattedAvgString
MessageBox.Show(messageString, "Sales Summary", _
MessageBoxButtons.OK)
4-21
Message Box - Multiple Lines of Output
ControlChars.NewLine
Used to force to next line
4-22
ControlChars Constants
ControlChar Constant
Description
CfLf
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-23
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-24
Message Box - Multiple Buttons
MessageBoxButtons.YesNo
4-25
Declaring an Object Variable for the
Method Return
Dim whichButtonDialogResult As DialogResult
whichButtonDialogResult = MessageBox.Show _
("Clear the current order figures?", "Clear Order", _
MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If whichButtonDialogResult = DialogResult.Yes Then
' Code to clear the order.
End If
4-26
Specifying a Default Button and Options
 Use a different signature for the Message Box
Show method to specify a default button
after the MessageBoxIcons argument
 Set message alignment with
MessageBoxOptions argument
4-27
Input Validation
 Check to see if valid values were entered by user
before beginning calculations—called validation
 Check for a range of values (reasonableness)
 If Integer.Parse(Me.hoursTextBox.Text) <= 10 Then
‘ Code to perform calculations….
 Check for a required field (not blank)
 If nameTextBox.Text <> "" Then ...
4-28
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 must use the
word Is
 Use the word To to indicate a range of
constants
4-29
The Select Case Statement - Examples
With Me
Select Case scoreInteger
Case Is >= 100
.messageLabel1.Text = “Excellent Score”
Case 80 To 99
.messageLabel1.Text = “Very Good”
Case 60 To 79
.messageLabel1.Text = “Satisfactory Score”
Case Else
.messageLabel1.Text = “Poor”
End Select
End With
4-30
The Select Case Statement - Examples
Select Case Me.teamTextBox.Text
Select Case listIndexInteger
Case “Tigers”
Case 0
‘ Code for Tigers
‘ Code to handle item 0
Case “Leopards”
Case 1, 2, 3
‘ Code for Leopards
‘ Code for items 1, 2, or 3
Case Else
Case Else
‘ Code for any nonmatch
‘ Code for any other value
End Select
End Select
4-31
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-32
Calling Event Procedures
 Reusable code
 General Form
 [Call] ProcedureName ( )
 Keyword Call is optional and rarely used
 Examples
 Call clearButton_Click (sender, e)
--OR- clearButton_Click (sender, e)
4-33
Calling Event Procedures Example
 A form with
buttons that
perform
overlapping
functions
 The New Order
button must do
as Clear for Next
Item
4-34
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-35
The debugging
buttons on the
VB standard
toolbar
The
debugging
options on
the Debug
showing the
keyboard
shortcut
keys
4-36
Writing to the Immediate Window
 Debug.WriteLine(TextString)
 Debug.WriteLine(Object)
Debug.WriteLine("calculateButton procedure entered")
Debug.WriteLine(quantityTextBox)
4-37
Breakpoints
Toggle Breakpoints On/Off by clicking
in Editor's gray left margin indicator
4-38
Stepping through Code
 Step Into
 The next line of code executes and the program pauses again
in debug time
 If the line of code is a call to another procedure, the first line of
code of the other procedure displays
 Step Over
 Similar to Step Into, except when your code has calls to other
procedures
 It continues rapid execution of the called procedure and pauses at
the next line of the current (calling) procedure being analyzed
 Step Out
 Used while stepping through a called procedure
 It continues rapid execution until the called procedure
completes and pauses at the next line of the calling procedure
4-39
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
4-40
Locals Window
Shows values of local variables that are
within scope of current statement
4-41
Autos Window