Presentation is loading. Please wait.

Presentation is loading. Please wait.

Subs and Functions Ch 6. Introduction VB.NET Procedures Sub Procedures Function Procedures Outline.

Similar presentations


Presentation on theme: "Subs and Functions Ch 6. Introduction VB.NET Procedures Sub Procedures Function Procedures Outline."— Presentation transcript:

1 Subs and Functions Ch 6

2 Introduction VB.NET Procedures Sub Procedures Function Procedures Outline

3 VB.NET Procedures Framework Class Library – Provides a rich collection of “prepackaged” classes and methods for performing many operations Mathematical calculations String manipulations Character manipulations Input/output operations

4 Programmer-defined procedures – FCL cannot provide every conceivable feature that a programmer could want – Three types of procedures Sub procedures Function procedures Event procedures – A procedure is invoked by a procedure call VB.NET Procedures

5 Payment.vb Program Output 1 ' Fig. 6.2: Payment.vb 2 ' Sub procedure that prints payment information. 3 4 Module modPayment 5 6 Sub Main() 7 8 ' call Sub procedure PrintPay 4 times 9 PrintPay(40, 10.5) 10 PrintPay(38, 21.75) 11 PrintPay(20, 13) 12 PrintPay(50, 14) 13 14 Console.ReadLine() ' prevent window from closing 15 End Sub ' Main 16 17 ' print amount of money earned in command window 18 Sub PrintPay(ByVal hours As Double, ByVal wage As Decimal) 19 20 ' pay = hours * wage 21 Console.WriteLine("The payment is {0:C}", hours * wage) 22 End Sub ' PrintPay 23 24 End Module ' modPayment The payment is $420.00 The payment is $826.50 The payment is $260.00 The payment is $700.00 PrintPay receives the values of each argument and stores them in the parameters variables hours and wage Notice that PrintPay appears within modPayment. All procedures must be defined inside a module or a class Console application uses a Sub procedure (invoked from the application’s Main procedure) to print a worker’s payment information.

6 The program contains two procedure definitions: The program contains two procedure definitions: 1.Sub procedure Main, which executes when the console application is loaded. 2.Sub procedure PrintPay, which executes when it is invoked, or called, from another procedure, in this case Main. Sub Procedures

7 Sub Procedures Sub Procedures Format of a procedure definition Sub procedure-name(parameter-list) declarations and statements End Sub Procedure header: – ByVal: specifies that the calling program should pass a copy of the value of the argument in the procedure call to the parameter, which can be used in the Sub procedure body. Procedure-name – Directly follows the Sub keyword – Can be any valid identifier Procedure body – The declarations and statements in the procedure definition form the procedure body

8 Common Errors Declaring a variable in the procedure’s body with the same name as a parameter variable in the procedure header is a syntax error. Declaring a variable in the procedure’s body with the same name as a parameter variable in the procedure header is a syntax error. Defining a procedure inside another procedure is a syntax error—procedures cannot be nested. Defining a procedure inside another procedure is a syntax error—procedures cannot be nested. The procedure header and procedure calls all must agree with regard to the number, type and order of parameters. The procedure header and procedure calls all must agree with regard to the number, type and order of parameters.

9 Function Procedures Function Procedures Similar to Sub procedures One important difference: – Function procedures return a value to the caller, whereas Sub procedures do not.

10 1 ' Fig. 6.3: SquareInteger.vb 2 ' Function procedure to square a number. 3 4 Module modSquareInteger 5 6 Sub Main() 7 Dim i As Integer ' counter 8 9 Console.WriteLine("Number" & vbTab & "Square" & vbCrLf) 10 11 ' square numbers from 1 to 10 12 For i = 1 To 10 13 Console.WriteLine(i & vbTab & Square(i)) 14 Next 15 16 End Sub ' Main 17 18 ' Function Square is executed 19 ' only when the function is explicitly called. 20 Function Square(ByVal y As Integer) As Integer 21 Return y ^ 2 22 End Function ' Square 23 24 End Module ' modSquareInteger The For structure displays the results of squaring the Integer s from 1-10 Square is invoked with the expression Square(i) The Return statement terminates execution of the procedure and returns the result of y ^ 2 Console application uses Function procedure Square to calculate the squares of the Integers from 1–10.

11 Program Output Number Square 1 2 4 3 9 4 16 5 25 6 36 7 49 8 64 9 81 10 100

12 Function Procedures Function Procedures Format of a Function procedure definition Function procedure-name(parameter-list) As return-type declarations and statements End Function Return-type: Indicates the data type of the result returned from the Function to its caller Return expression – Can occur anywhere in a Function – It returns exactly one value – Control returns immediately to the point at which that procedure was invoked

13 Common Errors If the expression in a Return statement cannot be converted to the Function procedure’s return-type, a runtime error is generated. Failure to return a value from a Function procedure (e.g., by forgetting to provide a Return statement) causes the procedure to return the default value for the return-type, often producing incorrect output.

14 1 ' Fig. 6.4: Maximum.vb 2 ' Program finds the maximum of three numbers input. 3 4 Public Class FrmMaximum 5 6 ' obtain values in each text box, call procedure Maximum 7 Private Sub btnMaximum_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMaximum.Click 8 Dim value1, value2, value3 As Double 9 10 value1 = txtFirst.Text 11 value2 = txtSecond.Text 12 value3 = txtThird.Text 13 14 lblMaximum.Text = Maximum(value1, value2, value3) 15 End Sub ' cmdMaximum_Click 16 17 ' find maximum of three parameter values 18 Function Maximum(ByVal valueOne As Double, ByVal valueTwo As Double, ByVal valueThree As Double) As Double 19 20 Return Math.Max(Math.Max(valueOne, valueTwo), valueThree) 21 End Function ' Maximum 22 23 End Class ' FrmMaximum Event handler btnMaximum_Click Handles the event in which Button btnMaximum is clicked EX1- Maximum Number

15

16 EX2- Sorting Array Bubble Sort (a.k.a. sinking sort) Bubble Sort (a.k.a. sinking sort) – Smaller values “bubble” their way to the top of the array, (i.e. toward the first element) – Larger values “sink” to the bottom of the array, (i.e. toward the end) – The bubble sort is easy to program, but runs slowly Becomes apparent when sorting large arrays Becomes apparent when sorting large arrays

17 1 Public Class FrmBubbleSort 2 Dim array As Integer() = New Integer(9) { } 3 ' sort array using bubble sort algorithm 4 Sub BubbleSort(ByVal sortArray As Integer()) 5 Dim pass, i As Integer 6 7 For pass = 1 To sortArray.GetUpperBound(0) 8 9 For i = 0 To sortArray.GetUpperBound(0) - 1 10 11 If sortArray(i) > sortArray(i + 1) Then 12 Swap(sortArray, i) 13 End If 14 Next 15 Next 16 End Sub ' BubbleSort 17 18 Sub Swap(ByVal swapArray As Integer(), ByVal first As Integer) 19 Dim hold As Integer 20 hold = swapArray(first) 21 swapArray(first) = swapArray(first + 1) 22 swapArray(first + 1) = hold 23 End Sub ' Swap 1.Sub BubbleSort 2.Sub Swap 3.Sub cmdCreate_Click 4.Sub cmdSort_Click

18 24 25 ' creates random generated numbers 26 Private Sub cmdCreate_Click(ByVal sender As System.Object, _ 27 ByVal e As System.EventArgs) Handles cmdCreate.Click 28 29 Dim output As String 30 Dim randomNumber As Random = New Random() 31 Dim i As Integer 32 txtSorted.Text = " “ 33 ' create 10 random numbers and append to output 34 For i = 0 To array.GetUpperBound(0) 35 array(i) = randomNumber.Next(100) 36 output &= array(i) & vbCrLf 37 Next 38 39 txtOriginal.Text = output ' display numbers 40 cmdSort.Enabled = True ' enables cmdSort button 41 End Sub ' cmdCreate_Click txtOriginal.Text txtSorted.Text cmdCreate cmdSort

19 42 ' randomly generated numbers 44 Private Sub cmdSort_Click(ByVal sender As System.Object, _ 44 ByVal e As System.EventArgs) Handles cmdSort.Click 45 46 Dim output As String 47 Dim i As Integer 48 49 ' sort array 50 BubbleSort(array) 51 52 ' creates string with sorted numbers 53 For i = 0 To array.GetUpperBound(0) 54 output &= array(i) & vbCrLf 55 Next 56 57 txtSorted.Text = output ' display numbers 58 cmdSort.Enabled = False 59 End Sub ' cmdSort_Click 60 61 End Class ' FrmBubbleSort

20

21 EX3- Searching Arrays: Linear Search Searching – The process of locating a particular element value in an array Linear Search – Simple searching technique – Works well for small or unsorted arrays

22 1 Public Class FrmLinearSearchTest 2 3 Dim array1 As Integer() = New Integer(19) {} 4 ' iterates through array 5 6 Function LinearSearch(ByVal key As Integer, ByVal numbers As Integer()) As Integer 7 8 Dim n As Integer 9 10 ' structure iterates linearly through array 11 For n = 0 To numbers.GetUpperBound(0) 12 13 If numbers(n) = key Then 14 15 Return n 16 End If 17 18 Next 19 20 Return -1 21 End Function ' LinearSearch Compares each element of the array with a search key If the search key is not found, the procedure returns –1, a non-valid index number 1.Function LinearSearch 2.Sub cmdCreate_Click 3.Sub cmdSearch_Click

23 22 ' creates random data 23 Private Sub cmdCreate_Click(ByVal sender As System.Object, _ 24 ByVal e As System.EventArgs) Handles cmdCreate.Click 25 26 Dim output As String 27 Dim randomNumber As Random = New Random() 28 Dim i As Integer 29 30 output = "Index" & vbTab & "Value" & vbCrLf 31 ' creates string containing 11 random numbers 32 For i = 0 To array1.GetUpperBound(0) 33 array1(i) = randomNumber.Next(1000) 34 output &= i & vbTab & array1(i) & vbCrLf 35 Next 36 37 txtData.Text = output ' displays numbers 38 txtInput.Text = "" ' clear search key text box 39 cmdSearch.Enabled = True ' enable search button 40 End Sub ' cmdCreate_Click txtData lblResult cmdSearch cmdCreate txtInput

24 41 ' searches key of element 42 Private Sub cmdSearch_Click(ByVal sender As System.Object, _ 43 ByVal e As System.EventArgs) Handles cmdSearch.Click 44 45 ' if search key text box is empty, display 46 ' message and exit procedure 47 If txtInput.Text = "" Then 48 MessageBox.Show("You must enter a search key.") 49 Exit Sub 50 End If 51 52 Dim searchKey As Integer = Convert.ToInt32(txtInput.Text) 53 Dim element As Integer = LinearSearch(searchKey, array1) 54 55 If element <> -1 Then 56 lblResult.Text = "Found Value in index " & element 57 Else 58 lblResult.Text = "Value Not Found" 59 End If 60 61 End Sub ' cmdSearch_Click 62 63 End Class ' FrmLinearSearch

25

26 Conclusion Experience has shown that the best way to develop and maintain a large program is to construct it from small, manageable pieces. This technique is known as divide and conquer. Visual Basic programs consist of many pieces, including modules and classes. Three types of procedures exist: Sub procedures, Function procedures and event procedures.

27 The characteristics of Function procedures are similar to those of Sub procedures. However, Function procedures return a value to the caller. If a Function procedure body does not specify a Return statement, program control returns to the point at which a procedure was invoked when the End Function keywords are encountered. Conclusion

28 Option Explicit, which is set to On by default, forces the programmer to declare all variables explicitly before they are used in a program. Forcing explicit declarations eliminates spelling errors and other subtle errors that may occur if Option Explicit is turned Off. Option Strict, which is set to Off by default, increases program clarity and reduces debugging time. When set to On, Option Strict requires the programmer to perform all narrowing conversions explicitly. Conclusion


Download ppt "Subs and Functions Ch 6. Introduction VB.NET Procedures Sub Procedures Function Procedures Outline."

Similar presentations


Ads by Google