Chapter 4 Decisions and Conditions McGraw-Hill

advertisement
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)
[Else If (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. (pg. 161)
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( ) = “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-12
Compound Condition
If maleRadioButton.Checked And _
Integer.Parse(ageTextBox.Text) < 21 Then
minorMaleCountInteger += 1
End If
If juniorRadioButton.Checked Or seniorRadioButton.Checked
Then
upperClassmanInteger += 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.Checked _
And stateTextBox.Text.ToUpper( ) <> "CA" Then
' Code here to calculate the discount.
End If
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
Nested If Nested If StatementsStatements
If tempInteger <= 32 Then
commentLabel.Text = "Freezing"
Else
If tempInteger > 80 Then
commentLabel.Text = "Hot"
Else
commentLabel.Text = "Moderate"
End If
End If
4-17
Nested If Nested If StatementsStatements
If tempInteger <= 32 Then
commentLabel.Text = "Freezing"
Else
If tempInteger <= 80 Then
commentLabel.Text = "Moderate"
Else
commentLabel.Text =“Hot"
End If
End If
4-18
Nested If Nested If StatementsStatements
If tempInteger > 80 Then
commentLabel.Text = "Hot"
Else
If tempInteger > 32 Then
commentLabel.Text = "Moderate”
Else
commentLabel.Text = "Freezing"
End If
End If
4-19
•
•
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-20
Checking Radio Buttons
If BeignRadioButton.Checked then
BackColor = Color.Beige
ElseIF BlueRadioButton.Checked then
BackColor = Color.Blue
ElseIf YellowRadioButton.Checked then
BackColor = Color.Yellow
Else
BackColor = Color Gray
End If
4-21
Checking Check Boxes
If FastShipCheckBox.Checked Then
TotalDecimal += FastShipRateDecimal
End If
If GiftWrapCheckBox.Checked then
TotalDecimal += WRAP_AMOUNT_Decimal
End If
4-22
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-23
Message String Example
Dim formattedTotalString As String
Dim formattedAvgString As String
Dim messageString As String
formattedTotalString = totalSalesDecimal.ToString("N")
formattedAvgString = averageSaleDecimal.ToString("N")
messageString = "Total Sales: " & formattedTotalString _
& Environment.NewLine & "Average Sale: " & _
formattedAvgString
MessageBox.Show(messageString, "Sales Summary", _
MessageBoxButtons.OK)
4-24
Message Box — Multiple Lines of Output
ControlChars.NewLine
Used to force to next line
4-25
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-26
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-27
Message Box - Multiple Buttons
MessageBoxButtons.YesNo
4-28
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-29
Optional Method
If MessageBox.Show ("Clear the current order figures?", _
"Clear Order", MessageBoxButtons.YesNo, _
MessageBoxIcon.Question)= DialogResult.Yes Then
' Code to clear the order.
End If
4-30
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. (pg. 173)
Set message alignment with
MessageBoxOptions argument.
4-31
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-32
Performing Multiple Validations
•
Use nested If statement to validate multiple values on a
form.
Try
unitsInteger = Integer.Parse(UnitsTextBox.Text)
If unitsInteger <1 or unitsInteger >99 then
invalid data - processing
Else
good data - processing
End If
Catch ex as Exception
invalid data – processing
End Try
4-33
Multiple Field Validation
Try
unitsInteger = Integer.Parse(UnitsTextBox.Text)
If unitsInteger <1 or unitsInteger >99 then
invalid data – processing
Exit Sub
End If
Catch ex as Exception
invalid data – processing
Exit Sub
End Try
Try
priceDecimal = Decimal.Parse(PriceTextBox.Text)
If priceDecimal <1.00 or priceDecimal >99.99 then
invalid data – processing
Exit Sub
End If
Catch ex as Exception
invalid data – processing
Exit Sub
End Try
4-34
Case Structure
•
Use Case structure to test same item for 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-35
Case Example
Select Case TempInteger
Case <= 32
CommentLabel.Text = “Freezing”
Case <= 80
CommentLabel.Text = “Moderate”
Case Else
CommentLabel.Text = “Hot”
End Select
4-36
Case Example
Select Case TempInteger
Case > 80
CommentLabel.Text = “Hot”
Case > 32
CommentLabel.Text = “Moderate”
Case Else
CommentLabel.Text = “Freezing”
End Select
4-37
Case Problem Definition #1#1
Allow the user to enter a numeric test score and
the program should return a letter grade. Following
grading scale:
90 and above
A
80 and above
B
70 and above
C
60 and above
D
Below 60
F
4-38
Case Problem Definition #2
Write the logic to allow the user to enter a name
(required), hours worked, and hourly rate of pay.
The maximum value for hours worked is 60 and the
maximum value for hourly rate is 50.00. if the
person works more that 40 hours (overtime), they
are to receive 1.5 times their regular rate for the
overtime hours. Display their regular pay, overtime
pay, and total pay.
4-39
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-40
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-41
Writing to the Immediate Window
• Debug.WriteLine(TextString)
• Debug.WriteLine(Object)
Debug.WriteLine("calculateButton procedure entered")
Debug.WriteLine(quantityTextBox)
4-42
Breakpoints
Toggle Breakpoints On/Off by
clicking in Editor's gray left margin
indicator.
4-43
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-44
The Locals Window
Shows values of local variables that
are within scope of current
statement
4-45
The Autos Window
Automatically adjusts to show
variables and properties that appear
in previous and next few lines
4-46
Download