Procedures - School of Computing Homepage

Download Report

Transcript Procedures - School of Computing Homepage

CIS 115 Lecture 6
 A set or block of code statements that is given
a name so that it can be invoked by another
part of the program
 Building blocks of applications
 Modular Programming - Break large problems
down into smaller ones
 Used for Repeated or Shared Tasks - Container
for code to be called multiple times
 Makes the code easier to understand

General Form:
Declaration statement (Procedure Header)
Code statements
End statement (Procedure Close)

Other names used by different programming
languages to refer to procedures
 Method
 Subroutine
 Function
 (Event) Sub Procedure
 Performs a logical action
 Does not return a value
 Executes when event occurs - not “Called” from code
 (Gen Purpose) Sub Procedure
 Performs a logical action
 Does not return a value
 Must be “Called” from other code
 Function
 Performs Calculation
 Does return a Value
 Must be “Called” from other code
 An abbreviation of the older term subroutine
 Sub procedures are written to perform specific
tasks
 General purpose Sub procedures are not
triggered by events but called from statements
in some other location
 Event procedures are special Sub procedures
that are not called from statements, but rather
are executed when a corresponding event
occurs
Public Sub SubName (parameterName As DataType)
‘*procedure code*’
End Sub
Public (optional) - the AccessSpecifier - establishes
accessibility to the program
 Sub and End - keywords
 SubName - name used to refer to Sub - rules for naming
Sub Procedures are the same as for variables, except Sub
procedure names begin with uppercase letters.
 ParameterList - a list of variables or values being passed
to the sub procedure

 Used to invoke (cause to execute) a procedure
 Syntax:
Call ProcedureName (Arguments)
 Call (optional) - keyword
 ProcedureName - name of Sub (or Function) to invoke
 Arguments (if any, included in parenthesis) - Data
passed to the procedure
 Example:
 Call Power (5, 2)
OR
 Power (5, 2)




Values, Variables or Expressions placed in
parentheses in a Call statement
Contain data needed by the procedure
The data is passed to the procedure when it is
called
We’ve already done this with the Val functions
 intNumber = Val(txtInput.Text)
 Calls Val function and passes txtInput.Text
8
 Declared in procedure header (in parentheses
after ProcedureName) (can have 0 or more)
 Must be declared (similar to a variable) in the
procedure header in order to accept an argument
 Created as a local variable for the procedure
 Syntax: (parameterName As DataType)
 parameterName - name used to refer to parameter in
procedure code (same naming rules as variables)
 As - keyword
 Data Type - type of value the parameter will contain




When the procedure is called, the values of
the arguments (in the call statement) are
passed into (copied to) the corresponding
parameters (in the procedure header).
Data needed by the Sub (or Function) and
sent by the Call statement
The number of arguments and parameters
must match.
The data type of each argument must
match its corresponding parameter.
10
Private Sub btnResult_Click()
Dim lng As Single, wid As Single
lng = 5
wid = 10
Call ComputeArea(lng, wid)
End Sub
‘* event procedure
‘* call to sub
Sub ComputeArea(Length As Single, Width As Single)
Dim Area As Single
Area = Length * Width
MsgBox(“Area = “ & Area)
End Sub

Arguments are usually passed ByVal
 A copy of the value of the argument is stored in the
parameter l0cation
 Any changes in that value made by the called procedure are
made only to the parameter location – original argument
from calling procedure will not change

Arguments (variables) can also be passed ByRef
 The reference (memory location) of the variable used as the
argument is stored in the Parameter l0cation
 Parameter references (points to) the original variable’s
(argument’s) memory location
 Any changes made by the called procedure are made to the
original variable (argument) from calling procedure
Sub ChangeValue(ByVal intY As Integer)
intY = 10
End Sub
..................
ChangeValue(dim intX as integer = 5)
..................
Result: intY = 10 intX = 5
At declaration
intX 
5
intY 
5
At termination
intX 
5
intY 
10
_______________________________________________________
Sub ChangeValue(ByRef intY As Integer)
intY = 10
At declaration
End Sub
..................
intX 
5  intY
ChangeValue(intX = 5)
At termination
..................
intX  10  intY
Result: intY = intX = 10
 Write a Sub Procedure named Power with 2
integer parameters (originally from text
boxes). The sub should calculate the first
parameter raised to the second parameter and
display the results in a message box.
 Obtain input
 Call Sub
 Procedures that return a Value
 Same form as Sub except must return a value
 Must have an associated data type to tell program
what type of data it will return
 One of the numeric types
Boolean
Object
String
Char
Etc.
 Must include a “Return” statement or Assign a value
to the name of the function
▪ This statement causes the function to end and return the
appropriate value
Public Function FunctionName (parameterName As DataType)
As returnType
‘* function code
Return Value ‘* OR FunctionName = Value
End Function
Public (optional) - the AccessSpecifier
Function and End – keywords
FunctionName - name used to refer to function - Function
procedure names begin with uppercase letters.
 ParameterList - list of values being passed to the function
 returnType - DataType of the value returned by the
function
 Return Value – required statement to return data to caller



 Functions ALWAYS return a value
 When calling a function, you MUST do
something with the value that is returned
 Right hand side of an assignment statement
 Part of an Output Statement
 Must be suitable to the particular return type
 A Function can be used in any statement
where a literal or variable of the particular
return type could be used
Private Sub btnResult_Click()
‘* event procedure
Dim lng As Single, wid As Single, area As Single
lng = 5
wid = 10
area = ComputeArea(lng, wid)
‘* call to Function
MsgBox(“Area = “ & area)
End Sub
Function ComputeArea(L As Single, W As Single) As Single
Dim A As Single
A = L *W
Return A
End Sub
 Write a function named Quotient with 2
Integer parameters (originally from text
boxes) and a Double return type. The function
should calculate the first parameter divided by
the second and return the result.
 Obtain Input
 Call the function,
 Display results in a message box.
 Pre-coded Functions provided by VB
 Used to improve developer productivity – less time
spent coding
 Broad Range of Built-In Functions
 Math calculations
 Formatting


String manipulation
Many more
 Time/Date functions
 To find a function open the Object Browser
 F2 OR
 Select View Menu then Object Browser option

Rnd - Returns a number between 0 and 1 (excluding 1)
 Int(6 * Rnd) + 1 ‘* Returns a random integer from 1 through 6


Sqr(n) - Returns the square root of the number n
IsNumeric(s) - Returns true if the item s can be converted
to a number, false if not
 IsNumeric (“23.5”) ‘* Returns True
 IsNumeric(“hello”) ‘* Returns False

Round(n, r) - Returns the number n rounded to r decimal
places
 Round(6.3819, 3) ‘* Returns 6.382

Int(n) - Returns the integer part of the number n
 Int (123.456) ‘* Returns 123

FormatNumber(n, [r]) - returns number n formatted with
commas and r decimal places (default is 2 decimal places)
 FormatNumber(8765.4537) ‘* Returns 8,765.45
 FormatNumber(8765.4537, 3) ‘* Returns 8,765.454

FormatCurrency(n, [r]) – returns number n formatted
with dollar sign, commas, and r decimal places (default 2)
 FormatCurrency(65) ‘* Returns $65.00
 FormatCurrency(65273.815) ‘* Returns $65,273.82

FormatPercent(n, [r]) - returns number n formatted as
percent with r decimal places (default 2)
 FormatPercent(.658) ‘* Returns 65.80%
 FormatCurrency(8.20) ‘* Returns 820.00%

Val(s) - Returns the numbers contained in the string s
(stops at 1st non numeric item)
 Val(“123abc”) ‘* Returns 123

Str(n) - Converts number n to a String
 Str(123) ‘* Returns “123”

Specific conversion functions for each data type






CBool ( expr )
CByte ( expr )
CChar ( expr )
CDate ( expr )
CDbl ( expr )
CDec ( expr )






CInt ( expr )
CLng ( expr )
CObj ( expr )
CShort ( expr )
CSng ( expr )
CStr ( expr )

Cint(n) - converts number n to an integer
 Rounding can be done with the CInt function
 CInt(12.4) ‘* Returns 12
 CInt(12.5) ‘* Returns 13

CStr(n) - converts number n to a string
 CStr(26) ‘* Returns “26”

CDec(n) - converts number n to a decimal value
 Dim decPay as Decimal = CDec(“$1,500”)

CDate(s) – converts string s to a date
 Dim datHired as Date =
CDate(“05/10/2005”)


Conversion functions can fail
String “xyz” can’t be converted to a number
Dim dblSalary as Double = CDbl(“xyz”)

There’s no day 35 in the month of May
Dim datHired as Date = CDate(“05/35/2005”)

These failed conversions cause a runtime error
called an invalid cast exception

Left(s, n) - Returns the number of characters specified by
n, starting at the beginning of the string s
 Left(“Penguin”, 4) ‘* Returns “Peng”

Right(s, n) - Returns the number of characters specified
by n, starting from the end of the string s
 Right(“Penguin”, 5) ‘* Returns “nguin”

Mid(s, n, r) - Returns the substring from string s, starting
at the position indicated by n and continuing for the
length specified by r
 Mid(“Penguin Penguin”, 5, 6 ) ‘* Returns “in Pen”

UCase(s) - Converts any lowercase letters in string s to
uppercase
 UCase(“Yes”) ‘* Returns “YES”

Lcase(s) - Converts any uppercase letters in string s to
lowercase
 UCase(“Yes”) ‘* Returns “yes”

InStr(s, t) - Searches for the first occurrence of string t in
string s and returns the starting position in s at which t is
found, -1 if not found
 InStr(“John Smith”, “h”) ‘* Returns 2

Len(s) - Returns the number of characters in string s
 Len(“Yes Yes”) ‘* Returns 7

InputBox
 Prompts the user for
keyboard input
 Input is returned to
the program for processing

Syntax:
 Result = InputBox (prompt, [title])

Example:
 strInput = InputBox (“Enter Input”)
 strName = InputBox (“What is your name”, “Name”)
 MsgBox
 Displays a message in a dialog box
 Syntax
 MsgBox (prompt, [title])
 Example
 MsgBox (“Hello World”, “Chapter 7_1”)
 MsgBox (“The Result is “ & Result)
 Create an application that adds items to a
sales receipt one at a time using an input text
box and a button. Each time the button is
pressed, the new item price should be added
to a list box control which acts as a receipt.
The program should also contain output labels
for subtotal, sales tax and total that should be
updated when an item is added to the receipt.
(Ensure that the prices are numeric and that
the output is formatted to currency)
TASK
OBJECT
EVENT
Input Price
Text Box, Label
None
Display Receipt
List Box
None
Display Subtotal
Label, Label
None
Display Sales Tax
Label, Label
None
Display Total
Label, Label
None
Add Item to Receipt
Button
Click
Exit
Button
Click
 Variables
 Subtotal
 Tax
 Total
 What Data Types?
 Where to Declare?
 Read in Data from Text Box
 Convert to Number
 CDbl
 Val
 Add to ListBox
 Formatted as Currency
 Update Subtotal, Tax, and Total Variables
 Update Output Displays
Convert to Number
Format to Currency
Format to Currency
Write a VB application to have the user input a first
name, middle name, and last name. Produce an
output string stating the full name and the initials
(with periods). Be sure that each name and initial
is capitalized. Format and display the output in a
label. Use 3 separate sub procedures to store input,
build output string and display output. Use a
function to capitalize a single name and a function
to produce the formatted initials from all three
names.

Homework 4
 Visual Basic – Procedures and Functions
 See handout for details and due date
 Questions?