Chapter 8 - Bobgill.com

advertisement
Clearly Visual Basic: Programming
with Visual Basic 2008
Chapter 8
What’s Wrong with It?
Objectives
•
•
•
•
Locate syntax errors using the Error List window
Locate a logic error by stepping through the code
Locate logic errors using breakpoints
Fix syntax and logic errors
Clearly Visual Basic: Programming with Visual Basic 2008
2
There’s a Bug in my Soup!
• Downside to variables and named constants
– Their use requires additional lines of code
• Bug
– Error in a program’s code
• Debugging
– Process of locating and correcting any bugs in a
program
• Program bugs
– Typically caused by either syntax errors or logic
errors
Clearly Visual Basic: Programming with Visual Basic 2008
3
Finding Syntax Errors
• Syntax error
– Occurs when you break one of the language’s rules
• Code Editor
– Detects most syntax errors as you enter instructions
Clearly Visual Basic: Programming with Visual Basic 2008
4
Locating Logic Errors
• Logic error
– Can occur for a variety of reasons
– Difficult type of error to locate
– Cannot be detected by Code Editor
Clearly Visual Basic: Programming with Visual Basic 2008
5
Locating Logic Errors (continued)
• Debug the Discount application
– Letter D at end of a value indicates value’s data type
is Decimal
Clearly Visual Basic: Programming with Visual Basic 2008
6
Clearly Visual Basic: Programming with Visual Basic 2008
7
Clearly Visual Basic: Programming with Visual Basic 2008
8
Locating Logic Errors (continued)
• Use a breakpoint to pause execution at a specific
line in the code
• Debug the Hours Worked application
– .0 at end of a number indicates that number’s data
type is Double
Clearly Visual Basic: Programming with Visual Basic 2008
9
Clearly Visual Basic: Programming with Visual Basic 2008
10
Hawkins Solution
Public Class frmMain
Dim decBegin As Decimal
Dim decEarned As Decimal
Dim decSpent As Decimal
Dim decEnding As Decimal
Private Sub btnCalc_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btnCalc.Click
' calculates the ending balance based on the beginning
' balance, amount earned, and amount spent
' assign input to variables
Decimal.TryParse(txtBegin.Text, decBegin)
Decimal.TryParse(txtSpent.Text, decSpent)
' calculate and display ending balance
decEnding = decBegin + decEarned - decSpent
lblEnding = decEnding.ToString("C2")
End Sub
End Class
' calculates and displays your weight on planets and the moon
' Jupiter is 2.54 times earth weight, Venus is .91, Mars is .38, moon is .17
Public Class frmMain
Dim dblEarth As Double
Dim dblJupiter As Double: Dim dblVenus As Double
Dim dblMars As Double: Dim dblMoon As Double
Private Sub btnCalc_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btnCalc.Click
' calculates and displays your weight on planets and the moon
' Jupiter is 2.54 times earth weight, Venus is .91, Mars is .38, moon is .17
' calculate weights
dblJupiter = dblEarth * 2.54 : dblVenus = dblEarth * 0.91
dblMars = dblEarth * 0.38 : dblMoon = dblEarth * 0.17
' display weights
lblJupiter.Text = dblJupiter.ToString("N2")
lblVenus.Text = dblVenus.ToString("N2")
lblMars.Text = dblMars.ToString("N2")
lblMoon.Text = dblMars.ToString("N2")
End Class
Martins Solution
Answer should be $53.35
Private Sub btnGainLoss_Click(ByVal sender As Object, ByVal e As
System.EventArgs) Handles btnGainLoss.Click
' calculates and displays the gain or loss on a stock
Dim intShares As Integer
Dim decOpenPrice As Decimal
Dim decClosePrice As Decimal
Dim decGainLoss As Decimal
' assign input to variables
Integer.TryParse(txtShares.Text, intShares)
Decimal.TryParse(txtOpening.Text, decClosePrice)
Decimal.TryParse(txtClosing.Text, decClosePrice)
' calculate and display gain or loss
decGainLoss = decClosePrice - decOpenPrice * intShares
lblGainLoss.Text = decGainLoss.ToString("C2")
End Sub
16
Summary
• Program errors (bugs)
– Caused by either syntax errors or logic errors
• Syntax errors in an application’s code
– Listed in Error List window when you start the
application
• You can locate logic errors by stepping through the
code
• Letter D at the end of a value
– Indicates value’s data type is Decimal
Clearly Visual Basic: Programming with Visual Basic 2008
17
Summary (continued)
• .0 at the end of a number
– Indicates that the number’s data type is Double
• Before viewing value stored in a control or variable
– First consider the value you expect to find
Clearly Visual Basic: Programming with Visual Basic 2008
18
Download