VB Structure, Constants, Variables, Modules, and Scope

advertisement
Chapter 3
Variables, Assignment Statements,
and Arithmetic
Learning Objectives
•Declare and use different types of variables in your project.
•Use text boxes for event-driven input and output.
•Use a four-step process to write code for event procedures
•Write Visual Basic instructions to carry out arithmetic operations.
•Describe the hierarchy of operations for arithmetic.
•Understand how to store the result of arithmetic operations in variables
using assignment statements.
•Use comments to explain the purpose of program statements.
•Discuss using Visual Basic functions to carry out commonly used
operations.
•Use command buttons to clear text boxes, print a form with the
PrintForm method, and exit the project.
•Describe the types of errors that commonly occur in a Visual Basic
project and their causes.
Variables
• Variables are named locations in memory (memory cells) in
which we store data that will change at run time
• Variable names in VB:****
– Must begin with letter and can use 0-9 in name
– Can’t include period, but can contain an underscore
– Can’t be over 255 characters
– Not case-sensitive, but suggest using upper and lower case
• Example mnemonic variable names
– sngProfit_Margin for Profit margin****
– curTaxes for taxes on this price
– curAmountDue for sum of price and taxes
– curYTDEarnings for year to date earnings
Data Types
• Two primary types of data: numeric and string
• Numeric data can be used in arithmetic operations
–
3.154 2300 -34 .0000354 are all numeric
constants
• String data should not be used in arithmetic
– “Dogs” “123-45-6789” “Dr. Brown” are all string
constants
• Numeric data types can be subdivided into specific types:
– currency $55,567.78
– single 567.78
– double 567.78129086
integer 255
long (integer) 35,455
Boolean True or False**
Data Types (cont)
• String - stores ASCII symbols (text) and numbers that are
not used in mathematical operations, but rather to provide
for the input, output, and manipulation of sets of characters
• Integers - whole numbers (-32,768 to 32,767)
• Long Integers - whole numbers (-2,147,483,648 to
2,147,483,647
• Single - fractional numbers to seven significant digits
• Double - fractional numbers to 15 significant digits
Data Types (cont)
• Currency - use with monetary amounts and up to four
digits to the right of the decimal
• Date - use with dates
• Boolean - use only when the value of a variable is True or
False
• Variant - variable is assigned this type automatically if you
don’t declare the variable as a specific data type, but takes
up more memory
Variable Prefixes
Variable Type
String
Integer
Long Integer
Single
Double
Currency
Date
Boolean
Prefix
str
int
lng
sng
dbl
cur
dtm
bln
Advantages of Coding Prefixes
• Standard allows anyone who reads the code
to immediately determine data type of
variable
• Words that are normally reserved words can
be used, i.e. strPrint
• Different objects can practically same name,
i.e lblAge (label), or txtAge (text box)
Declaring Variables
• Declare ALL variables with the DIM statement ****
• General form:
– Dim Variable1 as type1, variable2 as type2, etc.
• For example,
– Dim strHerName as String, sngMyValue as Single
– Dim curMyIncome as Currency, curPrice as Currency
– Dim curAmountDue as Currency
• Two or more variables can be declared with same Dim
statement but you must include the variable type
• If you fail to declare a variable after the Option Explicit
statement has been entered, an error occurs at Run time
• Use variables rather than objects in processing since all
textboxes are strings
The Option Explicit Statement
• Begin ALL Forms with the Option Explicit
command in the declarations procedure of the general
object. This forces all variables to be declared****
You may have to correct variable statements in your test!
• To automatically include Option Explicit, go to the
Tools|Options|Editor menu selection and check the box for
“Require variable declaration”
Event-driven Input
• In VB, we often use event-driven input where data is
transferred from text boxes to variables by an event
• **** The user, not the program controls the sequence of
events
• Use an assignment statement to do this:. : An assignment
statement gives a variable a value by setting it equal either to
an existing quantity or to a value that can be computed by the
program
Control property or variable = value, variable, or property
• Only variables or controls can be on left of the = sign
statement while the value, variable or property is on the right
of the = sign
Comments
• To explain the purpose of a statement, a
comment statement is added
• Any statement beginning with an
apostrophe or REM is a comment
• Comments can be added before statements
or at the end of statements by using an
apostrophe
VB Code Box 3-1
Code to Input Two Numbers
Private Sub cmdSum_Click
’Declare variables
Dim intFirst as Integer, intSecond as Integer
Dim intSum as Integer
’Assign values to variables
intFirst = txtFirstNum.Text
intSecond = txtSecondNum.Text
End Sub
Functions
• Function - an built -in operation that takes one or more
more arguments and returns a a single value
• A Common form of a function is
variable=functionname(argument1, argument2 ….)
• Not all functions require arguments such as the Date
function
• The VAL() function is very common and is used to
convert the Text property from a string to a number, which
is assigned to Numeric variable
Using Functions (cont)
• You can’t use text boxes to do computations
because the default property, Text, is a string and
therefore must be converted to a numeric value
before a calculation is performed.
• It is necessary to convert the results of the
computation that will appear in another text box to
a string value , using the Str() function, otherwise
you would be assigning an integer value to it
• Example functions for converting data:
– Val to convert a string to a number
– Str to convert a number to a string
Commonly Used Conversion Functions
Conversion
Function
CBool
Purpose
Convert argument to Boolean
CCur
Convert argument to Currency
CDate
Convert argument to Date
CInt
Convert argument to Integer
CSng
Convert argument to Single
CDbl
Convert argument toDouble
Assignment Statements
• Must convert strings in text boxes to numeric with
Val function, eg,
– curPrice = Val(txtPrice)
• Convert numeric variables to strings before
assigning to text box, eg,
– txtAmountDue = str(curAmountDue)
• Carry out calculations with assignment statements,
eg,
– curTaxes = 0.07*Price
– curAmountDue = curPrice + curTaxes
VB Code Box 3-2
Use Val() Function
in Inputting Numbers
Private Sub cmdSum_Click()
’Declare variables
Dim intFirst as Integer,intSecond as Integer
Dim intSum as Integer
’Assign values to variables as number
intFirst = Val(txtFirstNum.Text)
intSecond = Val(txtSecondNum.Text)
End Sub
VB Code Box 3-3
Code for cmdSum Command Button
Private Sub cmdSum_Click()
’Declare variables
Dim intFirst as Integer, intSecond as Integer
Dim intSum as Integer
’Assign values to variables as a number
intFirst = Val(txtFirstNum.Text)
intSecond = Val(txtSecondNum.Text)
intSum = intFirst + intSecond ’Calculate sum
txtSum.Text = Str(intSum) ’display sum in sum text box
End Sub
Properties Versus Methods
•
The dot notation method is the way properties are set at run
time.
• Syntax: object. property= value
E.g.
txtSum.Text=Str(intSum)
• The same notation is used to invoke a method for a control.
Methods define the actions a control can carry out.
• Syntax: object.method
E.g.
txtFirstNum.SetFocus
• The SetFocus method shifts the cursor to the named text box
• Methods can’t be used in assignment statements
VB Code Box 3-4
Code for cmdClear Command Button
Private Sub cmdClear_Click()
’Clear text boxes with empty string
txtFirstNum.Text = ""
txtSecondNum.Text = ""
txtSum.Text = ""
txtFirstNum.Setfocus ’Set focus back to first text box
End Sub
Using Assignment Statements for
Calculations
• An expression is a combination of one or
more variables and/or constants with
operators
• A constant is a quantity that does not
change
• Operators are symbols used for carrying out
processing
Arithmetic Operators ****
•
•
•
•
•
() for grouping
+ for addition
^ for exponentiation - for subtraction
- for negation
* for multiplication
/ for division
\ for integer division (divisor and dividend
are rounded to 0)
• Example 7.1111\1.95= 7\2 =3
• mod for modulus
• Example 7.1111\1.95= 7\2 =3 with 1 remainder
Hierarchy of Operations ****
•
•
•
•
•
•
•
•
Operations within parentheses ( )
Exponentiation (^)
Negation (-)'
Multiplication and division (*,/)
Integer division (\)
Modulo arithmetic (Mod)
Addition and subtraction (+,-)
String concatenation (&)
• ****Make sure you know this!!!
Arithmetic Example
• 3 * (Salary - Taxes)^2 + Bonus/Months
3
• Order
1
2 5
4
(order)
1 Subtract Taxes from Salary
2 Square the result
3 Multiply this result by 3
4 Divide Bonus by Months
5 Subtract result from first expression
****You will see something like this again!
String Operators
• For String Variables the only valid operation is
that of combining two strings into one****
• Use + or & to combine them
• Example:
• strBigday = “Christmas” + “ Day”
• strBigday = “Christmas” & “ Day”
• Result of above is Christmas Day
Symbolic Constants
• We can assign a name to a constant with the
Const statement
Syntax:
Const constant name as variable type = value
• Examples
Const sngIntRate as Single = 0.07
Const intNumYears as Integer=12
Const sngIntRate as Single=0.07,intNumYears as Integer=12
Formatting Data
• To display information in a pleasing form, we can use the
Format function:
• variable or control = Format(variable, “format expression”)
• Where the format expressions are in quotes and include;
– Currency
– Fixed
– Standard
– Percent
– Scientific
• Example:
txtTaxes.Text = Format(curTaxes, “currency”)
Variations of the Format Command
Function
FormatCurrency
Description
FormatDateTime
Expression formatted as currency along
with currency symbol
Expression formatted as a date or time
FormatNumber
Expression formatted as a number
FormatPercent
Expression formatted as a percentage
with a trailing % character
Rounds a number a specified number
of decimal places
Round
Print Form, Clearing Entries
and Setting Focus
• Create a command button called cmdPrint
• To print the form, use the PrintForm command in the
cmdPrint click event
• _________________________________
• Create a command button called cmdClear
• To clear a text boxes, set them equal to the null string “”
• To set the focus to a text box, use the Setfocus method
• For example,
txtCustName.SetFocus sets focus to this textbox
Coding the Exit Button and Giving User
Ability to Use Control Keys
•
•
•
•
Create Exit button called cmdExit
In the click event enter this line of code
END
User can also activate the click event from the
keyboard by using the CTRL Key and underlined
letter if the caption has an “&” before the
applicable letter
• Example E&xit for the Exit command button
Pseudocode to Compute and Output
Taxes and Amount Due
Begin Procedure Calculate
Input customer name
Input video name
Input video price
Taxes = video price times tax rate
Amount due = video price + taxes
Output taxes
Output amount due
End procedure
VB Code Box 3-5
Code for Calculate Button
Private Sub cmdCalc_Click()
’Declare constant and variables
Const sngTaxRate as Single = 0.07 ’Use local tax rate
Dim curPrice As Currency, curAmountDue As Currency
Dim curTaxes As Currency
Price = CCur(TxtVideoPrice.Text)
Taxes = Price * TaxRate ’calculate taxes
AmountDue = Price + Taxes ’calculate amount due
’Display taxes and amount due in text boxes as strings
txtTaxes.Text = Str(Taxes)
txtAmountdue.Text = Str(AmountDue)
End Sub
VB Code Box 3-6
Code to Compute and Display
Taxes and Amount Due
Private Sub cmdCalc_Click()
Const sngTaxRate as Single = 0.07 'Use local tax rate
Dim curPrice As Currency, curAmountDue As Currency
Dim curTaxes As Currency
Price = CCur(txtVideoPrice.Text)
Taxes = curPrice * sngTaxRate 'Compute taxes
curAmountDue = curPrice + curTaxes 'Compute amount due
'Format text boxes as currency
txtTaxes.Text = Format(curTaxes, "Currency")
txtAmountDue.Text = Format(curAmountDue, "Currency")
txtVideoPrice.Text = Format(curPrice, "Currency")
End Sub
VB Code Box 3-7
Code to Clear Entries in
cmdClear Command Button
Private Sub cmdClear_Click()
‘Clear all text boxes
txtCustName.Text = ""
txtVideoName.Text = ""
txtVideoPrice.Text = ""
txtTaxes.Text = ""
txtAmountDue.Text = ""
txtCustName.SetFocus ‘set focus to this text box
End Sub
Using Other Arithmetic Functions
• Other useful functions include
– Abs for absolute value
Sqr for square root
– FV for future value
PV for present value
– IRR for internal rate of return Pmt for payment
– UCase/LCase to convert to upper/lower case
– Len for length of a string
– Date for the system date
– DateValue for the date corresponding to string
argument
• We will use Pmt to compute the monthly payment
– MonPay = Pmt(rate, Nper,-LoanAmt)
– Pmt(.08/12,60,-10000) = $256.03
Creating a Monthly Payment Calculator
• Assume you wanted to determine the monthly
payment necessary to pay off a loan at a given
interest rate in some number of months
• Use PMT function
• PMT(rate, nper, pv) where
– rate = monthly interest rate
– nper = number of months
– pv = negative value of loan amount
The Monthly Payment Form
VB Code Box 3-8
Code to Compute Monthly Payment
Private Sub cmdCompute_Click()
‘Declare variables
Dim curAmount As Currency, intMonths As Integer
Dim sngRate As Single
Dim curPayment As Currency
‘Convert variables in text boxes
curAmount = CCur(txtAmount.Text)
intMonths = CInt(txtMonths.Text)
‘Calculate monthly interest rate
sngRate = (CSng(txtRate.Text) / 100) / 12
‘Calculate payment
curPayment = Pmt(sngRate, intMonths, -curAmount)
txtPayment.Text = Format(curPayment, "Currency")
txtAmount.Text = Format(curAmount, "Currency")
End Sub
Visual Basic Errors
• **** Most mistakes that happen while using VB are a
result of human error - not hardware error
• **** VB will NOT automatically detect and alert you to all
errors!!
• Syntax errors: caused by incorrect grammar, vocabulary,
or spelling . Also caused by using a keyword. Usually
caught as you enter the statement. These are pointed out by
VB and are usually easy to find and correct.
Visual Basic Errors (con’t)
• Run time errors: errors not caught at entry but which
involve an incorrect statement or bad data, eg, dividing by
zero. The presence of an error is detected by VB when you
run the program, but you still have to find the source of the
error. More difficult to correct than syntax errors
• Logic errors: those that are VB does not catch as being
“wrong”, but which involve erroneous logic, say, only
having a program include 11 months of data instead of 12.
These are the hardest to find!
• Debugging is the process of finding and correcting
program errors. ****
Download