36
CHAPTER SIX Reducing Program Complexity General Sub Procedures and Developer-defined Functions

CHAPTER SIX Reducing Program Complexity General Sub Procedures and Developer-defined Functions

Embed Size (px)

Citation preview

CHAPTER SIX

Reducing Program Complexity

General Sub Procedures and Developer-defined Functions

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 2

Introduction

• Three important consideration help us design, construct, and maintain complex programs:

1. Break complex tasks into smaller “subtasks.” 2. Give each subtask a descriptive name.

3. Find processing tasks that have subtasks in common.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 3

Objectives

• Share code by creating general sub procedures and functions.

• Use parameters to share data between procedures and functions.

• Use code modules to organize code for reusability.

• Use the KeyPress, Enter, and Leave events.• Use the concept of form modality.• Create and program main menus.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 4

6.1 General Sub Procedures

• We must be very precise in writing the criterion and alternative actions for decisions.

• In a program,– A condition is represented as an expression.

– An outcome is the result of an evaluated condition.

– An appropriate action follows the outcome.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 5

6.1 General Sub Procedures (cont.)

• Using General Sub Procedures in a Project– Eliminate inconsistencies by placing common

statements in a general sub procedure.

– Apply a descriptive name for the sub procedure.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 6

A Sub Procedure

Public Sub displayTime()

Dim TheTime As String = Format(Now(), "Medium Time")

MsgBox(TheTime, MsgBoxStyle.Information, "Current Time")

End Sub

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 7

6.1 General Sub Procedures (cont.)

• Execution of General Sub Procedures– Names of event procedures always end with an

underscore followed by the type of event.

– Names of general sub procedures do not.

– A procedure call invokes a procedure.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 8

Sub Procedure Execution

Private Sub btnBeepTime_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBeepTime.Click

MsgBox("MAKE NOISE")

displayTime()

MsgBox(“STOP NOISE")

End Sub

Public Sub displayTime()

Dim TheTime As String = Format(Now(), "Medium Time")

MsgBox(TheTime, MsgBoxStyle.Information, "Current Time")

End Sub

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 9

6.1 General Sub Procedures (cont.)

• Local Variables in General Sub Procedures– General sub procedures can access module-level

and global variables.

– They have their own variables.

– Procedure-level variables are not related to other procedures.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 10

6.1 General Sub Procedures (cont.)

• General Sub Procedures and Project Structure– Locating a General Sub Procedure in the Code

Window• We enter and view event procedures in the Code

window.• We also enter and view general sub procedures in

the Code window.• Scroll to find a procedure’s heading.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 11

6.1 General Sub Procedures (cont.)

– Procedure Scope• Determines which procedure’s can invoke it.• Private and Public.

– Code Modules• Can contain general sub procedures.• Help to organize a project.• Can be included in many different projects.

– Project Structure• See Figure 6.13 of textbook.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 12

6.1 General Sub Procedures (cont.)

• Creating General Sub Procedures– Start from the Code window of a form or code

module.

– Enter header for the sub procedure.

– Enter general sub procedure statements.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 13

6.2 Procedures with Parameters

• Drawbacks of Module-Level and Global Variables– Public access can mean trouble for some

variables.– Procedures wanting to share data using the

global variable have to “know” its name.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 14

6.2 Procedures with Parameters (cont.)

• Parameter Passing– Sending data from the calling to the called

procedure.

– Parameter Lists• List of data items a procedure expects any calling

procedure to send it.

– Procedure Calls with Parameters• See Figure 6.16 in textbook.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 15

Passing Parameters

Private Sub btnButton_Click(…) Handles … displayName(“Apple”)

End Sub

Public Sub displayName(ByVal name As String)

MsgBox("My name is " & name)

End Sub

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 16

6.2 Procedures with Parameters (cont.)

– Analyzing Procedures That Use Parameters• Hand-Check parameter passing.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 17

6.2 Procedures with Parameters (cont.)

• Multiple Parameters– A parameter list is key.

– Every parameter list should contain:• Number of arguments.• Types of arguments.• Sequence of arguments.• Names arguments are referred to.• What the parameters and arguments represents?

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 18

6.2 Procedures with Parameters (cont.)

• Passing by Reference and Passing by Value– ByRef keyword is short for “By Reference.”

• Parameter and argument refer to the same variable.

• Only way a sub procedure can change the value it is passed.

– ByVal keyword is short for “By Value.”• Specifies that the called procedure cannot change

the value stored in a variable passed to it.• Parameter is a local copy of the passed argument.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 19

ByVal Vs ByRefPrivate Sub btnButton_Click(…) Handles btnButton.Click Dim n As String = "Apple" displayName1(n) MsgBox("New name is " & n) displayName2(n) MsgBox("New name is " & n)End Sub

Public Sub displayName1(ByVal name As String) MsgBox("My name is " & name) name = name & " Ha Ha"End Sub

Public Sub displayName2(ByRef name As String) MsgBox("My name is " & name) name = name & " Ha Ha"End Sub

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 20

6.2 Procedures with Parameters (cont.)

• Passing Expressions– Calling procedure can pass an expression.

• Correcting Common Mistakes in Parameter Passing– Arguments Not Specified

• Number of arguments must match parameters.

– Invalid Cast Exception• Parameter and argument type mismatch.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 21

Argument Type Mismatch

Private Sub btnButton_Click(…) Handles … displayName(“Apple”)

End Sub

Public Sub displayName(ByVal name As Integer)

MsgBox("My name is " & name)

End Sub

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 22

6.2 Procedures with Parameters (cont.)

– Arguments Out of Order• Arguments and parameters must be associated by

position, not by name.

– Conflict between Parameter Name and Local Variable Name

• Parameter name and local variable names must be different.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 23

6.2 Procedures with Parameters (cont.)

• General Sub Procedures versus Event Procedures– An event procedure is always associated with a

control.

– Developers create the procedure heading for a general sub procedure.

– Visual Basic .NET creates the procedure heading for an event procedure.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 24

6.3 Developer-Defined Functions

• Perform calculations or string manipulations.• Return values.• Use Return statements.• Function headings include type specifications.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 25

6.3 Developer-Defined Functions (cont.)

• Creating Functions– Follow the same steps to create a general sub

procedure.

– Use the keyword Function instead of Sub.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 26

Function Call

Private Sub btnButton_Click(…) Handles btnButton.Click

Dim firstName As String = "Apple"

Dim lastName As String = "Chan"

Dim fullName As String

fullName = getName(firstName, lastName)

MsgBox(“My name is " & fullName)

End Sub

Public Function getName(ByVal fn As String, ByVal ln As String) As String

Return ln & " " & fn

End Function

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 27

6.4 Code Modules

• Sub Main– Use to begin execution of the program by

executing a general sub procedure.

– Select in the Misc Property Pages dialog box under the Project menu.

– You must create a public general sub procedure named Main in a code module.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 28

6.4 Code Modules (cont.)

• Libraries– Programmers organize reusable code for easy

access.

– A collection of code modules in categories is called a library.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 29

6.5 The KeyPress Event

• Enables your programs to respond to keystrokes made by the user.

• Any control that can have the focus is able to respond to this event.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 30

6.5 The KeyPress Event (cont.)

• The KeyPress Event for TextBox Controls– User presses a key.

– Visual Basic .NET stores ANSI character of the key.

– Visual Basic .NET begins KeyPress event procedure.

– The code will determine the disposition of the keypress.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 31

6.5 The KeyPress Event (cont.)

– The SendKeys Class• Used to send any keystroke to an

application.• Keystrokes are represented by codes.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 32

KeyPress Event Handler

Private Sub txtSSN_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtSSN.KeyPress

Dim N As Short = Len(txtSSN.Text)

Select Case e.KeyChar

Case BACKSPACE ' OK any time

Case "0" To "9" ' digits

……

End Select

End Sub

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 33

6.6 The Enter and Leave Events

• Enter event occurs for a control when the control receives the focus.

• Leave event occurs for a control when the control loses the focus.

• Both events are triggered by the user or by code.

• Help to make an application more intuitive for the user.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 34

6.7 Modal versus Modeless Forms

• Most real-world applications use multiple forms.• Form modality controls how a form is displayed.

– When a modal form is shown, other forms become inactive.

• objFrmA.ShowDialog()– When a modeless form is displayed, both its

controls and the controls on other forms are active.

• objFrmA.Show()

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 35

6.7 Modal versus Modeless Forms (cont.)

• Modal Forms– A message box is the simplest example.

– User must click OK to return control to the procedure.

• Presenting a Sequence of Forms– Using modeless forms

• Control code must be written within each form.

– Using modal forms• Control of all forms can be in a one procedure.

McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved.

6- 36

6.8 The MainMenu Control

• Start by right-clicking on the MainMenu control in the component tray.

• Then select Edit Menu from the pop-up menu.• Enter both main and sub menu items.