chapter#8 general procedures
DESCRIPTION
Chapter#8 General Procedures. General Procedures. Function Procedure Sub Procedures, Part I Sub Procedures, Part II Modular Design. Devices for Modularity. Visual Basic has two ways for breaking problems into smaller pieces: Function procedures Sub procedures. Function Procedures. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/1.jpg)
1Edited By Maysoon Al-Duwais
![Page 2: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/2.jpg)
2
General ProceduresFunction ProcedureSub Procedures, Part ISub Procedures, Part IIModular Design
Edited By Maysoon Al-Duwais
![Page 3: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/3.jpg)
3
Devices for ModularityVisual Basic has two ways for breaking problems into smaller pieces:
Function proceduresSub procedures
Edited By Maysoon Al-Duwais
![Page 4: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/4.jpg)
4
Function ProceduresUser-Defined Functions Having One ParameterUser-Defined Functions Having Several
Parameters User-Defined Functions Having No Parameters User-Defined Boolean-Valued Functions
Edited By Maysoon Al-Duwais
![Page 5: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/5.jpg)
5
Some Built-In FunctionsFunction: IntExample: Int(2.6) is 2Input: numberOutput: number
Function: Math.RoundExample: Math.Round(1.23, 1) is 1.2 Input: number, numberOutput: numberEdited By Maysoon Al-Duwais
![Page 6: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/6.jpg)
6
Some Built-In Functions (continued)
Function: FormatPercentExample: FormatPercent(0.12, 2) is 12.00%Input: number, numberOutput: string
Function: FormatNumberExample: FormatNumber(12.62, 1) is 12.6 Input: number, numberOutput: string
Edited By Maysoon Al-Duwais
![Page 7: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/7.jpg)
7
Function ProceduresFunction procedures (aka user-defined
functions) always return one valueSyntax:Function FunctionName(ByVal var1 As Type1, ByVal var2 As Type2, ...) As ReturnDataType statement(s) Return expressionEnd Function
Edited By Maysoon Al-Duwais
![Page 8: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/8.jpg)
Example With One ParameterFunction FtoC(ByVal t As Double) As Double
'Convert Fahrenheit temp to Celsius
Return (5 / 9) * (t - 32)
End Function
8Edited By Maysoon Al-Duwais
![Page 9: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/9.jpg)
Header of the FtoC Function Procedure
9Edited By Maysoon Al-Duwais
![Page 10: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/10.jpg)
10
Example 1: Form
txtTemp
F
txtTemp
C
Edited By Maysoon Al-Duwais
![Page 11: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/11.jpg)
Example 1: Code Using FunctionPrivate Sub Convert(...) Handles btnCnvrt.Click
Dim fTemp, cTemp As Double
fTemp = txtTempF.Text
cTemp = FtoC(fTemp)
txtTempC.Text = cTemp
End Sub
Function FtoC(ByVal t As Double) As Double
Return (5 / 9) * (t - 32)
End Function
11Edited By Maysoon Al-Duwais
![Page 12: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/12.jpg)
Example 1: Code Without Using Function
12
Private Sub btnConvert_Click(...) _Handles btnConvert.Click Dim fTemp, cTemp As Double
fTemp = txtTempF.Text
cTemp = (5 / 9) * (fTemp - 32)
txtTempC.Text = cTemp
End Sub
Edited By Maysoon Al-Duwais
![Page 13: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/13.jpg)
13
Example 1: Output
Edited By Maysoon Al-Duwais
![Page 14: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/14.jpg)
14
User-Defined Function Having Several Parameters
Function Pay(ByVal wage As Double, ByVal hrs As Double) As Double Dim amt As Double ‘ Total amount of salary per hour Select Case hrs Case Is <= 40 amt = wage * hrs Case Is > 40 ‘the wage (salary/hour) increases 50% per every extra hour (extra hours >40)
amt = wage * 40 +(0.5 * wage * (hrs – 40)) End Select Return amt End Function
Edited By Maysoon Al-Duwais
![Page 15: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/15.jpg)
15
Example 3: Form
txtWage
txtHours
txtEarnings
Edited By Maysoon Al-Duwais
![Page 16: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/16.jpg)
Example 3: Partial CodePrivate Sub btnCalculate_Click(...) _
Handles btnCalculate.Click
Dim hourlyWage, hoursWorkded As Double
hourlyWage = txtWage.Text
hoursWorked = txtHours.Text
txtEarnings.Text =
FormatCurrency(Pay(hourlyWage, hoursWorked))
End Sub
16
Function call
Edited By Maysoon Al-Duwais
![Page 17: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/17.jpg)
17
Example 3: Output
Edited By Maysoon Al-Duwais
![Page 18: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/18.jpg)
18
User-Defined Function Having No Parameters
Function CostOfItem() As Double Dim price As Double = CDbl(txtPrice.Text) Dim quantity As Integer = CDbl(txtQuantity.Text) Dim cost = price * quantity Return costEnd Function
Edited By Maysoon Al-Duwais
![Page 19: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/19.jpg)
19
User-Defined Function Having Several Parameters
Function Pay(ByVal wage As Double, ByVal hrs As Double) As Double Dim amt As Double ‘ Total amount of salary Select Case hrs Case Is <= 40 amt = wage * hrs Case Is > 40 ‘the wage (salary/hour) increases 50% per every extra hour (extra hours >40)
amt = wage * 40 +(0.5 * wage * (hrs – 40)) End Select Return amt End Function
Edited By Maysoon Al-Duwais
![Page 20: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/20.jpg)
20
Example 3: Form
txtWage
txtHours
txtEarnings
Edited By Maysoon Al-Duwais
![Page 21: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/21.jpg)
Example 3: Partial CodePrivate Sub btnCalculate_Click(...) _
Handles btnCalculate.Click
Dim hourlyWage, hoursWorkded As Double
hourlyWage = txtWage.Text
hoursWorked = txtHours.Text
txtEarnings.Text = Pay(hourlyWage, hoursWorked)
End Sub
21
Function call
Edited By Maysoon Al-Duwais
![Page 22: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/22.jpg)
22
Example 3: Output
Edited By Maysoon Al-Duwais
![Page 23: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/23.jpg)
23
User-Defined Function Having No Parameters
Function CostOfItem() As Double Dim price As Double = CDbl(txtPrice.Text) Dim quantity As Integer = CDbl(txtQuantity.Text) Dim cost = price * quantity Return costEnd Function
Edited By Maysoon Al-Duwais
![Page 24: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/24.jpg)
24
User-Defined Boolean-Valued Function
Function IsVowelWord(ByVal word As String) As Boolean If word.IndexOf("A") = -1 Then Return False End If . . If word.IndexOf("U") = -1 Then Return False End If Return TrueEnd Function
Edited By Maysoon Al-Duwais
![Page 25: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/25.jpg)
25
Sub Procedures, Part IDefining and Calling Sub ProceduresVariables and Expressions as ArgumentsSub Procedures Calling Other Sub
Procedures
Edited By Maysoon Al-Duwais
![Page 26: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/26.jpg)
26
General Form of Sub Procedure
Edited By Maysoon Al-Duwais
![Page 27: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/27.jpg)
27
Calling a Sub ProcedureThe statement that invokes /calls a Sub
procedure is referred to as a calling statement.
A calling statement looks like this:
ProcedureName(arg1, arg2,..., argN)
Edited By Maysoon Al-Duwais
![Page 28: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/28.jpg)
28
Naming Sub ProceduresThe rules for naming Sub procedures are the same as the rules for naming variables.
Edited By Maysoon Al-Duwais
![Page 29: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/29.jpg)
29
Passing Values DisplaySum( 2, 3 )
Sub DisplaySum(ByVal num1 As Double, ByVal num2 _ As Double) Dim z As Double z = num1 + num2 lstOutput.Items.Add("The sum of " & num1 & " and " & num2 & " is " & z & ".")End Sub
In the Sub procedure, 2 will be stored in num1 and 3 will be stored in num2
Edited By Maysoon Al-Duwais
![Page 30: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/30.jpg)
30
Arguments and Parameters Sum(2, 3)
Sub DisplaySum(ByVal num1 As Double, ByVal num2 _
As Double)
arguments
parameters
displayed automatica
lly
Edited By Maysoon Al-Duwais
![Page 31: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/31.jpg)
31
Several Calling StatementsDisplaySum(2, 3)
DisplaySum(4, 6)
DisplaySum(7, 8)
Output:The sum of 2 and 3 is 5.
The sum of 4 and 6 is 10
The sum of 7 and 8 is 15.
Edited By Maysoon Al-Duwais
![Page 32: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/32.jpg)
32
Passing Strings and Numbers Demo("CA", 38)
Sub Demo(ByVal state As String, ByVal pop _ As Double)
lstOutput.Items.Add = state &
" has population " & pop & " million."End Sub
Note: The statement Demo(38, "CA") would not be valid. The types of the arguments must be in the same order as the types of the parameters.
Edited By Maysoon Al-Duwais
![Page 33: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/33.jpg)
33
Variables and Expressions as ArgumentsDim s As String = "CA" Dim p As Double = 19Demo(s, 2 * p)
Sub Demo(ByVal state As String, ByVal pop _ As Double) lstOutput.Items.Add = state & " has population " & pop & " million."End Sub
Note: The argument names need not match the parameter names. For instance, s versus state.
Edited By Maysoon Al-Duwais
![Page 34: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/34.jpg)
Sub Procedure Having No Parameters
Sub DescribeTask()
lstBox.Items.Clear()
lstBox.Items.Add("This program displays")
lstBox.Items.Add("the name and population")
lstBox.Items.Add("of a state.")
End Sub
34Edited By Maysoon Al-Duwais
![Page 35: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/35.jpg)
35
Sub Procedure Calling Another Sub Procedure
Private Sub btnDisplay_Click(...) Handles _ btnDisplay.Click Demo("CA", 37) End Sub
Sub Demo(ByVal state As String, ByVal pop _ As Double) DescribeTask() lstOutput.Items.Add("") lstOutput.Items.Add = state & " has population " & pop & " million."End Sub
Edited By Maysoon Al-Duwais
![Page 36: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/36.jpg)
Output
This program displays
the name and population
of a state.
CA has population 37 million.
36Edited By Maysoon Al-Duwais
![Page 37: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/37.jpg)
37
Sub Procedures, Part IIPassing by Value Passing by ReferenceSub Procedures that Return a Single ValueLifetime and Scope of Variables and
ConstantsDebugging
Edited By Maysoon Al-Duwais
![Page 38: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/38.jpg)
38
ByVal and ByRef Parameters in Sub procedure headers are
proceeded by ByVal or ByRefByVal stands for By ValueByRef stands for By Reference
Edited By Maysoon Al-Duwais
![Page 39: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/39.jpg)
39
Passing by Value When a variable argument is passed to a
ByVal parameter, just the value of the argument is passed.
After the Sub procedure ends, the variable has its original value.
Edited By Maysoon Al-Duwais
![Page 40: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/40.jpg)
40
Example Public Sub btnOne_Click (...) Handles _btnOne.Click
Dim n As Double = 4
Triple(n)
txtBox1.Text = “n = “ & n
End Sub
Sub Triple(ByVal num As Double)
num = 3 * num
txtBox2.Text = “num = “ & numEnd Sub
Output: num = 12
n = 4
Argument name (n) is different than parameter name (num)
12 4num
Memory (RAM):
n
Edited By Maysoon Al-Duwais
![Page 41: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/41.jpg)
41
Same Example: n num Public Sub btnOne_Click (...) Handles _btnOne.Click
Dim num As Double = 4
Triple(num)
txtBox1.Text = “2. num = “ & num
End Sub
Sub Triple(ByVal num As Double)
num = 3 * num
txtBox2.Text = “1. num = “ & num
End Sub
Output: 1. num = 12
2. num = 4
Argument name (num) is same as the parameter name (num)
12 4num
Memory (RAM):
num
Edited By Maysoon Al-Duwais
![Page 42: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/42.jpg)
42
Passing by Reference When a variable argument is passed to a
ByRef parameter, the parameter is given the same memory location as the argument.
After the Sub procedure terminates, the variable has the value of the parameter.
Edited By Maysoon Al-Duwais
![Page 43: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/43.jpg)
43
ExamplePublic Sub btnOne_Click (...) Handles _
btnOne.Click Dim num As Double = 4 Triple(num) txtBox2.Text = “2. num = “ & num End Sub
Sub Triple(ByRef num As Double) num = 3 * num txtBox1.Text = “1. num = “ & numEnd Sub
Output:1. num = 12
2. num = 12
Argument name (num) is the same as parameter name (num)
4 12num
Memory (RAM):
X
Edited By Maysoon Al-Duwais
![Page 44: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/44.jpg)
44
Example: num n Private Sub btnOne_Click(...) Handles _btnOne_Click
Dim n As Double = 4
Triple(n)
txtBox1.Text = “n = “ & num
End Sub
Sub Triple(ByRef num As Double)
num = 3 * num
txtBox1.Text = “num = “ & num
End Sub
Output: num = 12
n = 12
Argument name (n) is different than parameter name (num)
num
Memory (RAM):
n4
12X
Edited By Maysoon Al-Duwais
![Page 45: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/45.jpg)
Most Common Use of ByRef: Get Input (Read Input)
Sub InputData(ByRef wage As Double,
ByRef hrs As Double)
wage = CDbl(txtWage.Text)
hrs = CDbl(txtHours.Text)
End Sub
45Edited By Maysoon Al-Duwais
![Page 46: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/46.jpg)
46
Lifetime and Scope of a Variable Lifetime: Period during which it remains in
memory.Scope: In Sub procedures, defined same as in
event procedures.Suppose a variable is declared in procedure A
that calls procedure B. While procedure B executes, the variable is alive, but out of scope.
Edited By Maysoon Al-Duwais
![Page 47: Chapter#8 General Procedures](https://reader036.vdocuments.net/reader036/viewer/2022062309/56814f3d550346895dbce57e/html5/thumbnails/47.jpg)
47
Functions vs. Sub proceduresBoth can perform similar tasksBoth can call other proceduresUse a function when you want to return one
and only one value
Edited By Maysoon Al-Duwais