csi 101 elements of computing spring 2009 lecture #10 – functions and subroutines monday, march...
Post on 19-Dec-2015
214 views
TRANSCRIPT
![Page 1: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/1.jpg)
CSI 101 Elements of Computing
Spring 2009Lecture #10 –
Functions and SubroutinesMonday, March 16th
![Page 2: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/2.jpg)
2
Procedural Programming Method of organizing computer program Breaking up code into smaller segments
Makes it more efficient Allows multiple programmers to produce Facilitates reuse
Tie segments together logically Code statements in segment perform a
particular service or function
![Page 3: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/3.jpg)
3
How does Procedural Programming work? Think of it like an assembly line
Each part of assembly line works on a specific task or piece of the final product
Dedicated workers focus their efforts just on their part of the process
Foreman oversees entire process and makes sure it runs smoothly
![Page 4: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/4.jpg)
4
Types of procedural segments 3 types in Visual Basic Event procedure
Invoke when a particular action occurs on a screen form
Subroutine procedure Invoked via a CALL statement
Function procedure Invoked by referring to its name Example: result = Foo()
![Page 5: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/5.jpg)
5
Parameters Input to procedure Data type must match general type of
procedure Doesn’t have to be exact match For instance, integral values could pass a Long
into an Integer if value does not exceed Integer’s maximum
If more than one parameter, corresponds in order
![Page 6: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/6.jpg)
6
Parameter Examples Foo has 3 inputs: Integer, Integer, String
Dim A as Integer, B as Integer, C as IntegerDim S1 as String, S2 as StringDim X As Long, Y as Single, Z as Double CALL Foo(A,B,S1) works CALL Foo(S1,A,B) fails – WHY?
S1 is 1st parameter, would correspond to Integer
B is 3rd parameter, would correspond to String
![Page 7: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/7.jpg)
7
Parameter Examples, cont Foo has 3 inputs: Integer, Integer, String
Dim A as Integer, B as Integer, C as IntegerDim S1 as String, S2 as StringDim X As Long, Y as Single, Z as Double CALL Foo(A,X,S1)
Works if X's value is within 2 billion CALL Foo(A,Y,S2) works – WHY?
Removes any fractional value from Y
![Page 8: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/8.jpg)
8
Defining Subroutines SUB statement begins it
Like BEGIN from pseudocode, it must name the subroutine
END SUB ends it Unlike END in pseudocode, does not need
name Cannot define another subroutine within a
subroutine, so the END SUB would refer to the previous SUB statement
![Page 9: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/9.jpg)
9
Subroutine arguments Arguments are the subroutine’s
corresponding parameters Parameters are considered what the
calling process uses, while arguments are defined by the subroutine
Arguments have variable names and data types just like parameters Uses same structure as DIM without DIM
keyword
![Page 10: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/10.jpg)
10
Defining Subroutine example Let’s define our previous FOO:
Sub Foo(InVal1 As Integer, InVal2 As Integer, InStr As String)
:End Sub
Note each argument is given a unique name and has a defined data type
![Page 11: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/11.jpg)
11
Parameter passing 2 ways: Pass by reference
Called routine does not make a copy, but works in original register
Thus, any change to argument in called routine is reflected in original procedure’s parameter value
This is Virtual Basic’s default Pass by value
Called routine makes a copy of data value when called
Any change to called routine’s copy is not reflected in the original procedure’s variable
![Page 12: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/12.jpg)
12
Pass by Reference Example Foo(Int1, Int2, String1)
If Int1 > Int2, String1 set to “Higher” If Int1 < Int2, String1 set to “Lower” If Int1 = Int2, String1 set to “Equal”
CALL Foo(A, B, S1) A and B retain value, but S1 changes
![Page 13: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/13.jpg)
13
Pass by Value Need to specify ByVal in subroutine
definition Note that this is controlled by subroutine,
not by calling routine Thus, could change Foo by:
Sub Foo2(Int1 As Integer, Int2 As Integer, ByVal Str1 As String)
Note ByVal keyword goes before argument name
![Page 14: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/14.jpg)
14
Pass by Value Example Foo2(Int1, Int2, String1)
If Int1 > Int2, String1 set to “Higher” If Int1 < Int2, String1 set to “Lower” If Int1 = Int2, String1 set to “Equal”
CALL Foo2(A, B, S1) No variables have their values changed when
Foo2 ends
![Page 15: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/15.jpg)
15
Subroutine return values Pass by reference is how subroutines
return a value to its calling procedure Must use an argument, so calling
procedure must have variable of correct data type to use as argument
![Page 16: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/16.jpg)
16
Functions These are special processing segments that
are invoked by using their name They have a single return value, and it is
placed in a variable that is NOT a parameter Computer creates a variable with the same name
as the function. By default, that is the variable used to return the function's return value
Visual Basic has many predefined functions, but programmers are free to create their own as well
![Page 17: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/17.jpg)
17
Form of a Function Begins with FUNCTION keyword Concludes with END FUNCTION Arguments defined as in subroutine Includes definition of return value Example:
Function Foo3(Val1 As Integer, Val2 As Integer) As Integer
:End Function
![Page 18: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/18.jpg)
18
Return keyword Simultaneously sets return value and ends
the function Return A + B
Can be placed anywhere before END FUNCTION
Often used with IF statement to end function on particular conditionIF index > 255 Then 'Exceed max value
Return 0 'Value for error
Else 'Continue processing
![Page 19: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/19.jpg)
19
Function Example Let’s create a function as an example Our function finds the minimum value of
three numbers Call it MIN
We'll restrict our values to integers Return value is one of them, so it’s also an
integer
![Page 20: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/20.jpg)
20
MIN FunctionFunction Min(A As Integer, B As Integer, C As
Integer) As IntegerIf A<B Then 'A smaller
If A<C Then Min=A 'Note we can set Min'Min is the variable created to hold the return value
Else Min=CEndif
Elseif B<C Then Min=BElse Min=CEndIf
End Function 'Note no RETURN statement
RETURN not necessary if variable named for function contains the return value
![Page 21: CSI 101 Elements of Computing Spring 2009 Lecture #10 – Functions and Subroutines Monday, March 16th](https://reader038.vdocuments.net/reader038/viewer/2022110322/56649d3f5503460f94a18568/html5/thumbnails/21.jpg)
21
Invoking MINDim A,B,C,M as Integer
'At some point, we get values for A, B, and C
M = Min(A,B,C) 'M now holds the smallest value