Chapter 5 - General Procedures
description
Transcript of Chapter 5 - General Procedures
![Page 1: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/1.jpg)
1
Chapter 5 - General Procedures
5.1 Function Procedures
5.2 Sub Procedures, Part I
5.3 Sub Procedures, Part II
5.4 Modular Design
![Page 2: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/2.jpg)
2
Devices for Modularity
Visual Basic has two devices for breaking problems into smaller pieces:
• Function procedures
• Sub procedures
![Page 3: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/3.jpg)
3
5.1 Function Procedures
• Functions Having One Parameter
• Passing by Value
• Restriction on Data Types
• Functions Having Several Parameters
• Boolean-Valued Functions
![Page 4: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/4.jpg)
4
Some Built-In Functions
Function: IntExample: Int(2.6) is 2Input: numberOutput: number
Function: Math.RoundExample: Math.Round(1.23, 1) is 1.2 Input: number, numberOutput: number
![Page 5: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/5.jpg)
5
Some Built-In Functions (continued)
Function: ChrExample: Chr(65) is AInput: numberOutput: string
Function: AscExample: Asc("Apple") is 65 Input: stringOutput: number
![Page 6: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/6.jpg)
6
Function Procedures
• Function procedures (aka user-defined functions) always return one value
• Syntax:Function FunctionName(var1 As Type1, var2 As Type2, ...) As ReturnDataType statement(s) Return expressionEnd Function
![Page 7: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/7.jpg)
Example with One Parameter
Function FtoC(t As Double) As Double
'Convert Fahrenheit temp to Celsius
Return (5 / 9) * (t - 32)
End Function
7
![Page 8: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/8.jpg)
Header of the FtoC Function Procedure
8
![Page 9: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/9.jpg)
9
Example 1: Form
txtTempF
txtTempC
![Page 10: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/10.jpg)
Example 1: Code
Private Sub btnConvert_Click(...) _ Handles btnConvert.Click Dim fahrenheitTemp, celsiusTemp As Double
fahrenheitTemp = CDbl(txtTempF.Text)
celsiusTemp = FtoC(fahrenheitTemp)
txtTempC.Text = CStr(celsiusTemp )
End Sub
Function FtoC(t As Double) As Double
Return (5 / 9) * (t - 32)
End Function
10
![Page 11: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/11.jpg)
11
Example 1: Output
![Page 12: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/12.jpg)
Example with One Parameter
Function FirstName(fullName As String) As String
'Extract first name from full name
Dim firstSpace As Integer
firstSpace = fullName.IndexOf(" ")
Return fullName.Substring(0, firstSpace)
End Function
12
![Page 13: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/13.jpg)
13
Example 2: Form
txtFullName
txtFirstName
![Page 14: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/14.jpg)
Example 2: Code
Private Sub btnDetermine_Click(...) _
Handles btnDetermine.Click
Dim fullName As String fullName = txtFullName.Text txtFirstName.Text = FirstName(fullName)End Sub
Function FirstName(fullName As String) As String Dim firstSpace As Integer firstSpace = name.IndexOf(" ") Return name.Substring(0, firstSpace)End Function
14
![Page 15: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/15.jpg)
15
Example 2: Output
![Page 16: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/16.jpg)
16
User-Defined Function Having Several Parameters
Function Pay(wage As Double, hrs As Double) As Double Dim amt As Double 'amount of salary Select Case hrs Case Is <= 40 amt = wage * hrs Case Is > 40 amt = wage * 40 +(1.5 * wage * (hrs – 40)) End Select Return amt End Function
![Page 17: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/17.jpg)
17
Example 3: Form
txtWage
txtHours
txtEarnings
![Page 18: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/18.jpg)
Example 3: Partial Code
Private Sub btnCalculate_Click(...) _
Handles btnCalculate.Click
Dim hourlyWage, hoursWorkded As Double
hourlyWage = CDbl(txtWage.Text)
hoursWorked = CDbl(txtHours.Text)
txtEarnings.Text =
(Pay(hourlyWage, hoursWorked)).ToString("C")
End Sub
18
Function call
![Page 19: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/19.jpg)
19
Example 3: Output
![Page 20: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/20.jpg)
20
User-Defined Boolean-Valued Function
Function IsVowelWord(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
![Page 21: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/21.jpg)
21
5.2 Sub Procedures, Part I
• Defining and Calling Sub Procedures
• Variables and Expressions as Arguments
• Sub Procedures Having No Parameters
• Sub Procedures Calling Other Sub Procedures
![Page 22: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/22.jpg)
22
General Form of Sub Procedure
Sub ProcedureName(par1 As Type1, par2 As Type2, _
..., parN As TypeN) statement(s) End Sub
![Page 23: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/23.jpg)
23
Calling a Sub Procedure
• The statement that invokes a Sub procedure is referred to as a calling statement.
• A calling statement looks like this:
ProcedureName(arg1, arg2,..., argN)
![Page 24: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/24.jpg)
24
Naming Sub Procedures
The rules for naming Sub procedures are the same as the rules for naming variables.
![Page 25: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/25.jpg)
25
Passing Values
DisplaySum(2, 3)
Sub DisplaySum(num1 As Double, 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
![Page 26: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/26.jpg)
26
Arguments and Parameters
Sum(2, 3)
Sub DisplaySum(num1 As Double, num2 As Double)
arguments
parameters
![Page 27: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/27.jpg)
27
Several Calling Statements
DisplaySum(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.
![Page 28: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/28.jpg)
28
Passing Strings and Numbers
Demo("CA", 38)
Sub Demo(state As String, 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.
![Page 29: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/29.jpg)
29
Variables and Expressions as Arguments
Dim s As String = "CA" Dim p As Double = 19Demo(s, 2 * p)
Sub Demo(state As String, 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.
![Page 30: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/30.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
30
![Page 31: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/31.jpg)
31
Sub Procedure Calling Another Sub Procedure
Private Sub btnDisplay_Click(...) Handles _ btnDisplay.Click Demo("CA", 38) End Sub
Sub Demo(state As String, pop As Double) DescribeTask() lstOutput.Items.Add("") lstOutput.Items.Add = state & " has population " & pop & " million."End Sub
![Page 32: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/32.jpg)
Output
This program displays
the name and population
of a state.
CA has population 38 million.
32
![Page 33: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/33.jpg)
33
5.3 Sub Procedures, Part II
• Passing by Value
• Passing by Reference
• Sub Procedures that Return a Single Value
• Scope and Lifetime of Variables and Constants
• Debugging
![Page 34: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/34.jpg)
34
ByVal and ByRef
• Parameters in Sub procedure headers can be proceeded by ByRef
• ByRef stands for By Reference
![Page 35: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/35.jpg)
35
Passing by Value
• When a variable argument is passed to a parameter not preceded with ByRef, just the value of the argument is passed.
• After the Sub procedure terminates, the variable has its original value.
![Page 36: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/36.jpg)
36
Example
Public Sub btnOne_Click (...) Handles _ btnOne.Click Dim n As Double = 4
Triple(n)
txtBox.Text = CStr(n)
End Sub
Sub Triple(num As Double)
num = 3 * num
End Sub
Output: 4
![Page 37: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/37.jpg)
37
Same Example: n num
Public Sub btnOne_Click (...) Handles _
btnOne.Click
Dim num As Double = 4
Triple(num)
txtBox.Text = CStr(num)
End Sub
Sub Triple(num As Double)
num = 3 * num
End Sub
Output: 4
![Page 38: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/38.jpg)
38
Passing by Reference
• When a variable argument is passed to a parameter preceded by ByRef, the parameter is given the same memory location as the argument.
• After the Sub procedure terminates, the variable has the value of the parameter.
![Page 39: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/39.jpg)
39
Example
Public Sub btnOne_Click (...) Handles _
btnOne.Click Dim num As Double = 4 Triple(num) txtBox.Text = CStr(num)End Sub
Sub Triple(ByRef num As Double) num = 3 * numEnd Sub
Output: 12
![Page 40: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/40.jpg)
40
Example: num n
Private Sub btnOne_Click(...) Handles _
btnOne_Click
Dim n As Double = 4
Triple(n)
txtBox.Text = CStr(n)
End Sub
Sub Triple(ByRef num As Double)
num = 3 * num
End Sub
Output: 12
![Page 41: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/41.jpg)
Most Common Use of ByRef: Get Input
Sub InputData(ByRef wage As Double,
ByRef hrs As Double)
wage = CDbl(txtWage.Text)
hrs = CDbl(txtHours.Text)
End Sub
41
![Page 42: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/42.jpg)
Sub Procedures that Return a Single Value with ByRef
• Should be avoided
• Usually can be replaced with a Function procedure
42
![Page 43: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/43.jpg)
43
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.
![Page 44: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/44.jpg)
44
Debugging
• Programs with Sub procedures are easier to debug
• Each Sub procedure can be checked individually before being placed into the program
![Page 45: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/45.jpg)
45
Comparing Function Procedures with Sub Procedures
• Sub procedures are accessed using a calling statement
• Functions are called where you would expect to find a literal or expression
• For example:
• result = functionCall
• lstBox.Items.Add (functionCall)
![Page 46: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/46.jpg)
46
Functions vs. Procedures
• Both can perform similar tasks
• Both can call other procedures
• Use a function when you want to return one and only one value
![Page 47: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/47.jpg)
47
5.4 Modular Design
• Top-Down Design
• Structured Programming
• Advantages of Structured Programming
• Object-Oriented Programming
![Page 48: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/48.jpg)
48
Design Terminology
• Large programs can be broken down into smaller problems
• divide-and-conquer approach called stepwise refinement
• Stepwise refinement is part of top-down design methodology
![Page 49: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/49.jpg)
49
Top-Down Design
• General problems are at the top of the design
• Specific tasks are near the end of the design
• Top-down design and structured programming are techniques to enhance programmers' productivity
![Page 50: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/50.jpg)
50
Top-Down Design Criteria
1. The design should be easily readable and emphasize small module size.
2. Modules proceed from general to specific as you read down the chart.
3. The modules, as much as possible, should be single minded. That is, they should only perform a single well-defined task.
4. Modules should be as independent of each other as possible, and any relationships among modules should be specified.
![Page 51: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/51.jpg)
51
Beginning of Hierarchy Chart
![Page 52: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/52.jpg)
52
Detailed Hierarchy Chart
![Page 53: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/53.jpg)
53
Structured Programming
Control structures in structured programming:• Sequences: Statements are executed one
after another.• Decisions: One of two blocks of program code
is executed based on a test of a condition.• Loops (iteration): One or more statements are
executed repeatedly as long as a specified condition is true.
![Page 54: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/54.jpg)
54
Advantages of Structured Programming
Goal to create correct programs that are easier to
• write
• understand• modify
![Page 55: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/55.jpg)
55
Easy to Write
• Allows programmer to first focus on the big picture and take care of the details later
• Several programmers can work on the same program at the same time
• Code that can be used in many programs is said to be reusable
![Page 56: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/56.jpg)
56
Easy to Debug
• Procedures can be checked individually
• A driver program can be set up to test modules individually before the complete program is ready.
• Using a driver program to test modules (or stubs) is known as stub testing.
![Page 57: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/57.jpg)
57
Easy to Understand
• Interconnections of the procedures reveal the modular design of the program.
• The meaningful procedure names, along with relevant comments, identify the tasks performed by the modules.
• The meaningful procedure names help the programmer recall the purpose of each procedure.
![Page 58: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/58.jpg)
58
Easy to Change
• Because a structured program is self-documenting, it can easily be deciphered by another programmer.
![Page 59: Chapter 5 - General Procedures](https://reader035.fdocuments.us/reader035/viewer/2022062309/56814674550346895db398fd/html5/thumbnails/59.jpg)
59
Object-Oriented Programming
• an encapsulation of data and code that operates on the data
• objects have properties, respond to methods, and raise events.