No Slide Title

Download Report

Transcript No Slide Title

Chapter 4 P 1
Decisions and Conditions
Control statements
- seqeuncing
- selection
- repetition (picture later)
- abstraction
(procedure calls)
Chapter 4 P 2
If-statements
- a decision is made by the program
- a given condition is either True or False
Example
If the street is blocked then
take a detour
Endif
Example
If English T122 is not full then
sign up for English T122
Else
check History T122
End If
Chapter 4 P 3
The flowchart for these examples
True
True
branch
take a
detour
street is
blocked
False
False
branch
(This is called a
null branch)
Chapter 4 P 4
True
True
branch
sign up for
Eng T122
Eng T122
is not full
False
False branch
check on
Hist T122
Chapter 4 P 5
Syntax for flowcharts
an individual instruction
decision box
if..then.. - general form
If condition Then
statement
End If
The statement can be any Visual Basic statement, including another
If statement.
Chapter 4 P 6
Example If a student’s GPA is 3.5 or more, write that they are on
the Dean’s List.
True
False
GPA >= 3.5
Write “Dean’s List”
If sGpa >= 3.5 Then
lbl.HonorMessage.Caption = “Dean’s List”
End If
Chapter 4 P 7
if..then..else
If condition Then
statement 1
Else
statement 2
End If
Example A student takes a course on a Pass/Fail basis; a report
prints “P” for pass and “F” for fail.
True
Write
“Pass”
Grade = “P”
False
Write
“Fail”
If sGrade = “P” Then
lblMessage.Caption =“Pass”
Else
lblMessage.Caption = “Fail”
End If
Note: indentations are required for readability
Chapter 4 P 8
Definition A boolean expression is a statement which has the value
True or False.
Example
sGPA >= 3.5
sGrade = “P”
Another way to write the statement
If sGpa >= 3.5 Then
lbl.HonorMessage.Caption = “Dean’s List”
End If
is
Dim bFlag As Boolean
bFlag = (sGpa >= 3.5)
If bFlag Then
lbl.HonorMessage.Caption = “Dean’s List”
End If
Chapter 4 P 9
or
If bFlag = True Then
lbl.HonorMessage.Caption = “Dean’s List”
End If
The statement
bFlag = (sGpa >= 3.5)
places the value, either True or False, of the boolean expression
sGpa >= 3.5 into the boolean variable bFlag.
The advantage is that a boolean expression can be long and
complicated. Using a flag will simplify the code.
Chapter 4 P 10
Terminology A boolean expression or condition is also known as
a predicate.
Definition The valus of all predicates and variables in a program
is called the state of the program.
Note The state of the progrm is a description of what the program
has done at any given moment.
Flowcharting if-statements
General If..Then
True
False
General If..Then..Else
True
False
Chapter 4 P 11
Note: Advantage of flowcharts
- detail
Disadvantage of flowcharts - detail
Flowcharts are good for descrbing small pieces of code, not entire
programs.
Conditions
Relational operators
=
<
>
<=
(less than or equal)
>=
(greater than or equal)
<>
(not equal)
Example Let iSal_1 = 10000, iSal_2 = 20000, iSal_3 = 30000.
(a)
iSal_1 = iSal_2
is False
(b)
iSal_2 < iSal_3
is True
Chapter 4 P 12
Using if statements with option buttons and check boxes
- use if-statements for option buttons and check buttons
- put the code into the appropriate command button
Example P. 108
Example P. 120 Private subCalculate_Click())
Nested if-statements
Example P. 108, 109
If iTemp > 32 Then
If iTemp > 80 Then
lblComment.Caption = “Hot”
Else
lblComment.Caption = “Moderate”
End If
Else
lblComment.Caption = “Freezing”
End If
Chapter 4 P 13
Use Elseif for several If-statements
Example P. 109
If iTemp <= 32 Then
lblComment.Caption = “Freezing”
Elseif iTemp > 80 Then
lblComment.Caption = “Hot”
Else
lblComment.Caption = “Moderate”
End If
Note Avoid too much nesting. This is cahracterized by “wide”
flowcharts.
Chapter 4 P 14
Example Find the largest of three numbers, A, B, C.
First flowchart
True
True
Write C
B<C
A<B
False True
Write B
False
A<C
Write C
If iA < iB Then
If iB < iC Then
write iC
Else
False
write iB
End If
Write A Else
If iA < iC Then
write iC
Else
write iA
End If
End If
Chapter 4 P 15
Second flowchart
The idea is to declare an extra variable iMax, which can simplify the
flowchart considerably
iMax = A
Max = A
True
Max < B
False
If iMax< B Then
iMax = B
End If
Max = B
True
Max<C
Max = C
In general, avoid wide flowcharts.
If iMax < C Then
iMax = C
End If
write iMax
Chapter 4 P 16
Comparing strings
ASCII code P. 104 - 105
- all symbols, including numbers, are represented as
symbols
- strings are compared left to right (alphabetical order)
Example
“Bill” < “Hillary”
“2” < “A”
“A” < “a”
Comparing the text property of text boxes P. 107
- values entered in text boxes are compared as strings
- their data type is variant
Example Suppose cSalFirst is 20000 and cSalSecond is 1000000.
Then cSalFirst > cSalSecond
is True
val(cSalFirst) > val(cSalSecond)
is False
Chapter 4 P 17
Comparing uppercase and lowercase characters
Example Let sName_1 be “Smith” and sName_2 be “jones”. Then
(sName_1 > sName_2) is False because the ASCII valus of “S” is
less than the ASCII value of “j”.
Use ucase or lcase to change the words all to compare the
uppercase or lowercase value of the words.
Example ucase(sName_1) > ucase(sName_2) is True.
Compound conditions
The logical operators, in hierarchical order, are not, and, and or.
Example
(4 >= 5) and (8 = (3 + 5))
(4 >= 5) or (8 = (3 + 5))
not (- 4 > 0)
Chapter 4 P 18
Hierarchical order of all operators
(
)
NOT
*
/
AND
+
OR
relational operators
Example Suppose iNum holds the value 1.
0 < iNum and iNum < 2 gives a syntax error!
The operator of highest precedence is AND. The compiler
evaluates iNum AND iNum. But iNum is of type integer, so this
expression is not well-defined. It should be written
(0 < iNum) and (iNum < 2)
which is true.
See handout
Chapter 4 P 19
Control arrays (Fig. 4.7 - 4.9)
- list of controls with the same Name
- elements of the list are distinguished by some number
- syntax
- give the first control a name
- give the second control the same name
- a message box will ask if you want a
control array
- select Yes
- the Caption may be different
- in code, refer to the elements of the control array by name
and number
Example P. 113
Chapter 4 P 20
Example Message formatter
The option buttons have Caption Red, Green, Blue, and Black.
Suppose their names are all optColor. The code would be
If optColor(0).Value = Checked Then
lblMessage.Forecolor = vbRed
Elseif optColor(1).Value = Checked Then
lblMessage.Forecolor = vbGreen
Elseif optColor(2).Value = Checked Then
lblMessage.Forecolor = vbBlue
Else lblMessage.Forecolor = vbBlack
End If
Finding the highest or lowest value previous
Chapter 4 P 21
Input validation (for numeric data)
Checking for correct data type
Example P. 115
If isNumeric (txtQuantity.Text) Then
lblDue.Caption = cPrice * val (txtQuantity)
End If
Checking for the range of values
- the programmer checks that the date entered is reasonable
Example Check that the number of hours per week do not exceed
168.
If iHours > 168 Then
some action
Else cPay = iHours * cWage
End If
Chapter 4 P 22
Message boxes
Definition A message box is a box within which the program
displays a message to the user. (Fig. 4.10)
The general form is
MsgBox “string” [,buttons/icon][,“caption on title bar”]
(Everything between the square brackets is optional.)
The possible buttons/icons are
vbOkOnly
vbCritical
vbQuestion
vbExclamation
vbInformation
Example
If iHours > 168 Then
MsgBox “Please enter a numeric value”, vbOkOnly, “Error”
Else cPay = iHours * cWage
End If
Chapter 4 P 23
Note: The exceptional case (the case that generates the error
message) should come first, if possible.
Example
If not IsNumeric (txtQuantity.Text) Then
MsgBox “Please enter a numeric value”, vbOkOnly, “Error”
Else
lblDue.Caption = cPrice * Val(txtQuantity.Text)
End If
This is better than writing what the book writes, which is
If IsNumeric (txtQuantity.Text) Then
lblDue.Caption = cPrice * Val(txtQuantity.Text)
Else
MsgBox “Please enter a numeric value”, vbOkOnly, “Error”
End If
Chapter 4 P 24
The message string
To include long, formatted messages, do something like
formatted string = Format(formatted string, etc.)
string = formatted string & “xxxxxxxxxx”
MsgBox formatted string, vbOkOnly, name of box
Example
Dim stFormattedString as String
Dim stMessageString as String
stFormattedString = Format$(iHighValue, “Standard”)
stMessageString = “Your value is higher than” & stFormattedString
MsgBox = stMessageString, vbCritical, “Value out of bounds”
Chapter 4 P 25
To have a message extending over several lines, use
- line feed
- insert a new line
- the code is Chr (10)
- carriage return
- place the cursor at the beginning of this new line
- the code is Chr (13)
Note: Chr is a method which takes an integer and returns the
corresponding ASCII character (if any).
Example
Dim stNewline as String
stNewLine = Chr(10) & Chr (13)
Place stNewLine into a string when you want a new line in the
message box.
Chapter 4 P 26
Note: Chr is a method which takes an integer and returns the
corresponding ASCII character, if any
Example lblMessage.Caption = Chr (90) displays
Z
Note that Chr (500) is undefined, and causes an error.
Debugging tools
The Debug toolbar
- select View
- select Toolbar
- select Debug
Definition A break is a pause in the execution of the program.
Forcing a break
Method 1
- write Stop in the code
Chapter 4 P 27
Method 2
- set a break using the debugger
- set the cursor where you want the break to occur
- select Toggle Breakpoint
- remove the break SAME STEPS
- remove all breaks
- select Debug
- select Remove all breaks
The Immediate Window
- select View and then select Immediate WIndow
- allows the user to execute a single intruction
- done during Break time
- enter code (either type or copy it)
- hit Return
Chapter 4 P 28
Watch
- examine a variable or expression during program
execution
-two methods for watches
Method 1
The Watch Pane (Fig. 4.15)
- this is set during design time
- allows the user to examine values and predicates
- select View and Watch Window
- type in a variable or expression and select options
-look at the window in Break time
Method 2
The Instant Watch
- under Code select View
- highlight the variable or expression you wish to examine
- under Debug select Instant Watch
- Break the code (as before)
Chapter 4 P 29
Stepping through code
- execute one or more lines of code individually
- Step into
- Break the code
- under Debug select Step Into