47
1 Lesson 7 — Debugging and Simple Classes Microsoft Visual Basic .NET, Introduction to Programming

Lesson 7 — Debugging and Simple Classes

  • Upload
    marc

  • View
    29

  • Download
    0

Embed Size (px)

DESCRIPTION

Lesson 7 — Debugging and Simple Classes. Microsoft Visual Basic .NET, Introduction to Programming. Objectives. Use breakpoints and Watch windows to locate program errors. Use the Immediate window to check and change values. - PowerPoint PPT Presentation

Citation preview

Page 1: Lesson 7 — Debugging and Simple Classes

1

Lesson 7 — Debugging and Simple Classes

Microsoft Visual Basic .NET, Introduction to Programming

Page 2: Lesson 7 — Debugging and Simple Classes

2

Objectives

Use breakpoints and Watch windows to locate program errors.

Use the Immediate window to check and change values.

Check a program's logic by stepping through the program one line at a time.

Use the Try-Catch-Finally statements to trap run‑time errors.

Write a simple class and use it in an application.

Page 3: Lesson 7 — Debugging and Simple Classes

3

Vocabulary

Break mode Breakpoint Bugs Err object Error log (log file) Error trapping InterCap naming

convention

Object Browser Option Explicit On Step Into Syntax errors Watch expression Watch window Widening conversion

Page 4: Lesson 7 — Debugging and Simple Classes

4

What's the Problem?

A program can fail in countless ways. The more complex the program, the more likely it is that hidden bugs are waiting to leap out and bite the unwary user. As a programmer, it is your job to keep the bugs at bay. If you carefully think out and test your applications, you can minimize errors. Despite careful planning, every programmer should anticipate that creative users will find ways to crash his or her programs.

Page 5: Lesson 7 — Debugging and Simple Classes

5

Building Communication Skills

It is no surprise that communication with the user is an important part of preventing bugs. Applications that prompt the user for input should present the user with sample data that illustrates what kind of input is acceptable. A prompt to the user to enter his or her last name requires minimal instructions. A prompt to enter a date or dollar amount is best presented with a pattern for the user to follow and error-trapping code to give further instructions to the user if he or she makes a mistake.

Error trapping means to reroute program flow during a run‑time error to code designed to handle the problem.

Page 6: Lesson 7 — Debugging and Simple Classes

6

InterCap Naming Convention

With the InterCap naming convention, you provide an initial capital letter for each part of the variable or control name. For example, a text box in which the user is to enter an unpaid balance might be named txtUnpaidBalance.

When you define a variable with the Dim (or Public) statement, you set a pattern of capitalization for the variable name that Visual Basic follows for the rest of the program. If you use the statement Dim FirstName As String, for example, to define the string variable FirstName, then every time you enter the name firstname, Visual Basic automatically capitalizes the "f" and the "n" so that the case of the characters of the name that’s entered matches the case of the characters of the name defined in the Dim statement.

Page 7: Lesson 7 — Debugging and Simple Classes

7

Option Explicit On and Option Strict

The Option Explicit On statement requires all variables to be declared before they are used. Option Explicit On is included in Option Strict.

Option Strict requires that all variables be declared before they are used and also prevents the value of a variable from being assigned to another variable if the assignment would result in data loss.

Page 8: Lesson 7 — Debugging and Simple Classes

8

Syntax Errors

Visual Basic checks each line of code for syntax errors as soon as you press the Enter key. Syntax errors, such as misspelling a command or omitting a statement, occur in the structure of the statement. For example, if you mistakenly enter Select End instead of End Select at the end of a Select Case statement, Visual Basic catches the error as soon as you press Enter or leave the line and prompts you for a correction.

Page 9: Lesson 7 — Debugging and Simple Classes

9

Breakpoints

A breakpoint is a spot in the code at which the program pauses while it is being executed. When program execution encounters a breakpoint and pauses, it is in break mode. With the program in break mode, you can examine and change values of variables. A program also enters break mode automatically when it encounters a run‑time error.

Once in break mode, you can single-step through the statements of the program code. Select Debug on the menu bar and then the Step Into command to single-step through the statements. In this mode, the statements are executed one at a time, allowing you to examine each statement.

Page 10: Lesson 7 — Debugging and Simple Classes

10

The Final Appearance of the How Many More Payments? Form

Page 11: Lesson 7 — Debugging and Simple Classes

11

Step-by-Step 7.1

Dim Balance, Payment As Decimal, Rate As DoubleDim Count As Integerbalance = txtbalance.Text.ToDecimalpayment = txtpayment.Text.ToDecimalrate = txtrate.Text.ToDoublecount = 0do count += 1 balance = balance + balance * CDec(rate) /12 – paymentloop until balance <= 0lblpayments.Text = count.ToString

Page 12: Lesson 7 — Debugging and Simple Classes

12

Step-by-Step 7.1

txtUnpaid.ResetText

txtPayment.ResetText()

txtRate.ResetText()

lblPayments.ResetText()

txtUnpaid.Focus()

Page 13: Lesson 7 — Debugging and Simple Classes

13

New Breakpoint Dialog Box

Page 14: Lesson 7 — Debugging and Simple Classes

14

Debug Error Message

Page 15: Lesson 7 — Debugging and Simple Classes

15

Watch Expression

A watch expression is often just a single variable, but the watch expression can be any expression. For instance, you may want to watch the value of an algebraic expression like 180*Angle/Pi, where Angle is the radian measure of an angle and the watch expression represents the degree measure of the angle.

The value of a watch expression is displayed in the Watch window only when the program enters break mode.

Single-stepping through the program while in break mode shows the values of the variables in the Watch window changing as each line is executed. Select the Step Into command on the Debug menu, or use the keyboard shortcut, F11, to start the process.

Page 16: Lesson 7 — Debugging and Simple Classes

16

The QuickWatch Window

Page 17: Lesson 7 — Debugging and Simple Classes

17

Note

Is the Watch window visible? If not, select Debug | Windows I Watch from the menu bar. If it is too small to read, use the mouse to enlarge it. It shows the status of each watch expression.

Page 18: Lesson 7 — Debugging and Simple Classes

18

Breakpoint Condition Dialog Box

Page 19: Lesson 7 — Debugging and Simple Classes

19

The New Breakpoint Window Showing the Condition Breakpoint

Page 20: Lesson 7 — Debugging and Simple Classes

20

Programming Skills

The Step Into option steps into any procedure or function called in the code and executes it line by line. If you are certain there is no error in a particular procedure or function, execute the code by entering the keyboard shortcut Shift+F11, or select Debug I Step Over from the menu bar. With this command, the program will not show a line‑by‑line execution of a procedure or function called in the code. It executes the procedure or function without pause and returns to executing the lines of the calling procedure one at a time. The Step Out command (it’s keyboard shortcut is Ctrl+Shift+F11) finishes the execution of the current procedure or function and shifts program flow to the statement that follows the procedure. Use this option if you are sure the remaining code of a procedure or function is error‑free.

Page 21: Lesson 7 — Debugging and Simple Classes

21

Programming Skills

Part of the debugging process is to build a set of input data that tests all aspects of the program. Include test data that tests the boundary conditions of the program (if any exist), the largest or smallest possible values, negative values, etc.

Page 22: Lesson 7 — Debugging and Simple Classes

22

Try-Catch-Finally Statement

The syntax of the simplest version of the statement looks like this:

Tryone or more statements

Catch [When condition]one or more statements

Finallyone or more statements

End Try

Page 23: Lesson 7 — Debugging and Simple Classes

23

Step-by-Step 7.3

Dim PathName As String = "c:\Notes\note.txt"

Dim f As File = New File(PathName)

Dim fs As StreamWriter

Dim strContent As String = txtContent.Text

fs = f.CreateText

fs.WriteLine(strContent)

fs.Close()

Page 24: Lesson 7 — Debugging and Simple Classes

24

Step-by-Step 7.3

Dim PathName As String = "c:\Notes\note.txt"Dim f As File = New File(PathName)Dim fs As StreamWriterDim strContent As String = txtNotes.TextTry fs = f.CreateText fs.WriteLine(strContent) fs.Close() MessageBox.Show("File successfully created.")Catch MessageBox.Show("Unable to open the file.")End Try

Page 25: Lesson 7 — Debugging and Simple Classes

25

Historically Speaking

In the first versions of BASIC, every line was numbered and every program was a maze of “Go To's” followed by statement numbers. It was possible to write code that was indecipherable even to the programmer. Also, the debugging capabilities of the language were far less sophisticated than they are today. The Tron command turned on Trace mode. In Trace mode, the line number of each line was listed as it was executed. The result was an unmanageable list of line numbers, which no one ever looked at.

Page 26: Lesson 7 — Debugging and Simple Classes

26

Adding the When Option

Try z = x / yCatch When x = 3 MessageBox.Show("raw value of three:" &

x.tostring)Catch When x = 4 MessageBox.Show("raw value of four:" & x.tostringCatch MessageBox.Show("anything else:" & x.tostring)End Try

Page 27: Lesson 7 — Debugging and Simple Classes

27

Step-by-Step 7.4

Dim x, y As Integer, z As Decimalx = 3 : z = CDec(x / y)z = x \ y x = CInt(InputBox("Enter a number:"))Try z = CDec(x / y)Catch When x = 3 MessageBox.Show("raw value of three:" & x.ToString)Catch When x = 4 MessageBox.Show("raw value of four:" & x. ToString)Catch MessageBox.Show("anything else:" & x. ToString)End Try

Page 28: Lesson 7 — Debugging and Simple Classes

28

A System-Generated Error Message

Page 29: Lesson 7 — Debugging and Simple Classes

29

Log Files

Often an error handler saves error data in a file called an error log or log file. The error log is a text file that lists errors and the time when they occur. It is often just a simple text file, not a complex database.

Page 30: Lesson 7 — Debugging and Simple Classes

30

Step-by-Step 7.5

' Move Try to the top Try ' Change "My Directory" to "notes" Dim PathName As String = "c:\notes\note.txt" Dim f As File = New File(PathName) Dim fs As StreamWriter Dim strContent As String 'Remove "= txtNotes.Text" fs = f.CreateText fs.WriteLine(strContent) fs.Close() MessageBox.Show("File successfully created.")

Page 31: Lesson 7 — Debugging and Simple Classes

31

Step-by-Step 7.5

Catch MessageBox.Show("Unable to open the file.") ' New addition to create and add to ErrorLog.txt Dim CurrentDate As Date Dim ErrorPath As String = "c:\My Documents\ErrorLog.txt" Dim f2 As File = New File(ErrorPath) Dim fs2 As StreamWriter fs2 = f2.AppendText fs2.WriteLine("Could not open the file:") fs2.WriteLine(Err.Description & " " & Err.Number) fs2.WriteLine(CurrentDate.Now.ToString) fs2.Close()End Try

Page 32: Lesson 7 — Debugging and Simple Classes

32

Computer Ethics

You wouldn't record a phone call without the caller's permission. It is unethical to create a log file of a user's personal data to be retrieved by the programmer at a later date. Since such a file could be created without the knowledge of the user, you must adhere to a strict self‑discipline of treating others as you would like to be treated.

Page 33: Lesson 7 — Debugging and Simple Classes

33

Classes and Objects

A class is a definition from which an object is created. You have been working with classes every time you write a program. Each program you write is a class definition of the application the user runs.

Use the keyword New in a declaration statement to create a new object.

For instance, the statement Dim f As File creates a variable f that can represent an object of the file type, but no new object is created. The statement Dim f As File = New File(PathName) declares a variable of the File data type and then initializes that variable to a new File object. An equivalent statement is Dim f As New File(PathName). The word New creates a new object of the given data type.

Page 34: Lesson 7 — Debugging and Simple Classes

34

Step-by-Step 7.6

Dim frmNewForm As New Form()

frmNewForm.Text = "New Form"

frmNewForm.show()

Dim frmNewForm As New Form1()

Page 35: Lesson 7 — Debugging and Simple Classes

35

The Add New Item Dialog Box

Page 36: Lesson 7 — Debugging and Simple Classes

36

Step-by-Step 7.7 clsCreditCard.vb

Public Description As String

Public CreditLimit As Decimal

Public CurrentBalance As Decimal

Public InterestRate As Double

Page 37: Lesson 7 — Debugging and Simple Classes

37

Final Appearance of the AddingAClass Form

Page 38: Lesson 7 — Debugging and Simple Classes

38

Step-by-Step 7.7

txtDescription.ResetText()

txtCreditLimit.ResetText()

txtCurrentBalance.ResetText()

txtInterestRate.ResetText()

txtDescription.Focus()

Dim CreditCard(10) As clsCreditCard

Dim Index As Integer = 0

Page 39: Lesson 7 — Debugging and Simple Classes

39

Step-by-Step 7.7

Dim Card As New clsCreditCard() ' creates a new card

With Card .Description = txtDescription.Text .CreditLimit = txtCreditLimit.Text.ToDecimal .CurrentBalance =

txtCurrentBalance.Text.ToDecimal .InterestRate = txtInterestRate.Text.ToDoubleEnd With

Page 40: Lesson 7 — Debugging and Simple Classes

40

Step-by-Step 7.7

Try

CreditCard(Index) = Card ' put the card in the array

Index += 1 ' increment the Pointer

Catch

MessageBox.Show("The Array is full!")

End Try

btnClear_Click(sender, e) ' call the Clear routine

Page 41: Lesson 7 — Debugging and Simple Classes

41

Step-by-Step 7.7

lstDisplay.Items.Clear()Dim Ind As Integer = 0For Ind = 0 To Index - 1 With CreditCard(Ind) lstDisplay.Items.Add(.Description & " "

& .CurrentBalance.ToString) End WithNext

Page 42: Lesson 7 — Debugging and Simple Classes

42

Adding a Method

Adding a method to a class is as easy as creating a new event procedure.

Page 43: Lesson 7 — Debugging and Simple Classes

43

Step-by-Step 7.8

Function MonthlyInterest() As Decimal MonthlyInterest = CDec(CurrentBalance *

InterestRate / 1200)End Function

Dim ItemNumber As Integer = lstDisplay.SelectedIndex

MessageBox.Show(CreditCard(ItemNumber).MonthlyInterest.ToString)

Page 44: Lesson 7 — Debugging and Simple Classes

44

Summary

Program bugs are errors and flaws in programming code. Debugging is the process of finding and eliminating bugs.

Using the InterCap naming convention facilitates using the object or variable name in the debugging process. First define a variable in a declaration statement with capital letters at the beginning of each word. Then enter the variable names with all lowercase letters when writing code. If the proper letters are not converted to uppercase when the cursor leaves the line, the names have not been recognized by Visual Basic.

The Option Explicit On statement requires all variables to be declared before they are used. Option Explicit On is included in Option Strict. Option Strict requires that all variables be declared before they are used and also prevents the value of a variable from being assigned to another variable if the assignment would result in data loss.

Page 45: Lesson 7 — Debugging and Simple Classes

45

Summary

Syntax errors, errors in statement structure, are identified by Visual Basic when the cursor leaves the line of a flawed statement. A jagged underline highlights the part of the statement in error, and the ToolTip contains a description of the error.

A breakpoint stops program execution while the program is running. While the program is stopped, it is in break mode. When in break mode, the values of variables can be examined and changed in the Immediate window.

A watch expression lets you examine particular values automatically in the Watch window when the program enters break mode. A conditional watch expression can put the program in break mode when a particular condition is satisfied or when a variable changes value.

Page 46: Lesson 7 — Debugging and Simple Classes

46

Summary

The On Error Resume Next statement skips any line of code that causes a run-time error. On rare occasions, simply ignoring a line is a sufficient fix for a problem.

The Try-Catch-Finally statement is a versatile way to trap program errors and execute code that tries to repair the error or reports the error to the user.

The conditional Catch part of the Try statement lets the programmer differentiate between different conditions that may cause a run-time error. This lets the program tailor its response to the particular error.

Err and Error are system variables that contain the error number and description of the most recent error. The Err object also contains the error number and description, as well as the source of the error and additional information.

Page 47: Lesson 7 — Debugging and Simple Classes

47

Summary

An error log is a simple text file in which information about program errors is saved. The error number, description, and source, as well as the time the error occurred, are the kinds of information to save in the log file.

Classes are definitions from which objects are built. Visual Basic has a number of built-in classes to create things like text boxes and buttons. The New keyword is necessary to create a new object.

Variables declared in a class definition are the properties of the objects created with the class.

Functions and procedures defined in a class definition are the methods associated with the object created with the class.