STARTING OUT WITH Visual Basic 2008 FOURTH EDITION Tony Gaddis Haywood Community College Kip Irvine Florida International University
Procedures And Functions Chapter Procedures And Functions 6 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
Procedures 6.1 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 Ann 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
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 Calls DisplayMessage procedure Returns to btnGo_Click Sub DisplayMessage() 'A Sub procedure that displays a message. lstOutput.Items.Add("") lstOutput.Items.Add("Hello from DisplayMessage.") End Sub
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 Use Pascal casing, capitalize 1st 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
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
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
Passing Arguments to a Procedure 6.2 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
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
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.
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
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
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 New keyword 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
Function Call Example sngValue1 & sngValue2 must be data type Single 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
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
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 single-stepping, continue single-step after the call Step Out - end single-stepping in procedure, continue single-step after the call Tutorial 6-6 provides examples
Building the Bagel and Coffee Price Calculator Application 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
Button Click Event Flowcharts Calculate Button Reset Button
Cost Calculation Functions Topping Cost Function Bagel Cost Function
Cost Calculations Functions Coffee Cost Function Calc Tax Function