Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and...

74
Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations

Transcript of Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and...

Page 1: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded

Second Edition

Chapter 3Variables, Constants, Methods, and

Calculations

Page 2: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 2

Objectives

After studying this chapter, you should be able to:

• Declare variables and named constants

• Assign data to an existing variable

• Convert data to the appropriate type using the TryParse method and the Convert class methods

• Write arithmetic expressions

• Understand the scope and lifetime of variables and named constants

Page 3: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 3

Objectives (continued)

• Understand the purpose of the Option Explicit, Option Strict, and Imports statements

• Use a TOE chart, pseudocode, and a flowchart to code an application

• Clear the contents of a control’s Text property while an application is running

Page 4: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 4

Objectives (continued)

• Send the focus to a control while the application is running

• Explain the difference between syntax errors and logic errors

• Format an application’s numeric output

Page 5: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 5

Variables

• Variables: computer memory locations used to store data while an application is running

• Every variable has a:– Name– Data type– Scope– Lifetime

Page 6: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 6

Selecting a Data Type for a Variable

• Each variable must be assigned a data type

• Data type: the type of data the variable can store

• Each data type is a class• Unicode:

– Universal coding scheme for characters– Assigns a unique numeric value to each character

Page 7: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 7

Selecting a Data Type for a Variable (continued)

Page 8: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 8

Selecting a Name for a Variable

• Identifier: descriptive name given to a variable• Use a meaningful name that reflects the purpose of

the variable• Use camel casing for variable identifiers• Variable names must conform to naming rules

Page 9: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 9

Selecting a Name for a Variable (continued)

Page 10: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 10

Declaring a Variable

• Declaration statement: used to declare, or create, a variable

• Declaration statement includes– Scope keyword: Dim or Private or Static– Name of the variable– Data type– Initial value (optional)

Page 11: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 11

Declaring a Variable (continued)

Page 12: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 12

Assigning Data to an Existing Variable

• Assignment statement:– Used to assign values to properties of controls– Used to assign values to variables

• Assignment operator: (=)– Value on the right of the = operator is assigned to

the variable on the left of the = operator

Page 13: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 13

Assigning Data to an Existing Variable (continued)

Page 14: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 14

Assigning Data to an Existing Variable (continued)

• String: group of characters enclosed in quotation marks

• Literal constant: – An item of data whose value does not change while the

application is running– Can be a numeric or a string literal constant

• A numeric literal with a decimal place is treated as a Double type

• Literal type character: forces a literal constant to assume a specific data type

Page 15: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 15

Assigning Data to an Existing Variable (continued)

Page 16: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 16

Using the TryParse Method

• Method: a specific portion of a class’s instructions that performs a task for the class

• TryParse method: – Part of every numeric data type’s class– Used to convert a string to that numeric data type

• TryParse method has 4 arguments– String: string value to be converted– Variable: location to store the result – IFormatProvider (optional): specifies formatting– NumberStyles (optional): allows formatting

characters to be in the data to be converted

Page 17: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 17

Using the TryParse Method (continued)

• IFormatProvider argument formats numbers, dates, and times

• NumberFormatInfo.CurrentInfo value:– Uses the formatting characters specified in the

Windows Customize Regional Options dialog box

Page 18: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 18

Using the TryParse Method (continued)

Page 19: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 19

Using the TryParse Method (continued)

Page 20: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 20

Using the TryParse Method (continued)

• Assign the TryParse method’s return value to a Boolean variable– If True, the conversion was successful– If False, the value could not be converted

• Line continuation character: the underscore (_)– Breaks up a long instruction into two or more lines– Must appear at end of line, preceded by a space

• Must have an Imports statement in the General Declarations section of code to use NumberStyles and NumberformatInfo.CurrentInfo:– Imports System.Globalization

Page 21: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 21

Using the TryParse Method (continued)

Page 22: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 22

Using the Convert Class

• Convert class:– Contains methods for converting numeric values to

specific data types

• Use the dot member access operator to separate the class name from the method name

Page 23: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 23

Using the Convert Class (continued)

Page 24: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 24

Writing Arithmetic Expressions• Precedence number: indicates the order in which

an operation in an expression is performed

• If an expression has two operators with the same precedence, they are evaluated from left to right

• Use parentheses to change the order of evaluation

• Integer division operator (\): divides two integers and returns an integer value

• Modulus arithmetic operator (Mod): divides two numbers and returns the remainder

Page 25: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 25

Writing Arithmetic Expressions (continued)

Page 26: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 26

Writing Arithmetic Expressions (continued)

Page 27: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 27

The Scope and Lifetime of a Variable

• Scope: indicates where the variable can be used

• Lifetime: indicates how long the variable remains in memory

• Variables are usually declared in two places:– Within a procedure– In the form’s Declarations section

• Procedure-level variable: declared within a procedure

• Procedure scope: only the procedure can use the variable

Page 28: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 28

The Scope and Lifetime of a Variable (continued)

Page 29: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 29

The Scope and Lifetime of a Variable (continued)

• With procedure-level scope, two procedures can each use the same variable names

• Comments: – Used to internally document the procedure– Are ignored by the compiler– Appear in green in the code editor

Page 30: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 30

The Scope and Lifetime of a Variable (continued)

Page 31: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 31

The Scope and Lifetime of a Variable (continued)

•Module scope: variable can be used by all procedures in the form•Module-level variable:

–Declared in the form’s Declarations section–Use Private keyword in declaration

•Module-level variables retain their values until the application ends

Page 32: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 32

The Scope and Lifetime of a Variable (continued)

Page 33: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 33

The Scope and Lifetime of a Variable (continued)

• Block scope: variable can be used within a specific block of code

• Block-level variable: declared within a specific block of code

Page 34: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 34

Static Variables

• Static variable: – Procedure-level variable that retains its value even after

the procedure ends– Retains its value until the application ends– Can be used instead of a module-level variable

• A static variable has:– Same lifetime as a module-level variable– Narrower scope than a module-level variable

• Declared using the Static keyword

Page 35: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 35

Static Variables (continued)

Page 36: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 36

Named Constants

• Named constant: memory location whose value cannot be changed while the application is running

• Declared using the Const keyword

• Good programming practice to specify the data type as well

Page 37: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 37

Named Constants (continued)

Page 38: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 38

Named Constants (continued)

Page 39: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 39

Named Constants (continued)

Page 40: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 40

Option Explicit and Option Strict

• Option Explicit: – When on, all variables used must first be declared– Protects against misspelled variable names in code– Placed in the General Declarations section of code

editor

• Implicit type conversion: can occur if the value on the right side of an assignment statement is not the same data type as the variable on the left side

Page 41: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 41

Option Explicit and Option Strict (continued)

• Promoting: when a value is converted to another data type that stores larger numbers

• Demoting: when a value is converted to another data type that stores only smaller numbers– Data loss can occur with demoting

• Option Strict:– Can be used to enforce correct data typing– Placed in the General Declarations section of the code

editor

Page 42: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 42

Option Explicit and Option Strict (continued)

• Option Strict On follows these conversion rules:– Strings are not implicitly converted to numbers or

vice versa– Narrower data types are implicitly promoted to wider

data types– Wider data types are not implicitly demoted to

narrower data types

Page 43: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 43

Option Explicit and Option Strict (continued)

Page 44: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 44

Coding the Skate-Away Sales Application

Page 45: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 45

Coding the Skate-Away Sales Application (continued)

Page 46: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 46

Using Pseudocode to Plan a Procedure

• Pseudocode: short phrases to describe the steps a procedure needs to take to accomplish its goal

Page 47: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 47

Using Pseudocode to Plan a Procedure (continued)

Page 48: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 48

Using a Flowchart to Plan a Procedure

• Flowchart: uses standardized symbols to show the steps a procedure must take to accomplish its goal

• Can be used in place of pseudocode for planning

• Three symbols:– Start/stop symbol (oval): indicates start and stop

points– Process symbol (rectangle): represents tasks– Input/output symbol (parallelogram): represents input

or output tasks

Page 49: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 49

Using a Flowchart to Plan a Procedure (continued)

Page 50: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 50

Using a Flowchart to Plan a Procedure (continued)

Page 51: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 51

Coding the clearButton’s Click Event Procedure

Page 52: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 52

Clearing the Contents of a Control’s Text Property

Page 53: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 53

Clearing the Contents of a Control’s Text Property (continued)

• Zero-length string (or empty string): – Removes the contents in the Text property of a

control– Use empty set of quotation marks: “”

• String.Empty: used to assign an empty string to a control’s Text property

• For TextBox control, use the Clear method

Page 54: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 54

Setting the Focus

• Focus method: moves the focus to a specified control at runtime

Page 55: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 55

Setting the Focus (continued)

Page 56: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 56

Setting the Focus (continued)

Page 57: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 57

Coding the calcButton’s Click Event Procedure

Page 58: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 58

Coding the calcButton’s Click Event Procedure (continued)

Page 59: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 59

Coding the calcButton’s Click Event Procedure (continued)

Page 60: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 60

Testing and Debugging the Application

• Valid data: data that the application is expecting

• Invalid data: data that is unexpected

• Debugging: locating errors in a program

• Syntax errors: usually caused by mistyping

• Logic errors: occur when you enter an instruction that does not give the expected results

• Test a program with both valid and invalid data

Page 61: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 61

Testing and Debugging the Application (continued)

Page 62: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 62

Testing and Debugging the Application (continued)

Page 63: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 63

Formatting Numeric Output

• Formatting: specifying the number of decimal places and any special characters to display

• Format specifier: specifies the type of formatting to use

• Precision specifier: controls the number of significant digits or zeros to the right of the decimal point

Page 64: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 64

Formatting Numeric Output (continued)

Page 65: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 65

Formatting Numeric Output (continued)

Page 66: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 66

Formatting Numeric Output (continued)

Page 67: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 67

Formatting Numeric Output (continued)

Page 68: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 68

Formatting Numeric Output (continued)

Page 69: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 69

Programming Tutorial

Page 70: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 70

Programming Example

Page 71: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 71

Summary

• Variables and named constants are memory locations that store data

• Variables can change value, but constants cannot

• Variables and constants have a name, data type, scope, and lifetime

• Use Dim to declare a variable at block or procedure level

• Use Private to declare a variable at module level

Page 72: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 72

Summary (continued)

• Assignment statement is used to assign values to an existing variable

• Literals are constant items of data

• Use the TryParse method to convert a string to a number

• Use the Imports statement to import a namespace

• The Convert class contains methods to convert values to a specified data type

Page 73: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 73

Summary (continued)

• A procedure-level variable is usable only by the procedure in which it is declared

• A module-level variable is usable by all procedures in the form

• A block-level variable is usable only within the block in which it is declared

• A static variable is a procedure-level variable that retains its value when the procedure ends

• Option Explicit On forces declaration of all variables before use

Page 74: Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 3 Variables, Constants, Methods, and Calculations.

Microsoft Visual Basic 2005: Reloaded, Second Edition 74

Summary (continued)

• Option Strict On disallows any implicit type conversions that may cause a loss of data

• Pseudocode or a flowchart is used to plan a procedure’s code

• Use the Clear method or empty string to clear a textbox

• The Focus method moves the focus to a control

• Test a program with both valid and invalid data