procedure

STARTING OUT WITH
Visual Basic 2008
FOURTH EDITION
Tony Gaddis
Haywood Community College
Kip Irvine
Florida International University
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Slide 6- 1
Chapter
6
Procedures And Functions
A procedure is a collection of
statements that performs a task
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Introduction



A procedure is a collection of statements that
performs a task
 Event handlers are a type of procedure
A function is a collection of statements that
performs a task and returns a value to the VB
statement that executed it
 Functions work like intrinsic functions, such as
CInt and IsNumeric
A method can be either a procedure or a function
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Slide 6- 3
6.1
Procedures
You Can Write Your Own General Purpose
Procedures That Perform Specific Tasks
General Purpose Procedures Are Not Triggered
by Events but Called From Statements in Other
Procedures
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Procedure Uses



An event handler is a type of procedure
 Automatically executed when an event such as
a mouse click occurs
General purpose procedures are triggered by
statements in other procedures, not by events
Procedures help simplify & modularize code by:
 Breaking it into small, manageable pieces
 Performing a task that is needed repeatedly
 Dividing a program into a set of logical tasks
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Slide 6- 5
Sample Procedure, Tutorial 6-1
Private Sub btnGo_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnGo.Click
' This procedure calls the DisplayMessage procedure.
lstOutput.Items.Add("Hello from btnGo_Click procedure.")
lstOutput.Items.Add("Calling the DisplayMessage " & _
"procedure.")
DisplayMessage()
lstOutput.Items.Add("Now I am back ” _
& “in the btnGo_Click procedure.")
End Sub
Returns to
btnGo_Click
Calls
DisplayMessage
procedure
Sub DisplayMessage()
'A Sub procedure that displays a message.
lstOutput.Items.Add("")
lstOutput.Items.Add("Hello from DisplayMessage.")
lstOutput.Items.Add("")
End Sub
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Slide 6- 6
Declaring a Procedure
[AccessSpecifier] Sub ProcedureName ([ParameterList])
[Statements]
End Sub




AccessSpecifier is optional and establishes
accessibility to the program
Sub and End are keywords
ProcedureName used to refer to procedure
st
 Use Pascal casing, capitalize 1 character of
the name and each new word in the name
ParameterList is a list of variables or values
being passed to the sub procedure
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Slide 6- 7
More on the Access Specifier






Private allows use only from that form
Public allows use from other forms
If not specified, default is Public
There are other access specifiers such as:
 Protected
 Friend
 Protected Friend
 These will be discussed in later chapters
Access specifiers won’t be used for now
Practice writing procedures in Tutorial 6-2
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Slide 6- 8
Procedures and Static Variables


Variables needed only in a procedure, should be
declared within that procedure
 Creates a local variable with scope only within
the procedure where declared
 Local variable values are not saved from one
procedure call to the next
To save value between procedure calls, use
Static keyword to create a static local variable



Static VariableName As DataType
Scope is still only within the procedure
But variable exists for lifetime of application
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Slide 6- 9
6.2
Passing Arguments to a
Procedure
When calling a procedure, you can
pass it values known as arguments
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Arguments


Argument – a value passed to a procedure
We’ve already done this with functions

Value = CInt(txtInput.Text)
Calls the CInt function and passes txtInput.Text
as an argument
A procedure must be declared with a parameter
list in order to accept an argument


Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Slide 6- 11
Passing Arguments By Value
DisplayValue(5)
‘calls DisplayValue procedure
Sub DisplayValue(ByVal intNumber As Integer)
' This procedure displays a value in a message box.
MessageBox.Show(intNumber.ToString)
End Sub





intNumber declared as an integer argument
Storage location intNumber created by procedure
A value, 5 in this case, must be supplied and is
copied into the storage location for intNumber
The DisplayValue procedure then executes
Tutorial 6-3 demonstrates passing arguments
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Slide 6- 12
Passing Multiple Arguments
ShowSum(intValue1, intValue2)
‘calls ShowSum procedure
Sub ShowSum(ByVal intNum1 As Integer, _
ByVal intNum2 As Integer)
' This procedure accepts two arguments, and prints
' their sum on the form.
Dim intSum As Integer
intSum = intNum1 + intNum2
MessageBox.Show("The sum is " & intSum.ToString)
End Sub



Multiple arguments separated by commas
Value of first argument is copied to first
Second to second, etc.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Slide 6- 13
Passing Arguments ByVal or ByRef


Arguments are usually passed ByVal
 New storage location created for procedure
 Storage location gets a copy of the value
 Any changes in value are made to the copy
 Calling procedure won’t “see” the changes
Arguments can also be passed ByRef
 Procedure points to (references) argument’s
original storage location
 Any changes are made to the original value
 Calling procedure “sees” the changes
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Slide 6- 14
ByVal or ByRef Argument Example

Tutorial 6-4 demonstrates the difference between
parameters passed ByVal & ByRef
 Passed ByVal
 Calling procedure does not
“see” changes made to the
value of an argument
 Passed ByRef
 Calling procedure “sees”
changes made to the
value of an argument
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Slide 6- 15
6.3
Functions
A Function Returns a Value to the
Part of the Program That Called the
Function
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Declaring a Function
[AccessSpecifier] Function FunctionName ([ParameterList]) _
As DataType
[Statements]
End Function



New keyword Function
Also new is As DataType which states the data
type of the value to be returned
Return value is specified in a Return expression
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Slide 6- 17
Function Call Example
sngTotal = Sum(sngValue1, sngValue2)
Function Sum(ByVal sngNum1 As Single, _
ByVal sngNum2 As Single) As Single
Dim sngResult As Single
sngResult = sngNum1 + sngNum2
Return sngResult
End Function



sngValue1 & sngValue2 must be data type Single
 Data types must agree with parameter list
sngTotal must be Single, agrees with return value
Tutorial 6-5 demonstrates function use
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Slide 6- 18
Returning Nonnumeric Values
Function FullName(ByVal strFirst As String, _
ByVal strLast As String) As String
Dim strName As String
strName = strLast & ", " & strFirst
Return strName
End Function
Function IsValid(intNum As Integer) As Boolean
Dim blnStatus As Boolean
If intNum >= 0 And intNum <= 100 Then
blnStatus = True
Else
blnStatus = False
End If
Return blnStatus
End Function
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Slide 6- 19
6.4
More About Debugging
Step Into
Step Over
Step Out
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Debugging Involving Procedures




Step Into - continue to debug by single-stepping
through a procedure
Step Over - run procedure without singlestepping, continue single-step after the call
Step Out - end single-stepping in procedure,
continue single-step after the call
Tutorial 6-6 provides examples
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Slide 6- 21
6.5
Building the Bagel and
Coffee Price Calculator
Application
Use procedures and
functions to calculate the total
of a customer order.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Bagel and Coffee Price Calculator
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Slide 6- 23
Button Click Event Flowcharts
Calculate Button
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Reset Button
Slide 6- 24
Cost Calculation Functions
Bagel Cost Function
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Topping Cost
Function
Slide 6- 25
Cost Calculations Functions
Coffee Cost
Function
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Calc Tax Function
Slide 6- 26