Chapter 3 Variables, Constants, and Calculations McGraw-Hill

advertisement
Chapter 3
Variables, Constants,
and Calculations
McGraw-Hill
Copyright © 2011 by The McGraw-Hill Companies, Inc. All Rights Reserved.
Objectives (1 of 2)
•
•
•
•
•
•
Distinguish between variables, constants, and
controls.
Differentiate among the various data types.
Apply naming conventions incorporating standards
and indicating the data type.
Declare variables and constants.
Select the appropriate scope for a variable.
Convert text input to numeric values.
3-
3-2
Objectives (2 of 2)
•
•
•
•
•
•
•
Perform calculations using variables and constants.
Convert between numeric data types using implicit and
explicit conversions.
Round decimal values using the Decimal.Round
method.
Format values for output using the ToString method.
Use Try/Catch blocks for error handling.
Display message boxes with error messages.
Accumulate sums and generate counts.
3-
3-3
Data — Variables and Constants (1 of 2)
•
Variable
• Memory locations that hold data that can be
changed during project execution
• Example: customer’s name
Named Constant
• Memory locations that hold data that cannot
be changed during project execution
• Example: sales tax rate
3-
3-4
Data — Variables and Constants (2 of 2)
•
•
In Visual Basic, when you declare a Variable or
Named Constant
• An area of memory is reserved
• A name is assigned called an Identifier
• Follow rules and naming conventions
Use Declaration Statements to establish
Variables and Constants,
• Assign name and data type,
• Not executable unless initialized on same line
3-
3-5
Data Types
Data Type
Use For
Storage Size in bytes
Boolean
True or False value
2
Byte
0 to 255, binary data
1
Clear
Single Unicode character
2
Date
1/1/0001 through 12/31/9999
8
Decimal
Decimal fractions, such as dollars/cents
16
Single
Single precision floating-point numbers with six digits of
accuracy
4
Double
Double precision floating-point numbers with 14 digits of
accuracy
8
Short
Small integer in the range -32,768 to 32,767
2
Integer
Whole numbers in the range -2,147,483,648 to
+2,147,483,647
4
Long
Larger whole numbers
8
String
Alphanumeric data: letters, digits, and other characters
Varies
Object
Any type of data
4
3-
3-6
Older Naming of Data Types
Data Type
Prefix
Boolean
bln
Byte
byt
Character
chr
Date
dtm
Decimal
dec
Single
sng
Double
dbl
Short
sht
Integer
int
Long
lng
String
str
Object
obj
3-
3-7
Naming Variables and Constants
•
•
Must follow Visual Basic Naming Rules
Should follow Naming Conventions
• Meaningful names consisting of letters, digits, and
underscores; must begin with a letter and no spaces or
periods. Include class (data type) of variable (variable:
countInteger constant: QUOTA_Integer)
• Use mixed case for variables and uppercase for
constants (quantityInteger).
• Cannot use reserved words or keywords to which
Basic has assigned a meaning, such as print, name,
and value
3-
3-8
Constants
•
Named
• User assigned name, data type, and value
• Use CONST keyword to declare.
Const COMPANY_ADDRESS_String As String = "101 S. Main Street"
Const SALES_TAX_RATE_Decimal As Decimal = .08D
•
Intrinsic
• System defined within Visual Studio (Color.Red)
3-
3-9
Assigning Values to Constants
•
Declare the data type of numeric constants by appending
a type-declaration character.
Decimal
D
Decimal – 850.50D
Double
R
Double – 52875.8R
Integer
I
Integer – 12345678I
Long
L
Long – 134257987L
Short
S
Short – 350S
Single
F
Single – 101.25F
3-
3-10
Declaring Variables
•
•
•
•
•
Declared inside a procedure using a Dim
statement
Declared outside a procedure using Public,
Private, or Dim statements
Always declare the variable’s data type.
May declare several variables with one
statement.
Use IntelliSense to assist in writing statements.
3-
3-11
Declaration Statement Examples
Dim customerNameString
As String
Private totalSoldInteger
As Integer
Dim temperatureSingle
As Single
Dim priceDecimal
As Decimal
Private priceDecimal
As Decimal
3-
3-12
Scope and Lifetime of Variables (1 of 2)
•
•
Visibility of a variable is its scope.
Scope may be
•
Lifetime of a variable is the period of time the variable
exists.
• Namespace
• Module level
• Local
• Block level
3-
3-13
Module Level Variable Declaration Example
Code module-level declarations in the Declaration section
at the top of the code.
3-
3-14
Variable Definition
(Declarations section)
Const NamedConstants
Private ModuleLevelVariables
Private Sub CalculateButton_Click
Dim LocalVariables
…
End Sub
Private Sub SummaryButton_Click
Dim LocalVariables
…
End Sub
Private Sub ClearButton_Click
Dim LocalVariables
…
End Sub
3-
3-15
Guidelines for User Input
• Each Input object (textbox, etc) and Output object (label,
textbox, etc.) will have its own variable associated with it
• Input object requires that its value be captured, that is to
convert it from text to a numeric value and placed in a
variable
• All calculations (formulas) will be done ONLY with
variables, constants and functions; the results of all
calculations will be placed in a variable
• All variables will be formatted into an output object (label,
textbox, etc.) in order to make them visible and appear in
user friendly format
3-
3-16
3-
3-17
Option Explicit and Option Strict
•
•
Option Explicit forces variables to be declared
before using.
Option Strict
• Makes VB a strongly typed language like C++, Java
and C#
• Does not allow implicit conversions from a wider data
type to a narrower one or between String and numeric
data types
• Best practice to always turn both on either in code or
in Project Properties dialog box
3-
3-18
Converting Between Numeric Data Types
•
•
Implicit (automatic) conversion
• Converts value from narrower data type to wider
type where no danger of losing precision exists
Explicit conversion (casting)
• Uses methods of Convert class to convert
between data types
• Convert Class has methods that begin with “To”
for each of the data types.
3-
3-19
Performing Calculations with
Unlike Data Types
•
VB performs the calculations using the wider data
type.
• Use a cast if converting the result to a different data
type.
Example:
•
Convert.ToInt32(CountInteger / NumberDecimal) or
Convert.ToSingle(CountInteger / NumberDecimal).
VB does not convert to a different data type until it is
necessary.
3-
3-20
Converting Strings to a
Numeric Data Type
•
•
•
•
Use Parse methods to convert the Text property to
its numeric form before it’s used in a calculation.
Each numeric data type class has a Parse method.
Parse method returns a value that can be used in
calculations.
Parse method fails if user enters nonnumeric data
or leaves data blank.
3-
3-21
Conversion Methods
Method
Convert To
Integer.Parse
Decimal.Parse
.ToString
Integer
Decimal
String
3-
3-22
Conversion Examples
QuantityInteger
=Integer.Parse(quantityTextBox.Text)
PriceDecimal
=Decimal.Parse(priceTextBox.Text)
WholeNumberInteger =Integer.Parse(digitString)
ResultTextBox.Text
=ResultDecimal.ToString( )
CountTextBox.Text
=CountInteger.ToString( )
IDString
=IDInteger.ToString( )
3-
3-23
Calculations
•
•
•
Calculations can be performed with variables,
constants, properties of certain objects, and
numeric literals.
Do not use strings in calculations.
Values from Text property of Text Boxes
• Are strings, even if they contain numeric data
• Must be converted to a numeric data type
before performing a calculation
3-
3-24
Arithmetic Operations
Operator
+
–
*
/
\
Mod
^
Operation
Addition
Subtraction
Multiplication
Division
Integer Division
Modulus – Remainder of division
Exponentiation
3-
3-25
Order of Operations
•
Hierarchy of operations, or order of precedence, in
arithmetic expressions from highest to lowest
1. Any operation inside parentheses
2. Exponentiation
3. Multiplication and division
4. Integer division
5. Modulus
6. Addition and subtraction
3-
3-26
Evaluation of Expression
1. All operations within parentheses. Multiple operations within
the parentheses are performed according to the rules of
precedence.
2. All exponentiation. Multiple exponentiation operations are
performed from left to right.
3. All multiplication and division. Multiple operations are
performed from left to right.
4. All integer division. Multiple operations are performed from
left to right.
5. Mod operations. Multiple operations are performed from left to
right.
6. All addition and subtraction are performed from left to right.
3-
3-27
Mathematical Examples
•
Note the use of parentheses to control order of
precedence.
3+4*2 = 11 Multiply then add
(3+4)*2 = 14 Parentheses control: add then multiply
8/4*2 = 4
Same level, left to right: divide then multiply
3-
3-28
Using Calculations in Code
•
•
•
Perform calculations in assignment statements.
What appears on right side of assignment operator
is assigned to item on left side.
Assignment operators — allows shorter versions of
code =, +=, -=, *=, /=, \=, &=
‘Accumulate a total.
TotalSalesDecimal += salesDecimal
3-
3-29
Rounding Numbers
•
Round decimal fractions
•
•
Decimal.Round method returns a decimal result rounded to a specified
number of decimal positions.
Decimal.Round and Convert methods use technique called “rounding
toward even.”
Decimal Value to
Round
Number of Decimal Positions
Results
1.455
2
1.46
1.445
2
1.44
1.5
0
2
2.5
0
2
3-
3-30
Converting to String
•
•
Values assigned to string variables or Text
properties must be string.
Convert any numeric data type to string using
.ToString method.
Examples:
ResultTextBox.Text = ResultDecimal.ToString()
CountTextBox.Text = CountInteger.ToString()
IDString = IDInteger.ToString()
3-
3-31
Formatting Data for Display
•
To display numeric data in a label or text box, first convert
value to string.
• Use ToString method
DisplayTextBox.Text = NumberInteger.ToString()
•
Format the data using formatting codes.
• Specifies use of dollar sign, percent sign, and
commas
• Specifies number of digits that appear to right of
decimal point
3-
3-32
Using Format Specifier Codes
•
•
•
"C" code
• Currency — String formatted with dollar sign,
commas separating each group of 3 digits and 2
digits to the right of decimal point
"N" code
• Number — String formatted with commas
separating each group of 3 digits and 2 digits to the
right of decimal point
Can specify number of decimal positions
• Example: "C0" zero digits
3-
3-33
Format Specifier Codes
Format Specifier Codes
Name
C or c
Currency
F or f
Fixed-point
N or n
Number
D or d
Digits
P or p
Percent
3-
3-34
Format Specifier Code Examples
Variable
Value
Code
Output
totalDecimal 1125.6744
"C"
$1,125.67
totalDecimal 1125.6744
"N0"
1,126
pinInteger
123
"D6"
000123
rateDecimal
0.075
"P"
7.50%
rateDecimal
0.075
"P3"
7.500%
rateDecimal
0.075
"P0"
8%
"C"
($10.00)
valueInteger -10
3-
3-35
Date Specifier Code
•
Format DateTime values using format codes and
ToString method.
3-
3-36
Counting and Accumulating Sums
•
Declare module-level variables, since local level variables
reset to 0 each time the procedure is called.
• Summing Numbers
DiscountedPriceSumDecimal += DiscountedPriceDecimal
• Counting
Private saleCountInteger As Integer
saleCountInteger += 1
• Calculating an Average
AverageDiscountedSaleDecimal = DiscountedPriceSumDecimal /
SaleCountInteger
3-
3-37
Chapter 3 – Problem Definition
You are to create a program that allows a user to enter
the quantity of a specific book, its title, and price.
When the user presses the calculate button, then
display the extended price (quantity * price), the
amount of the 15% discount, and the discounted price
(extended price – discount). When the user presses
the Clear Sales button, clear all input and results and
allow the user to start another sale. Round where
appropriate.
3-
3-38
3-
3-39
Handling Exceptions
•
•
•
•
Use structured exception handling to easily
catch errors before run-time error occurs.
Catching exceptions is referred to as error
trapping.
Coding to handle exception is called error
handling.
Error handling in Visual Studio.NET is
standardized for all languages using the
Common Language Runtime, CLR, which
improves on previous versions of VB.
3-
3-40
Try/Catch Blocks
•
Enclose statements that might cause an error
within Try/Catch block.
• If an exception occurs
while statements in the
Try block are executing, program control is
transferred to the Catch Block.
• If a Finally statement is included, the code in
that section executes last, whether or not an
exception occurred.
3-
3-41
Try Block — General Form
Try
‘statements that may cause an error
Catch [VariableName As ExceptionType]
‘statements for action when an exception occurs
[Finally
‘statements that always execute before exit of the Try
block]
End Try
3-
3-42
Try Block — Example
Catches Any Exception
Try
QuantityInteger = Integer.Parse(QuantityTextBox.Text)
QuantityTextBox.Text = QuantityInteger.ToString( )
Catch
MessageLabel.Text = "Error in input data."
End Try
3-
3-43
Try Block — Example
Catches Specific Exception
•
This Catch statement catches bad input data that
cannot be converted to numeric.
Catch theException As FormatException
MessageLabel.Text="Error in input data."
End Try
3-
3-44
Common Exception Classes
Each exception is an instance of the
Exception class. The properties of this
class allow you to determine the code
location of the error, the type of error,
and cause.
3-
3-45
Try Block — Example
Handling Multiple Exceptions
Catch TheException As FormatException
' Statements for nonnumeric data.
Catch TheException As ArithmeticException
' Statements for calculation problem.
Catch TheException As Exception
' Statements for any other exception.
3-
3-46
MessageBox Object (1 of 2)
•
The MessageBox is an overloaded method.
• Signatures correspond to the argument list.
• There are multiple signatures to choose from.
• Do not reverse, transpose, or leave out any of the arguments.
• IntelliSense displays argument list (also called signatures).
MessageBox.Show (TextMessage, TitlebarText, _
MessageBoxButtons, MesssageBoxIcon)
3-
3-47
MessageBox Object (2 of 2)
•
•
•
•
TextMessage string
• String literal or variable that displays message
Title Bar text
• String that appears in title bar of message box
MessageBox Buttons
• OK, OKCancel, RetryCancel, YesNo, YesNoCancel,
AbortRetryIgnore
MessageBox Icons
• Asterisk, Error, Exclamation, Hand, Information, None,
Question, Stop, Warning
3-
3-48
Using Overloaded Methods
•
•
•
•
This OOP feature allows the Show method to act
differently for different arguments.
Each argument list is called a signature so the
Show method has several signatures.
Supplied arguments must exactly match one of the
signatures provided by the method.
IntelliSense in Visual Studio editor helps when
entering arguments so that they don’t need to be
memorized.
3-
3-49
Testing Multiple Fields
•
•
•
Each input field presents an opportunity for an
exception.
To indicate specific fields that caused the exception,
use nested Try/Catch blocks.
Pinpoints specific errors, and after error, sets focus
back to field in error
• Use SelectAll method of text box to make text appear
selected to aid user.
3-
3-50
Chapter 3 – Problem Definition
You are to create a program that allows a user to enter the quantity of a specific
book, its title, and price. When the user presses the calculate button, then display
the extended price (quantity * price), the amount of the 15% discount, and the
discounted price (extended price – discount). When the user presses the Clear
Sales button, clear all input and results and allow the user to start another sale.
Round where appropriate.
Prevent the user from entering non-numeric data into the Quantity and Price fields.
Additionally, the Quantity field should not allow non-integer values. Use a
message box to notify the user when an error occurs. Provide for the following
output to be updated after each transaction:
Total Number of Books
Total Discount Given
Total Discounted Amount
Average Discount
3-
3-51
Nested Try/Catch blocks
Try
' Convert quantity to numeric variable.
QuantityInteger = Integer.Parse(QuantityTextBox.Text)
Try
' Convert price if quantity was successful.
PriceDecimal = Decimal.Parse(PriceTextBox.Text)
' Calculate values for sale.
Catch PriceException As FormatException
' Handle a price exception.
MessageBox.Show("Price must be numeric.", "Data Entry Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
With PriceTextBox
.Focus()
.SelectAll()
End With
End Try
Catch QuantityException As FormatException
' Handle a quantity exception.
MessageBox.Show("Quantity must be numeric.", "Data Entry Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
With QuantityTextBox
.Focus()
.SelectAll()
End With
End Try
3-
3-52
Testing Multiple Fields – Method 2
• Use separate Try/Catch for each field
• At the end of the Catch code, use Exit Sub to
terminate processing and return control to the field
in error
3-
3-53
Separate Try/Catch blocks
Try
' Convert quantity to numeric variable.
QuantityInteger = Integer.Parse(QuantityTextBox.Text)
Catch QuantityException As FormatException
' Handle a quantity exception.
MessageBox.Show("Quantity must be numeric.", "Data Entry Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
With QuantityTextBox
.Focus()
.SelectAll()
End With
Exit Sub
End Try
Try
' Convert price if quantity was successful.
PriceDecimal = Decimal.Parse(PriceTextBox.Text)
Catch PriceException As FormatException
' Handle a price exception.
MessageBox.Show("Price must be numeric.", "Data Entry Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
With PriceTextBox
.Focus()
.SelectAll()
End With
Exit Sub
End Try
' Calculate values for sale.
3-
3-54
Download