660 likes | 824 Views
Chapter 4. General Procedures. Outline & Objective. Sub Procedures Procedure Parameters Function Procedures Modular Design. What is a procedure?. A general procedure is a set of commands that is given a name so that it can be invoked by another part of the program
E N D
Chapter 4 General Procedures Chapter 4 - Visual Basic Schneider
Outline & Objective • Sub Procedures • Procedure Parameters • Function Procedures • Modular Design Chapter 4 - Visual Basic Schneider
What is a procedure? • A general procedure is a set of commands that is given a name so that it can be invoked by another part of the program • Procedures make a program easier to develop, test, and correct Chapter 4 - Visual Basic Schneider
General Procedures • In Visual Basic, there are two types of procedures: • Sub • Function • Note: To distinguish procedures from event procedures, Sub and Function procedures are referred to as general procedures. Chapter 4 - Visual Basic Schneider
Sub Procedures Properties: • may be called • may be passed data called arguments • may return values to the calling program • may change the data stored in a received variable Chapter 4 - Visual Basic Schneider
Passing Arguments to Subs: • When you define a Sub procedure, sometimes you need to transfer variables that are used in different Subs. This is called passing in programming languages. Chapter 4 - Visual Basic Schneider
Components of Sub Procedure: • name: used to identify the Sub procedure • parameters: a Sub procedure accepts values from the caller through its parameters. It may also send values back to the caller through its parameters. Chapter 4 - Visual Basic Schneider
Sub Procedure's Name • The rules for naming Sub Procedures are the same as naming variables. • In this text, Sub procedure names begin with uppercase letters in order to distinguish them from variable names. Chapter 4 - Visual Basic Schneider
Syntax of a Sub Procedure Private Sub ProcedureName ( ) statement(s) End Sub Chapter 4 - Visual Basic Schneider
Creating Visual Basic Sub Procedure: • Activate the code window • Select Add Procedure from the Tools menu • Type in the name of the Sub procedure • Click on Private in the Scope box • Press the Enter key or click the OK button • Type the statements of the Sub procedure into the code window Chapter 4 - Visual Basic Schneider
Example of Call to a Sub Procedure: Private Sub cmdCompute_Click() Dim num As Single num = Val(InputBox("Enter a number:")) Call Triple(num) End Sub Chapter 4 - Visual Basic Schneider
Sub Procedure Triple: Private Sub Triple(num As Single) ' Multiply the value of the number by 3 picResult.Print "The number is"; 3 * num End Sub Private Sub Triple(par As Single) ' Multiply the value of the number by 3 picResult.Print "The number is"; 3 * par End Sub Chapter 4 - Visual Basic Schneider
Passing Arguments to Sub Procedures • Arguments : Variables or expressions placed in parentheses in a Call statement. • Not only is the value of the argument passed to the parameter, but the value of the parameter is passed back to the argument. Chapter 4 - Visual Basic Schneider
Example of Arguments • Call Triple(num) Chapter 4 - Visual Basic Schneider
Parameters • Variables placed in parentheses after a Sub Procedure's name. • When the procedure is called, the values of the corresponding arguments are placed in the parameters. Chapter 4 - Visual Basic Schneider
Example of Parameters • Private Sub Triple(num As Single) Chapter 4 - Visual Basic Schneider
Passing arguments to parameters Call Triple(num) Private Sub Triple (num As Single) Argument Parameter Chapter 4 - Visual Basic Schneider
Passing Arguments to Parameters • Call Add (x, y ) • Private Sub Add ( num1 As Single, num2 As Single) Arguments Parameters Chapter 4 - Visual Basic Schneider
Passing Arguments • A Sub procedure receives the location of the arguments, and may use and modify the value of the arguments stored at that location. • Two-way into and out of the Sub Procedure. Chapter 4 - Visual Basic Schneider
Passing Arguments Private Sub cmdDisplay_Click() Dim amt As Single amt = 2 picResults.Print amt; Call Triple(amt) picResults.Print amt End Sub Chapter 4 - Visual Basic Schneider
Sub Triple Private Sub Triple(num As Single) ' Triple a number picResults.Print num; num = 3 * num picResults.Print num; End Sub Chapter 4 - Visual Basic Schneider
Passing Arguments Call Triple(amt) Private Sub Triple (num As Single) amt num Chapter 4 - Visual Basic Schneider
Passing Data - by Reference amt amt amt 2 2 6 6 num num Chapter 4 - Visual Basic Schneider
Important Rules for Passing Arguments to a Sub • The number of arguments and parameters must match. • The data type of each argument must match its corresponding parameter. Chapter 4 - Visual Basic Schneider
Local Variables: • A variable that is used only in a specific procedure (Sub or Function). • The scope of the local variable is the Sub or Function in which that variable has been defined. Chapter 4 - Visual Basic Schneider
Local Variables: • Declared within a procedure definition • Private to a procedure definition • Variables in different procedures are totally independent • Different procedures can have variables with the same names; however, each variable will have its own memory location Chapter 4 - Visual Basic Schneider
Advantages of Local Variables • Extremely useful for team programming • Protects against accidental side effects (change of the value of the variable in one procedure that causes an error in another) Chapter 4 - Visual Basic Schneider
Example of Local Variables Private Sub cmdButton_Click() Dim var1 As Integer, var2 As Integer,num As Integer var1 = 2 var2 = 4 Call Add(num) picBox.Print num End Sub Chapter 4 - Visual Basic Schneider
Sub Add Private Sub Add(num As Integer) Dim var1 As Integer, var2 As Integer num = var1 + var2 End Sub Chapter 4 - Visual Basic Schneider
Form-Level Variables • Form-level variables are visible to every procedure. • Form-level variables appear at the top of the code window. Chapter 4 - Visual Basic Schneider
How to create Form-Level Variables? • Activate the code window • Click on the down arrow to the right of the object list box • Click on General • Click on Declaration in the procedure list box • Type in Dim statements for form-level variables Chapter 4 - Visual Basic Schneider
Example ' In Declaration section of General Dim num1 As Single, num2 As Single Chapter 4 - Visual Basic Schneider
Common Errors • Passing incorrect data types. • Not returning the result of the computation back to the calling program. Chapter 4 - Visual Basic Schneider
Another Example Private Sub cmdDisplay_Click() ' Demonstrate that variables in a Sub procedure do ' not retain their values in subsequent calls Call Three Call Three End Sub Chapter 4 - Visual Basic Schneider
Sub Three Private Sub Three() Dim num As Single ' Display the value of num and assign it the value 3 picResults.Print num; num = 3 End Sub Chapter 4 - Visual Basic Schneider
What is a function? • Similar to a Sub, performs a specific task • Unlike a Sub, returns asingle value to the calling program Chapter 4 - Visual Basic Schneider
Types of Functions • Standard functions (built-in) • User-defined functions Chapter 4 - Visual Basic Schneider
User-Defined Function • A function returns a single value • The value is returned by assigning a value to the name of the function • The values of the parameters of a function should not be used for returning values from a function Chapter 4 - Visual Basic Schneider
The Function Syntax Private Function FunctionName(parameter-list) As dataType Statement(s)…… ….. FunctionName = value End Function • Note: value must be of the type dataType specified in the function declaration Chapter 4 - Visual Basic Schneider
Example of a Function(using a function to change from Fahrenheit to Celsius, Reading the value from a text box) Private Sub cmdConvert_Click() picTempC.Cls picTempC.Print FtoC(Val(txtTempF.Text)) End Sub Private Function FtoC(t As Single) As Single ' Convert Fahrenheit temperature to Celsius FtoC = (5 / 9) * (t - 32) End Function Chapter 4 - Visual Basic Schneider
Example of a Function(using a function to change from Fahrenheit to Celsius, Reading the value from an input box) Private Sub cmdConvert_Click() picTempC.Cls picTempC.Print FtoC(Val(InputBox("please enter a value to convert"))) End Sub Private Function FtoC(t As Single) As Single ' Convert Fahrenheit temperature to Celsius FtoC = (5 / 9) * (t - 32) End Function Chapter 4 - Visual Basic Schneider
Example of a Sub (using a sub to change from Fahrenheit to Celsius, Reading the value from an input box)notice the difference from the previous slide. Private Sub cmdConvert_Click() Dim c As Single picTempC.Cls Call FtoC(Val(InputBox("please enter a value to convert")), c) picTempC.Print c End Sub Private Sub FtoC(f As Single, c As Single) ' Convert Fahrenheit temperature to Celsius c = (5 / 9) * (f - 32) End Sub Chapter 4 - Visual Basic Schneider
Example of a Sub (using a sub to change from Fahrenheit to Celsius, Reading the value from an input box)This example will not give a correct result because we used ( ) around c in the argument list Private Sub cmdConvert_Click() Dim c As Single picTempC.Cls Call FtoC(Val(InputBox("please enter a value to convert")), (c)) picTempC.Print c End Sub Private Sub FtoC(f As Single, c As Single) ' Convert Fahrenheit temperature to Celsius c = (5 / 9) * (f - 32) End Sub Chapter 4 - Visual Basic Schneider
Example of a Sub (using a sub to change from Fahrenheit to Celsius, Reading the value from an input box)This example will not give a correct result because we used ByVal in the parameter list Private Sub cmdConvert_Click() Dim c As Single picTempC.Cls Call FtoC(Val(InputBox("please enter a value to convert")), c) picTempC.Print c End Sub Private Sub FtoC(f As Single, ByVal c As Single) ' Convert Fahrenheit temperature to Celsius c = (5 / 9) * (f - 32) End Sub Chapter 4 - Visual Basic Schneider
Example of a Sub (using a sub to change from Fahrenheit to Celsius, Reading the value from an input box)This example will give a correct result because we used ByRef in the parameter list (removing ByRef will have the same effect) Private Sub cmdConvert_Click() Dim c As Single picTempC.Cls Call FtoC(Val(InputBox("please enter a value to convert")), c) picTempC.Print c End Sub Private Sub FtoC(f As Single, ByRef c As Single) ' Convert Fahrenheit temperature to Celsius c = (5 / 9) * (f - 32) End Sub Chapter 4 - Visual Basic Schneider
Example of a Sub (using a sub to change from Fahrenheit to Celsius, Reading the value from an input box)what about this?! Private Sub cmdConvert_Click() Dim c As Single picTempC.Cls Call FtoC(Val(InputBox("please enter a value to convert")), c) picTempC.Print c End Sub Private Sub FtoC(ByVal f As Single, c As Single) ' Convert Fahrenheit temperature to Celsius c = (5 / 9) * (f - 32) End Sub Chapter 4 - Visual Basic Schneider
Example of a Sub (using a sub to change from Fahrenheit to Celsius, Reading the value from an input box)what about this too?! Private Sub cmdConvert_Click() Dim c As Single Dim f As Single picTempC.Cls f=Val(InputBox("please enter a value to convert")) Call FtoC( f , c) picTempC.Print “The Celsius value of the Fahrenheit ” ; f ; “ is ” ; c End Sub Private Sub FtoC(ByVal f As Single, ByRef c As Single) ' Convert Fahrenheit temperature to Celsius c = (5 / 9) * (f - 32) End Sub Chapter 4 - Visual Basic Schneider
Rules for Defining and Calling a Function • User-defined function must include a statement that assigns the function name a value. • User-defined functions are called in the same way that built-in functions are called. • A user-defined function may be called in an expression. Chapter 4 - Visual Basic Schneider
Returning Value A function can receive many values Only one value can be directly returned Chapter 4 - Visual Basic Schneider
Example of a Function Private Sub cmdDetermine_Click() Dim nom As String nom = FirstName(txtFullName.Text) picFirstName.Print "The first name is “; nom End Sub Private Function FirstName(nom As String) As String Dim firstSpace As Integer firstSpace = InStr(nom, " ") FirstName = Left(nom, firstSpace - 1) End Function Chapter 4 - Visual Basic Schneider