Date post: | 26-Dec-2015 |
Category: |
Documents |
Upload: | carmella-harvey |
View: | 214 times |
Download: | 0 times |
Starting Out with Visual Basic .NET 2nd Edition
Chapter 4
Making Decisions andWorking With Strings
Starting Out with Visual Basic .NET 2nd Edition
4.1Introduction
Starting Out with Visual Basic .NET 2nd Edition
Chapter 4 Topics
• This chapter covers the Visual Basic .NET decision statements• If … Then• ElseIf
• It also discusses the use of • Radio Buttons• Message Boxes• Comparisons and Strings
Starting Out with Visual Basic .NET 2nd Edition
4.2The Decision Structure
The Decision Structure Allows a Program to Have More Than One
Path of Execution
Starting Out with Visual Basic .NET 2nd Edition
Order of Statement Execution
• Thus far, all of our code statements have been executed sequentially
• To write meaningful programs our code needs to be able to• Execute code conditionally (this chapter)• Repeat sections of code (next chapter)
Starting Out with Visual Basic .NET 2nd Edition
The Decision Structure
• Flowchart of atypical decisionstructure
• Evaluate thecondition
• Execute, or notsome code
Condition
ConditionalCode
True
False
Starting Out with Visual Basic .NET 2nd Edition
4.3The If…Then Statement
The If…Then Statement Causes Other Statements to Execute Only
Under a Certain Condition
Starting Out with Visual Basic .NET 2nd Edition
If…Then Statement Syntax
• New keywords used above:• If• Then• End
If condition Thenstatement(more statements as needed)
End If
Starting Out with Visual Basic .NET 2nd Edition
Relational Operators
• Usually the condition is formed with a relational operator• > Greater than• < Less than• = Equal to• <> Not equal to• >= Greater than or equal to• <= Less than or equal to
Starting Out with Visual Basic .NET 2nd Edition
Binary Relational Operators
• Operators are classified as to how many operands each takes
• Relational operators are binary operators --each has two operands, e.g.• length > width• size <= 10
• Relational operators yield a True or False (Boolean) result
Starting Out with Visual Basic .NET 2nd Edition
If…Then Examples
If sales > 50000 ThengetsBonus = True
End If
If sales > 50000 ThengetsBonus = TruecommissionRate = 0.12daysOff = daysOff + 1
End If
Starting Out with Visual Basic .NET 2nd Edition
If…Then Rules
• The 'If' and the 'Then' must be on the same line
• Only a remark may follow the 'Then'
• The 'End If' must be on a separate line
• Only a remark may follow the 'End If'
Starting Out with Visual Basic .NET 2nd Edition
If…Then Conventions
• The code between the 'If…Then' and the 'End If' is indented
• Visual Basic .NET does not require this• It is a convention among programmers to
aid in the readability of programs• By default, the Visual Basic .NET editor
will automatically do this indentation as you enter your program
Starting Out with Visual Basic .NET 2nd Edition
Relational Operators with Math Operators
• Either or both of the relational operator operands may themselves be expressions
• Math operators are done before the relational operators
If x + y > a - b ThenlblMessage.Text = "It is true!"
End If
Starting Out with Visual Basic .NET 2nd Edition
Relational Operators with Function Calls
• Either or both of the relational operator operands may themselves be function calls
If Val(txtInput.Text) < 100 ThenlblMessage.Text = "It is true!"
End If
Starting Out with Visual Basic .NET 2nd Edition
Boolean Variables as Flags
• A flag is a Boolean variable that signals when some condition exists in the program
• They can be used as the condition
Dim quotaMet as BooleanquotaMet = sales >= quota
If quotaMet ThenlblMessage.Text = "You have met your sales quota"
End If
Starting Out with Visual Basic .NET 2nd Edition
What an 'If…Then' Really Tests For
• Visual Basic .NET first evaluates the conditional expression
• If the result is 0, the condition is regarded as being False
• If the result is anything else, the condition is regarded as being True
Starting Out with Visual Basic .NET 2nd Edition
4.4The If…Then…Else Statement
The If...Then...Else Statement Executes One Group of Statements If the Condition Is
True and Another Group of Statements If the Condition Is False
Starting Out with Visual Basic .NET 2nd Edition
'If…Then' vs. 'If…Then…Else'
• The 'If…Then' construct will execute or not a group of statements (do something or do nothing)
• The 'If…Then…Else' construct will execute one group of statements or another group (do this or do that)
Starting Out with Visual Basic .NET 2nd Edition
The 'If…Then…Else' Structure
Condition
ExecuteIf True
TrueFalse
ExecuteIf False
Starting Out with Visual Basic .NET 2nd Edition
'If…Then…Else' Example
If temperature < 40 ThenlblMesage.Text = “A little cold, isn’t it?”
ElselblMesage.Text = “Nice weather we’re having!”
End If
Starting Out with Visual Basic .NET 2nd Edition
4.5The If…Then…ElseIf Statement
The If...Then…Elseif Statement Is Like a Chain of If...Then...Else Statements
They Perform Their Tests, One After the Other, Until One of Them Is Found to Be True
Starting Out with Visual Basic .NET 2nd Edition
Two Mutually Exclusive Choices('If…Then…Else')
• The 'If…Then…Else' statement has two choices
• The conditional statement will either be True or False
• Hence, exactly one of the two choices will be selected
• They are mutually exclusive
Starting Out with Visual Basic .NET 2nd Edition
More Than TwoMutually Exclusive Choices
• The 'If…Then…ElseIf' statement provides a
series of mutually exclusive choices
• In pseudo code:If it is very cold Then
Wear a coatElseif it is chilly
Wear a light jacketElseif it is windy
Wear a windbreakerElesif it is hot
Wear no jacket
Starting Out with Visual Basic .NET 2nd Edition
In Visual Basic .NET Syntax
If condition1 ThenStatement(s)1
Elseif condition2 ThenStatements(s)2
Elseif condition3 ThenStatements3
…End If
Starting Out with Visual Basic .NET 2nd Edition
In Flowchart Form
C1
C2
C3
Statement(s)1
True
Statement(s)2
True
Statement(s)3
True
False
False
False
Starting Out with Visual Basic .NET 2nd Edition
Example of Usage
If average < 60 ThenlblGrade.Text = "F"
ElseIf average < 70 ThenlblGrade.Text = "D"
ElseIf average < 80 ThenlblGrade.Text = "C"
ElseIf average < 90 ThenlblGrade.Text = "B"
ElseIf average <= 100 ThenlblGrade.Text = "A"
End If
Starting Out with Visual Basic .NET 2nd Edition
Contrast the Preceding CodeTo This Code Without the Elses
(This is less efficient because every condition is checked)
If average < 60 ThenlblGrade.Text = "F"
End IfIf average < 70 Then
lblGrade.Text = "D"End IfIf average < 80 Then
lblGrade.Text = "C"End IfIf average < 90 Then
lblGrade.Text = "B"End IfIf average <= 100 Then
lblGrade.Text = "A"End If
Starting Out with Visual Basic .NET 2nd Edition
The (Optional) Trailing Else
• A sequence of ElseIfs may end with a plain else (called a trailing Else)
• If none of the conditions were True, the statement(s) after this Else will be executed
• Continuing with the preceding example on the next slide:
Starting Out with Visual Basic .NET 2nd Edition
Use of a Trailing Else
If average < 60 ThenlblGrade.Text = "F"
ElseIf average < 70 ThenlblGrade.Text = "D"
ElseIf average < 80 ThenlblGrade.Text = "C"
ElseIf average < 90 ThenlblGrade.Text = "B"
ElseIf average <= 100 ThenlblGrade.Text = "A"
ElselblGrade.Text = "Invalid"
End If
Starting Out with Visual Basic .NET 2nd Edition
4.6Nested If Statements
A Nested If Statement Is an If Statement in the Conditionally Executed Code of Another If
Statement
Starting Out with Visual Basic .NET 2nd Edition
'If' Statements Within 'If' Statements
• Inside of any of the styles of 'If' statements that we have seen, the statement(s) portion can be any combination of statements
• This includes other 'If' statements
• Hence more complex decision structures can be created (by nesting 'Ifs' within 'Ifs')
Starting Out with Visual Basic .NET 2nd Edition
Consider This Code
If Val(txtSalary.Text) > 30000 ThenIf Val(txtYearsOnJob.Text) > 2 Then
lblMessage.Text = "The applicant qualifies."Else
lblMessage.Text = "The applicant does not qualify."End If
ElseIf Val(txtYearsOnJob.Text) > 5 Then
lblMessage.Text = "The applicant qualifies."Else
lblMessage.Text = "The applicant does not qualify."End If
End If
Note how the convention of indentationsemphasizes the structure of nested Ifs.
Starting Out with Visual Basic .NET 2nd Edition
Flowchart Version
Val(txtYearsOnJob.Text) > 5
Val(txtSalary.Text) > 30000
Val(txtYearsOnJob.Text) > 2
lblMessage.Text = "The applicant
qualifies."
lblMessage.Text = "The applicantdoes
not qualify."
lblMessage.Text = "The applicant
qualifies."
lblMessage.Text = "The applicantdoes
not qualify."
False
False False
True
TrueTrue
Starting Out with Visual Basic .NET 2nd Edition
4.7Logical Operators
Logical Operators Connect Two or More Relational Expressions Into One, or Reverse the Logic of an
Expression
Starting Out with Visual Basic .NET 2nd Edition
Visual Basic .NET Logical Operators
Operator EffectAnd Both operands must be true for the overall
expression to be true, otherwise it is falseOr One or both operands must be true for the overall
expression to be true, otherwise it is falseXor One operand (but not both) must be true for the
overall expression to be true, otherwise it is falseNot Reverses the logical value of an expression
Starting Out with Visual Basic .NET 2nd Edition
The 'And' Operator
Truth Table for 'And' OperatorExpression 1 Expression 2 Expression 1 And Expression 2
True False FalseFalse True FalseFalse False FalseTrue True True
If temperature < 20 And minutes > 12 ThenlblMessage.Text = "The temperature is in the danger zone."
End If
Starting Out with Visual Basic .NET 2nd Edition
The 'Or' Operator
Truth Table for 'Or' OperatorExpression 1 Expression 2 Expression 1 Or Expression 2
True False TrueFalse True TrueFalse False FalseTrue True True
If temperature < 20 Or temperature > 100 ThenlblMessage.Text = "The temperature is in the danger zone."
End If
Starting Out with Visual Basic .NET 2nd Edition
The 'Xor' Operator
Truth Table for 'Xor' OperatorExpression 1 Expression 2 Expression 1 Xor Expression 2
True False TrueFalse True TrueFalse False FalseTrue True False
If total > 1000 Xor average > 120 ThenlblMessage.Text = “You may try again."
End If
Starting Out with Visual Basic .NET 2nd Edition
The 'Not' Operator
Truth Table for 'Not' OperatorExpression 1 Not Expression 1
True FalseFalse True
If Not temperature > 100 ThenlblMessage.Text = "You are below the maximum temperature."
End If
Starting Out with Visual Basic .NET 2nd Edition
Checking Numerical Ranges
• Checking for a value inside of a range:
• Checking for a value outside of a range:
If x >= 20 And x <= 40 ThenlblMessage.Text = "The value is in the acceptable range."
End If
If x < 20 Or x > 40 ThenlblMessage.Text = "The value is outside the acceptable range."
End If
Starting Out with Visual Basic .NET 2nd Edition
Short-circuit Evaluation
• AndAlso – equivalent to And, except that if left side is False, right side not even evaluated (whole expression would be false)
• OrElse – equivalent to Or, except that if left side is True, right side not even evaluated (whole expression would be true)
Starting Out with Visual Basic .NET 2nd Edition
Relative Precedenceof the Logical Operators
• From highest to lowest precedence• Not (unary + and -)• The binary arithmetic operators• The relational operators• And• Or• Xor
Starting Out with Visual Basic .NET 2nd Edition
Meaning of theRelative Precedence Ordering, I
• 'Not' and the other unary operators are done first if in the middle of an expression
• Then the normal mathematical operators are done
• Then the relational operators are done
• Then the logical operators are done in the order of 'And', 'Or', 'Xor'
Starting Out with Visual Basic .NET 2nd Edition
Meaning of theRelative Precedence Ordering, II
• For the most part, the operators will be done in the order that seems "logical" to the programmer
• It is likely, however, that one's program will need parentheses to force the needed ordering of the logical operators (when they appear in the same expression)
Starting Out with Visual Basic .NET 2nd Edition
4.8Comparing, Testing,
and Working With Strings
This Section Shows You How to Use Relational Operators to Compare Strings, and Discusses
Several Intrinsic Functions That Perform Tests and Manipulations on Strings
Starting Out with Visual Basic .NET 2nd Edition
Strings Can Be Compared in the Same Way That Numbers Are Compared
name1 = "Mary"name2 = "Mark"If name1 = name2 Then
lblMessage.Text = "The names are the same"Else
lblMessage.Text = "The names are NOT the same"End If
If month <> "October" Then' statement
End If
Starting Out with Visual Basic .NET 2nd Edition
How Are Strings Compared?• Each character is encoded as a numerical
value using the Unicode standard• The characters of each string are compared,
pair by pair (first with first, second with second, etc.) until a difference is found
• The ordering is then the numerical ordering of the differing characters
• Unicode encoding is structured to provide alphabetical ordering
Starting Out with Visual Basic .NET 2nd Edition
The Empty String
• The empty string is a string with no characters in it (not even space characters)
• The empty string is written as "", as in:
If txtInput.Text = "" ThenlblMessage.Text = "Please enter a value"
End If
Starting Out with Visual Basic .NET 2nd Edition
ToUpper Method
• The ToUpper method when applied to a string yields a string with the lowercase letters converted to uppercase
• The original string is not changed
littleWord = "Hello"bigWord = littleWord.ToUpper
' littleWord maintains the value "Hello"' bigWord is assigned the value "HELLO"
Starting Out with Visual Basic .NET 2nd Edition
ToLower Method
• The ToLower method works correspondingly -- converting any uppercase letters in a string to lowercase
Starting Out with Visual Basic .NET 2nd Edition
A Handy Use forToUpper or ToLower
• The character 'A' has a different Unicode value from the letter 'a'
• So if one's program needs to do case insensitive comparisons of strings, use one or the other of these methods to convert the strings to a common case
Starting Out with Visual Basic .NET 2nd Edition
IsNumeric Function
• This function when applied to a string returns True if the string can be recognized as a number; False, otherwise
• Use it to determine if a given string is numeric data
Starting Out with Visual Basic .NET 2nd Edition
Determining the Length of a String
• The Length Method determines the length of a string, e.g.:
If txtInput.Text.Length > 20 ThenlblMessage.Text = "Please enter fewer than 20 characters."
End If
Note: txtInput.Text.Length means to applythe Length Method to the value of the Text propertyof the Object txtInput
Starting Out with Visual Basic .NET 2nd Edition
Trimming Spaces from Strings
• There are three Methods that remove spaces from strings:• TrimStart• TrimEnd• Trim
greeting = " Hello "lblMessage1.Text = greeting.TrimStart
' Yeilds a value of "Hello "
Starting Out with Visual Basic .NET 2nd Edition
The Substring Method, I
• This Method returns a substring (a portion of another string)• Substring(Start) returns a string with all of the
characters from the original string starting at position Start
• Substring(Start, Length) returns the substring starting at Start of length Length
Starting Out with Visual Basic .NET 2nd Edition
The Substring Method, II
• For example:
Dim firstName As StringDim fullName As String = "George Washington"firstName = fullName.Substring(0, 6)
' firstName has the value "George"' fullName is unchanged
Starting Out with Visual Basic .NET 2nd Edition
Searching for a Character or a Stringwithin Another String, I
• Use one of these Methods:• IndexOf(Searchstring) searches the entire string• IndexOf(SearchString, Start) starts at the
character position Start and searches from there• IndexOf(SearchString, Start, Count) uses Start
as above and then searches Count characters into the SearchString
Starting Out with Visual Basic .NET 2nd Edition
Searching for a Character or a Stringwithin Another String, II
• IndexOf will return the starting position of the SearchString in the string being searched
• Positions are numbered from 0 (for the first)• If the SearchString is not found, a -1 is returned
Dim name As String = "Angelina Adams"Dim position As Integerposition = name.IndexOf("A", 1)
' position has the value 9
Position 0 Position 9
Starting Out with Visual Basic .NET 2nd Edition
4.9The Message Box
Sometimes You Need a Convenient Way to Display a Message to the User
This Section Introduces the Messagebox.Show Method, Which Allows You to Display a
Message in a Dialog Box
Starting Out with Visual Basic .NET 2nd Edition
Messagebox.Show Arguments
• Message - text to display within the box
• Caption - title for the top bar of the box
• Buttons - indicates which buttons to display
• Icon - indicates icon to display
• DefaultButton - indicates which button corresponds to the Return Key
• Arguments are optional bottom to top
Starting Out with Visual Basic .NET 2nd Edition
Buttons Argument
Value - DescriptionMessageBoxButtons.AbortRetryIgnore -
Displays Abort, Retry, and Ignore buttons.MessageBoxButtons.OK - Displays only an OK button.MessageBoxButtons.OKCancel - Displays OK and Cancel buttons.MessageBoxButtons.RetryCancel -
Display Retry and Cancel buttons.MessageBoxButtons.YesNo- -Displays Yes and No buttons.MessageBoxButtons.YesNoCancel -
Displays Yes, No, and Cancel buttons.
Starting Out with Visual Basic .NET 2nd Edition
Example Message Box
MessageBox.Show("Do you wish to continue?", _"Please Confirm", _
MessageBoxButtons.YesNo)
Starting Out with Visual Basic .NET 2nd Edition
Which Button Was Clicked, I
• MessageBox returns a value indicating which button the user clicked:• DialogResult.Abort• DialogResult.Cancel • DialogResult.Ignore• DialogResult.No• DialogResult.OK• DialogResult.Retry• DialogResult.Yes
Starting Out with Visual Basic .NET 2nd Edition
Which Button Was Clicked, II
Dim result As Integerresult = MessageBox.Show("Do you wish to continue?", _
"Please Confirm", MessageBoxButtons.YesNo)
If result = DialogResult.Yes Then' Perform an action here
ElseIf result = DialogResult.No Then' Perform another action here
End If
Starting Out with Visual Basic .NET 2nd Edition
4.10The Select Case Statement
In a Select Case Statement, One of Several Possible Actions Is Taken, Depending on the
Value of an Expression
Starting Out with Visual Basic .NET 2nd Edition
Select Case Statement Example, ISelect Case Val(txtInput.Text)
Case 1MessageBox.Show("Day 1 is Monday.")
Case 2MessageBox.Show("Day 2 is Tuesday.")
Case 3MessageBox.Show("Day 3 is Wednesday.")
Case 4MessageBox.Show("Day 4 is Thursday.")
Case 5MessageBox.Show("Day 5 is Friday.")
Case 6MessageBox.Show("Day 6 is Saturday.")
Case 7MessageBox.Show("Day 7 is Sunday.")
Case ElseMessageBox.Show("That value is invalid.")
End Select
Starting Out with Visual Basic .NET 2nd Edition
Select Case Statement Example, II
Select Case animalCase "Dogs", "Cats"
MessageBox.Show ("House Pets")Case "Cows", "Pigs", "Goats"
MessageBox.Show ("Farm Animals")Case "Lions", "Tigers", "Bears"
MessageBox.Show ("Oh My!")End Select
Starting Out with Visual Basic .NET 2nd Edition
4.11Input Validation
Input Validation Is the Process of Inspecting Input Values and Determining
Whether They Are Valid
Starting Out with Visual Basic .NET 2nd Edition
Validation Example
' Validate the input to ensure that' no negative numbers were entered.
If sales < 0 Or advance < 0 ThenMessageBox.Show("Please enter positive numbers for " & _" sales and/or advance pay.")
EndIf
Starting Out with Visual Basic .NET 2nd Edition
4.12Radio Buttons and
Check Boxes
Radio Buttons Appear in Groups of Two or More, and Allow the User to Select One of Several Possible Options
Check Boxes, Which May Appear Alone or in Groups, Allow the User to Make Yes/no or On/off Selections
Starting Out with Visual Basic .NET 2nd Edition
Checking Radio Buttons in Code
If radChoice1.Checked = True ThenMessageBox.Show("You selected Choice 1")
ElseIf radChoice2.Checked = True ThenMessageBox.Show("You selected Choice 2")
ElseIf radChoice3.Checked = True ThenMessageBox.Show("You selected Choice 3")
End If
Starting Out with Visual Basic .NET 2nd Edition
Grouping Radio Buttons
• Radio Buttons are mutually exclusive in their container
• Therefore radio buttons are often put inside Group Boxes
• Each Group Box contains a set of radio buttons (so an option may be chosen from each set)
Starting Out with Visual Basic .NET 2nd Edition
Checking Check Boxes in Code
If chkChoice4.Checked = True Thenmessage = message & " and Choice 4"
End If
Starting Out with Visual Basic .NET 2nd Edition
4.13Class-level Variables
Class-level Variables Are Not Local to Any Procedure
In a Form File They Are Declared Outside of Any Procedure, and May Be Accessed by Statements in
Any Procedure in the Same Form
Starting Out with Visual Basic .NET 2nd Edition
Advantages of Class-level Variables
• The scope of class-level variables include all of the procedures below the declaration in the file
• Hence, with the use of class-level variables, communication of information between procedures is very easy
Starting Out with Visual Basic .NET 2nd Edition
Issues with Class-level Variables
• Class-level variables should be used sparingly - only when really needed. Why?
• In larger programs, the uses of these variables will be more difficult to keep track of and hence tend to introduce bugs into the procedures
• Class-level variables never need be passed as arguments to a method of the same class