procedures and modular design · •avoid logical errors •efficiency •debugging. chapter 4 - vb...
TRANSCRIPT
![Page 1: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/1.jpg)
Chapter 4 - VB 2005 by Schneider 1
Procedures and Modular Design
September 20, 2006
![Page 2: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/2.jpg)
Chapter 4 - VB 2005 by Schneider 2
Today…
• On to Chapter 4
![Page 3: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/3.jpg)
Chapter 4 - VB 2005 by Schneider 3
Friday…
• Assignment 2!
![Page 4: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/4.jpg)
Chapter 4 - VB 2005 by Schneider 4
Chapter 4 - GeneralProcedures
• 4.1 Sub Procedures, Part I
• 4.2 Sub Procedures, Part II
• 4.3 Function Procedures
• 4.4 Modular Design
Procedures are an important part ofprogramming in general…
![Page 5: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/5.jpg)
Chapter 4 - VB 2005 by Schneider 5
4.1 Sub Procedures, Part I
• Sub Procedures
• Variables and Expressions as Arguments
• Calling Other Sub Procedures
![Page 6: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/6.jpg)
Chapter 4 - VB 2005 by Schneider 6
Devices for modularity
• Why do we want to split things up?• Readability
• Avoid logical errors
• Efficiency
• Debugging
![Page 7: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/7.jpg)
Chapter 4 - VB 2005 by Schneider 7
Devices for modularity
• Visual Basic has two devices forbreaking problems into smaller pieces:• Sub procedures
• Function procedures
![Page 8: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/8.jpg)
Chapter 4 - VB 2005 by Schneider 8
Sub Procedures
• Perform one or more related tasks
• General syntax
Sub ProcedureName()
statements
End Sub
![Page 9: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/9.jpg)
Chapter 4 - VB 2005 by Schneider 9
Calling a Sub procedure
• The statement that invokes a Subprocedure is also referred to as a callstatement.
• A call statement looks like this:ProcedureName()
![Page 10: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/10.jpg)
Chapter 4 - VB 2005 by Schneider 10
Naming Sub procedures
• The rules for naming Sub procedures arethe same as the rules for namingvariables.
• You can choose whatever you like……but ultimately, the best choice is astrong description of what the proceduredoes…• E.g. AddTwoNums()
![Page 11: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/11.jpg)
Chapter 4 - VB 2005 by Schneider 11
Sub ExplainPurpose()
ExamplelstBox.Items.Clear()ExplainPurpose()lstBox.Items.Add("")
lstBox.Items.Add("Program displays a sentence")
lstBox.Items.Add("identifying a sum.")
End Sub
![Page 12: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/12.jpg)
Chapter 4 - VB 2005 by Schneider 12
Passing Values• You can send values to a Sub procedure Sum(2, 3)
Sub Sum(ByVal num1 As Double, ByVal num2 As Double) lstBox.Items.Add("The sum of " & num1 & " and " _ & num2 & " is " & (num1 + num2) & "."End Sub
• In the Sum Sub procedure, 2 will be stored in num1 and 3will be stored in num2
![Page 13: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/13.jpg)
Chapter 4 - VB 2005 by Schneider 13
Arguments and Parameters
• Sum(2, 3)
Sub Sum(ByVal num1 As Double, ByVal num2 As Double)
arguments
parameters
displayedautomatically
![Page 14: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/14.jpg)
Chapter 4 - VB 2005 by Schneider 14
Several Calling StatementsExplainPurpose()Sum(2, 3)Sum(4, 6)Sum(7, 8)
Output:Program displays a sentence identifying a sum.The sum of 2 and 3 is 5.The sum of 4 and 6 is 10The sum of 7 and 8 is 15.
![Page 15: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/15.jpg)
Chapter 4 - VB 2005 by Schneider 15
Passing Strings and Numbers
• Demo("CA", 34)
Sub Demo(ByVal state As String, ByVal pop As Double) txtBox,Text = state & " has population " & pop & _ " million."End Sub
• Note: The statement Demo(34, "CA") would not be valid.The types of the arguments must be in the same order asthe types of the parameters.
![Page 16: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/16.jpg)
Chapter 4 - VB 2005 by Schneider 16
Variables and Expressions asArguments
Dim s As String = "CA"Dim p As Double = 17Demo(s, 2 * p)
Sub Demo(ByVal state As String, ByVal pop As Double) txtBox.Text = state & " has population " & pop & _ " million."End Sub
• Note: The variable names in the arguments need not matchthe parameter names. For instance, s versus state..
![Page 17: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/17.jpg)
Chapter 4 - VB 2005 by Schneider 17
CallingA Sub procedure can call another Sub procedure.
Private Sub btnAdd_Click(...) Handles btnAdd.Click Sum(2, 3) End Sub
Sub Sum(ByVal num1 As Double, ByVal num2 As Double) DisplayPurpose() lstBox.Items.Add("The sum of " & num1 & " and " _ & num2 & " is " & (num1 + num2) & "."End Sub
![Page 18: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/18.jpg)
Chapter 4 - VB 2005 by Schneider 18
4.2 Sub Procedures, Part II
• Passing by Value
• Passing by Reference
• Local Variables
• Class-Level Variables
• Debugging
![Page 19: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/19.jpg)
Chapter 4 - VB 2005 by Schneider 19
ByVal and ByRef
• Parameters in Sub procedure headersare proceeded by ByVal or ByRef
• ByVal stands for By Value
• ByRef stands for By Reference
![Page 20: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/20.jpg)
Chapter 4 - VB 2005 by Schneider 20
Passing by Value
• When a variable argument is passed to aByVal parameter, just the value of theargument is passed.
• After the Sub procedure terminates, thevariable has its original value.
![Page 21: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/21.jpg)
Chapter 4 - VB 2005 by Schneider 21
Example
Dim n As Double = 4 Triple(n) txtBox.Text = CStr(n)End Sub
Sub Triple(ByVal num As Double) num = 3 * numEnd Sub
Output: 4
![Page 22: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/22.jpg)
Chapter 4 - VB 2005 by Schneider 22
Same Example: n num
Dim num As Double = 4 Triple(num) txtBox.Text = CStr(num)End Sub
Sub Triple(ByVal num As Double) num = 3 * numEnd Sub
Output: 4
![Page 23: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/23.jpg)
Chapter 4 - VB 2005 by Schneider 23
Passing by Reference
• When a variable argument is passed to aByRef parameter, the parameter is giventhe same memory location as theargument.
• After the Sub procedure terminates, thevariable has the value of the parameter.
![Page 24: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/24.jpg)
Chapter 4 - VB 2005 by Schneider 24
ExamplePublic 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 25: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/25.jpg)
Chapter 4 - VB 2005 by Schneider 25
Example: num nPrivate 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 * numEnd Sub
Output: 12
![Page 26: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/26.jpg)
Chapter 4 - VB 2005 by Schneider 26
ByVal and ByRef
Memory Location 1
ByVal Procedure Parameter
16
ByRef ProcedureParameter
Memory Location 116
This refers toanything stored in
this memory location
This refers to the value ofwhatever is in this
memory location…not thelocation itself
Any changes to this, donot effect what is storedin the memory location
1…it’s just a copy
Any changes to this doeffect what is stored in
the memory location 1…it’s not a copy
![Page 27: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/27.jpg)
Chapter 4 - VB 2005 by Schneider 27
Local Variable
• A variable declared inside a Subprocedure with a Dim statement
• Space is reserved in memory for thatvariable until the End Sub…• …then the variable ceases to exist
![Page 28: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/28.jpg)
Chapter 4 - VB 2005 by Schneider 28
Local VariablesPrivate Sub btnOne_Click(...) Handles btnOne_Click Dim num As Integer = 4 SetFive() txtBox.Text = CStr(num)End Sub
Sub SetFive() Dim num As Integer = 5End Sub
Output: 4
![Page 29: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/29.jpg)
Chapter 4 - VB 2005 by Schneider 29
Local VariablesPrivate Sub btnOne_Click(...) Handles btnOne_Click Dim num As Integer = 4 SetFive() txtBox.Text = CStr(num)End Sub
Sub SetFive() Dim num As Integer = 5End Sub
Output: 4
num only existswithin this sub
procedure
this num iscompletely
unrelated to theone above
![Page 30: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/30.jpg)
Chapter 4 - VB 2005 by Schneider 30
Class-Level Variables
• Visible to every procedure in a form’scode without being passed
• Dim statements for class-level variablesare placed• Outside all procedures
• At the top of the program region
![Page 31: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/31.jpg)
Chapter 4 - VB 2005 by Schneider 31
Class-Level VariablesDim num As Integer = 4
Private Sub btnOne_Click(...) Handles btnOne_ClicktxtBox.Text = CStr(num)
SetFive() txtBox.Text &= CStr(num)End Sub
Sub SetFive() num = 5End Sub
Output: 45
![Page 32: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/32.jpg)
Chapter 4 - VB 2005 by Schneider 32
Scope
• The scope of a variable is the portion ofthe program that can refer to it.
• In other words, the parts of the programthat can access that variable…
• …a variable is out of scope if it cannot bereferred to in that particular codesegment
![Page 33: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/33.jpg)
Chapter 4 - VB 2005 by Schneider 33
Scope
• Class-level variables have class-levelscope and are available to allprocedures in the class.
• Variables declared inside a procedurehave local scope and are only availableto the procedure in which they aredeclared.
![Page 34: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/34.jpg)
Chapter 4 - VB 2005 by Schneider 34
Debugging
• Programs with Sub procedures areeasier to debug
• Each Sub procedure can be checkedindividually before being placed into theprogram• This is sometimes called modularity
![Page 35: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/35.jpg)
Chapter 4 - VB 2005 by Schneider 35
4.3 Function Procedures
• User-Defined Functions Having SeveralParameters
• Comparing Function Procedures withSub Procedures
• Collapsing a Procedure with a RegionDirective
![Page 36: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/36.jpg)
Chapter 4 - VB 2005 by Schneider 36
Some Built-In FunctionsFunction Example Input Output
Int Int(2.6) is 2 number number
Math.Round Math.Round(1.23,1)is 1.2
number, number number
FormatPercent FormatPercent(.12)is 12.00%
number string
FormatNumber FormatNumber(12345.628, 1) is12,345.6
number, number string
![Page 37: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/37.jpg)
Chapter 4 - VB 2005 by Schneider 37
Function Procedures
• Function procedures (aka user-definedfunctions) always return one value
• Syntax:Function FunctionName(ByVal var1 As Type1, _ ByVal var2 As Type2, _ …) As dataType statement(s) Return expressionEnd Function
![Page 38: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/38.jpg)
Chapter 4 - VB 2005 by Schneider 38
Example: Form
txtFullName
txtFirstName
![Page 39: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/39.jpg)
Chapter 4 - VB 2005 by Schneider 39
Example: CodePrivate Sub btnDetermine_Click(...) _ Handles btnDetermine.Click Dim name As String name = txtFullName.Text txtFirstName.Text = FirstName(name)End Sub
Function FirstName(ByVal name As String) As String Dim firstSpace As Integer firstSpace = name.IndexOf(" ") Return name.Substring(0, firstSpace)End Function
Functioncall
Returnstatement
![Page 40: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/40.jpg)
Chapter 4 - VB 2005 by Schneider 40
Example: CodePrivate Sub btnDetermine_Click(...) _ Handles btnDetermine.Click Dim name As String name = txtFullName.Text txtFirstName.Text = FirstName(name)End Sub
Function FirstName(ByVal name As String) As String Dim firstSpace As Integer firstSpace = name.IndexOf(" ") Return name.Substring(0, firstSpace)End Function
the functioncall
"becomes"the value it
returns
![Page 41: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/41.jpg)
Chapter 4 - VB 2005 by Schneider 41
Example: Form
txtSideOne
txtSideTwo
txtHyp
![Page 42: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/42.jpg)
Chapter 4 - VB 2005 by Schneider 42
Example: CodePrivate Sub btnCalculate_Click(...) _ Handles btnCalculate.Click Dim a, b As Double a = CDbl(txtSideOne.Text) b = CDbl(txtSideTwo.Text) txtHyp.Text = CStr(Hypotenuse(a, b))End Sub
Function Hypotenuse(ByVal a As Double, _ ByVal b As Double) As Double Return Math.Sqrt(a ^ 2 + b ^ 2)End Function
![Page 43: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/43.jpg)
Chapter 4 - VB 2005 by Schneider 43
User-Defined Function HavingNo Parameters
Private Sub btnDisplay_Click(...) _ Handles btnDisplay.Click txtBox.Text = Saying()End Sub
Function Saying() As String Dim strVar As String strVar = InputBox("What is your" _ & " favorite saying?") Return strVarEnd Function
![Page 44: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/44.jpg)
Chapter 4 - VB 2005 by Schneider 44
Comparing Function Procedureswith Sub Procedures
• Subs are accessed using a callstatement
• Functions are called where you wouldexpect to find a literal or expression
• For example:• result = functionCall
• lstBox.Items.Add (functionCall)
![Page 45: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/45.jpg)
Chapter 4 - VB 2005 by Schneider 45
Comparing Function Procedureswith Sub Procedures
• Subs are accessed using a callstatement
• Functions are called where you wouldexpect to find a literal or expression
• For example:• result = 5
• lstBox.Items.Add (“some string”)
![Page 46: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/46.jpg)
Chapter 4 - VB 2005 by Schneider 46
Comparing Function Procedureswith Sub Procedures
• Subs are accessed using a callstatement
• Functions are called where you wouldexpect to find a literal or expression
• For example:• result = functionCall
• lstBox.Items.Add (functionCall)
![Page 47: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/47.jpg)
Chapter 4 - VB 2005 by Schneider 47
Functions vs. Procedures
• Both can perform similar tasks
• Both can call other subs and functions
• Use a function when you want to returnone and only one value
![Page 48: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/48.jpg)
Chapter 4 - VB 2005 by Schneider 48
Collapsing a Procedure with aRegion Directive
• A procedure can be collapsed behind acaptioned rectangle
• This task is carried out with a Region directive.• To specify a region, precede the code to be
collapsed with a line of the form#Region "Text to be displayed in the box."
• and follow the code with the line#End Region
• Makes code more readable
![Page 49: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/49.jpg)
Chapter 4 - VB 2005 by Schneider 49
Region Directives
![Page 50: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/50.jpg)
Chapter 4 - VB 2005 by Schneider 50
Collapsed Regions
![Page 51: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/51.jpg)
Chapter 4 - VB 2005 by Schneider 51
4.4 Modular Design
• Top-Down Design
• Structured Programming
• Advantages of Structured Programming
![Page 52: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/52.jpg)
Chapter 4 - VB 2005 by Schneider 52
Design Terminology
• Large programs can be broken downinto smaller problems
• "divide-and-conquer" approach called"stepwise refinement"
• Stepwise refinement is part of top-downdesign methodology
![Page 53: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/53.jpg)
Chapter 4 - VB 2005 by Schneider 53
Top-Down Design
• General problems are at the top of thedesign
• Specific tasks are near the end of thedesign
• Top-down design and structuredprogramming are techniques to enhanceprogrammers' productivity
![Page 54: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/54.jpg)
Chapter 4 - VB 2005 by Schneider 54
Top-Down Design Criteria1. 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 onlyperform a single well-defined task.
4. Modules should be as independent of eachother as possible, and any relationshipsamong modules should be specified.
![Page 55: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/55.jpg)
Chapter 4 - VB 2005 by Schneider 55
Top-Level Design HierarchyChart
![Page 56: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/56.jpg)
Chapter 4 - VB 2005 by Schneider 56
Detailed Hierarchy Chart
![Page 57: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/57.jpg)
Chapter 4 - VB 2005 by Schneider 57
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 for somecondition.
• Loops (iteration): One or more statementsare executed repeatedly as long as a specifiedcondition is true.
![Page 58: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/58.jpg)
Chapter 4 - VB 2005 by Schneider 58
Advantages of StructuredProgramming
• Goal to create correct programs that areeasier to• write
• understand
• modify
• "GOTO –less" programming
![Page 59: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/59.jpg)
Chapter 4 - VB 2005 by Schneider 59
Comparison of Flow Charts
![Page 60: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/60.jpg)
Chapter 4 - VB 2005 by Schneider 60
Easy to Write
• Allows programmer to first focus on thebig picture and take care of the detailslater
• Several programmers can work on thesame program at the same time
• Code that can be used in manyprograms is said to be reusable
![Page 61: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/61.jpg)
Chapter 4 - VB 2005 by Schneider 61
Easy to Debug
• Procedures can be checked individually
• A driver program can be set up to testmodules individually before the completeprogram is ready
• Using a driver program to test modules(or stubs) is known as stub testing
![Page 62: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/62.jpg)
Chapter 4 - VB 2005 by Schneider 62
Easy to Understand
• Interconnections of the procedures reveal themodular design of the program.
• The meaningful procedure names, along withrelevant comments, identify the tasksperformed by the modules.
• The meaningful variable names help theprogrammer to recall the purpose of eachvariable.
![Page 63: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/63.jpg)
Chapter 4 - VB 2005 by Schneider 63
Easy to Change
• Because a structured program is self-documenting, it can easily be decipheredby another programmer.
![Page 64: Procedures and Modular Design · •Avoid logical errors •Efficiency •Debugging. Chapter 4 - VB 2005 by Schneider 7 Devices for modularity •Visual Basic has two devices for](https://reader033.vdocuments.mx/reader033/viewer/2022060713/6079e4450741e464cb7c3e40/html5/thumbnails/64.jpg)
Chapter 4 - VB 2005 by Schneider 64
Object-Oriented Programming
• an encapsulation of data and code thatoperates on the data
• objects have properties, respond tomethods, and raise events.