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 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 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 General Sub Procedures 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. 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 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. 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 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 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. 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 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 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 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 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 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. General Sub Procedures versus Event Procedures and the Object Paradigm –We have created a form class. –We also created two methods. One was event procedure. The other was a general sub procedure.
McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved Developer-Defined Functions Perform calculations or string manipulations. Return values. Use Return statements. Function headings include type specifications. 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 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. 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 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. 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 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 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 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. –When a modeless form is displayed, both its controls and the controls on other forms are active.
McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved 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 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.
McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved Quick Review What language feature is used to break programming into small parts? What type of procedures are linked to a control on a form? What type of procedures are not linked to a control on a form? Can you call a general sub procedures from other general sub procedures or from event procedures?
McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved Quick Review (cont.) What make a developer-defined function different than a sub procedure? Can procedures use parameters to share data? Can functions use parameters to share data? What is the expression that is passed to each parameter of a procedure or function? What are the two ways that the argument can be passed?
McGraw Hill/Irwin ©2002 by The McGraw-Hill Companies, Inc. All rights reserved Quick Reviews (cont.) Which event procedure has a parameter that determines the key that the user has pressed? Which event occurs when the user gives the focus to a control? Form modality refers to the way forms react when two or more forms are displayed at one time. Which type of modality allows you to only interact with the current form (other forms are inactive)? Which control can applications use to incorporate a main menu bar?