Subprograms Functions Procedures. Subprograms A subprogram separates the performance of some task from the rest of the program. Benefits: “Divide and.

Slides:



Advertisements
Similar presentations
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide 6- 1 STARTING OUT WITH Visual Basic 2008 FOURTH EDITION Tony Gaddis.
Advertisements

Chapter 6, Slide 1Starting Out with Visual Basic 3 rd Edition Chapter 6 Sub Procedures And Functions.
Introduction to C Programming
Sub and Function Procedures
Sub Procedures and Functions. Procedures in VBA The main idea: encapsulate some code in its own procedure (There are two kinds: Sub Procedures and Functions)
1 Procedural Programming Paradigm Stacks and Procedures.
Subprogram Control - Data sharing Mechanisms to exchange data Arguments - data objects sent to a subprogram to be processed. Obtained through  parameters.
Microsoft Visual Basic 2010: Reloaded Fourth Edition Chapter Eight Sub and Function Procedures.
1 Chapter Three Using Methods. 2 Objectives Learn how to write methods with no arguments and no return value Learn about implementation hiding and how.
1.
Writing General Procedures Often you will encounter programming situations in which multiple procedures perform the same operation This condition can occur.
VBA Modules, Functions, Variables, and Constants
Example 2.
Chapter 6: User-Defined Functions I
Chapter 4 - Visual Basic Schneider
1 Chapter 18 Recursion Dale/Weems/Headington. 2 Chapter 18 Topics l Meaning of Recursion l Base Case and General Case in Recursive Function Definitions.
11/1/06 1 Hofstra University, CSC005 Chapter 8 (Part 3) High Level Programming Languages.
Chapter 9 Modules and Programming with Functions.
Chapter 6: User-Defined Functions I
Chapter 4 - Visual Basic Schneider1 Chapter 4 General Procedures.
Functions. Program complexity the more complicated our programs get, the more difficult they are to develop and debug. It is easier to write short algorithms.
Fortran- Subprograms Chapters 6, 7 in your Fortran book.
Apply Sub Procedures/Methods and User Defined Functions
IE 212: Computational Methods for Industrial Engineering
XP New Perspectives on Microsoft Office Access 2003 Tutorial 11 1 Microsoft Office Access 2003 Tutorial 11 – Using and Writing Visual Basic for Applications.
Why to Create a Procedure
CSCI 3327 Visual Basic Chapter 6: Methods: A Deeper Look UTPA – Fall 2011.
Flow of Control. 2 Control Structures Control structure: An instruction that determines the order in which other instructions in a program are executed.
© The McGraw-Hill Companies, 2006 Chapter 4 Implementing methods.
PROGRAMMING Functions. Objectives Understand the importance of modular programming. Know the role of functions within programming. Use functions within.
CS0004: Introduction to Programming Subprocedures and Modular Design.
Chapter 06 (Part I) Functions and an Introduction to Recursion.
1 Chapter 5 - General Procedures 5.1 Function Procedures 5.2 Sub Procedures, Part I 5.3 Sub Procedures, Part II 5.4 Modular Design.
Arrays and 2D Arrays.  A Variable Array stores a set of variables that each have the same name and are all of the same type.  Member/Element – variable.
Microsoft Visual Basic 2005: Reloaded Second Edition Chapter 7 Sub and Function Procedures.
COMPUTER PROGRAMMING. Functions What is a function? A function is a group of statements that is executed when it is called from some point of the program.
Chapter 6 Sub Procedures
Chapter 9: Writing Procedures Visual Basic.NET Programming: From Problem Analysis to Program Design.
CPS120: Introduction to Computer Science Decision Making in Programs.
CPS120: Introduction to Computer Science Functions.
Functions Top-down design Breaking a complex problem into smaller parts that we can understand is a common practice. The process of subdividing a problem.
IMS 3253: Subroutines 1 Dr. Lawrence West, MIS Dept., University of Central Florida Topics Procedures Subroutines Parameters –By Value.
CPS120: Introduction to Computer Science Lecture 14 Functions.
Chapter 4 - Visual Basic Schneider1 Chapter 4 General Procedures.
PROGRAMMING IN VISUAL BASIC.NET VISUAL BASIC PROGRAMMING FUNDAMENTALS Bilal Munir Mughal 1 Chapter-8.
8-1 Compilers Compiler A program that translates a high-level language program into machine code High-level languages provide a richer set of instructions.
Methods Methods are how we implement actions – actions that objects can do, or actions that can be done to objects. In Alice, we have methods such as move,
Functions  A Function is a self contained block of one or more statements or a sub program which is designed for a particular task is called functions.
Week Procedures And Functions 7 A procedure is a collection of statements that performs a task.
Chapter 4 - Visual Basic Schneider1 Chapter 4 General Procedures.
Programming Fundamentals Enumerations and Functions.
Copyright © 2014 Pearson Education, Inc. Chapter 6 Procedures and Functions.
1 CS 106 Computing Fundamentals II Chapter 42 “Sub Procedures And Functions” Herbert G. Mayer, PSU CS Status 8/5/2013 Initial content copied verbatim from.
1 Sections 6.4 – 6.5 Methods and Variables Fundamentals of Java: AP Computer Science Essentials, 4th Edition Lambert / Osborne.
Subprograms Functions Procedures.
Chapter 9: Value-Returning Functions
Functions Chapter 6-Part 2.
Method.
Chapter 4 - Visual Basic Schneider
Chapter 4 void Functions
Procedures and Functions
VBScript Session 7 Dani Vainstein.
CIS16 Application Development and Programming using Visual Basic.net
Introduction to Visual Programming
CSCI 3327 Visual Basic Chapter 6: Methods: A Deeper Look
Chapter 9: Value-Returning Functions
Topics Introduction to Functions Defining and Calling a Function
Methods.
Flow of Control.
Chapter 10: Void Functions
Presentation transcript:

Subprograms Functions Procedures

Subprograms A subprogram separates the performance of some task from the rest of the program. Benefits: “Divide and conquer“ –Tasks are broken down into pieces, each of which can be programmed separately. This is modularisation. A subprogram can implement a piece of the calculation that is duplicated in different places. –Rather than duplicating the same code you can simply 'call' the subprogram.

Subprogram Statements A subprogram is a section of code with a name. That name can be used as a statement in another part of the program. When the name is encountered, the processing in the other part of the program halts while the named code is executed. This is an example of control coupling.

Subprogram Statements

There are times when the calling unit needs to give information to the subprogram to use in its processing. A parameter list is a list of the identifiers with which the subprogram is to work, along with the data types of each identifier. These are placed in parentheses beside the subprogram name.

Parameters In general, a parameter is any factor that defines a system and determines (or limits) its performance. It is useful, however, to distinguish between those that are used in the definition of the subprogram and those that are used by the calling program.

Parameters The parameters in the declaration of a subprogram are formal parameters. Formal - relating to or involving outward form or structure. The parameters in the statement that calls a subprogram are actual parameters. Actual - being, existing, or acting at the present moment.

Parameters To avoid confusion between formal and actual parameters, and to shorten our references to them, we will adopt a different set of terms…

Parameters Parameters: Identifiers listed in parentheses beside the subprogram declaration; otherwise called formal parameters. Arguments: Identifiers listed in parentheses on the subprogram call; otherwise called actual parameters.

Subprogram Parameters The passing of control and data between subprograms is called coupling. Data coupling can occur in two ways: –by value –by reference

Parameters Value parameter: A parameter that expects a copy of its argument to be passed by the calling unit. Reference parameter: A parameter that expects the address of its argument to be passed by the calling unit.

Subprogram Parameters Coupling parameters ByVal provides the value of the parameter to the subprogram. The subprogram can use this value in calculations, but changes will NOT be passed back. In effect, there’s a one way connection. Coupling parameters ByRef provides the address of the parameter to the subprogram. This creates a two way connection that carries data in both directions. Functions …

Function Subprograms A function is a subprogram that returns a value. We have already used many pre-defined functions, but it is also possible to declare our own.

Function Subprograms The header of a function declaration lists the function name, the parameters that it will receive, and the data type of its result. Private Function functionName (parameter list) _ As resultDataType ‘ function body End Function

Function Subprograms The parameter list may be empty, but the parentheses are required. Private Function functionName () _ As resultDataType ‘ function body End Function

Function Subprograms Private Function functionName _ () As resultDataType function body Return expression End Function A function must include a Return statement to specify which value is to be returned as its result.

Function Subprograms Private Function functionName () As resultDataType function body Return expression End Function The data type of the result is declared in the header. The expression that calculates the Return value must produce data of the specified type.

Parameter Lists The parameter list is very much like a list of declarations for variables used in the body of the function – with some important distinctions. 1.Use the keyword ByVal instead of Dim or Private

Parameter Lists 2.The variable will have already been assigned the value of whatever argument was specified in the function is call. The values of arguments are passed to parameters in the order in which they appear in the list.

Parameter Lists 3.The list is incomplete. Local variables needed for the function to do its job may be declared in the body of the function. The parameter list establishes a set of data connections between the calling routine and the function.

Parameter Lists Private Function Celsius_ (ByVal Fahrenheit As Single)_ As Single Return (Fahrenheit - 32) * 5 / 9 End Function

Function Subprograms Since a function produces a value, it will appear on the right side of an assignment operator. Private Function Celsius_ (ByVal Fahrenheit As Single) As Single Return (Fahrenheit - 32) * 5 / 9 End Function ____________________________________________________ Private Sub cmdGo_Click ( ) Dim degrees As Single degrees = txtInput.Text txtOutput.Text = Celsius (degrees) End Sub Passes CONTROL

Function Subprograms The parameter names in the subprogram declaration are local and need NOT be the same as the call. Private Function Celsius_ (ByVal Fahrenheit As Single) As Single Return (Fahrenheit - 32) * 5 / 9 End Function ____________________________________________________ Private Sub cmdGo_Click ( ) Dim degrees As Single degrees = txtInput.Text txtOutput.Text = Celsius (degrees) End Sub NOT the same

Function Subprograms When the function is called the value of its argument is passed to a formal parameter. Private Function Celsius (Fahrenheit) As Single Return (Fahrenheit - 32) * 5 / 9 End Function ____________________________________________________ Private Sub cmdGo_Click ( ) Dim degrees As Single Degrees = txtInput.Text txtOutput.Text = Celsius (degrees) End Sub Passes data

Function Subprograms When the function is complete the result value is passed back to the calling statement. Private Function Celsius (Fahrenheit) As Single Return (Fahrenheit - 32) * 5 / 9 End Function ____________________________________________________ Private Sub cmdGo_Click ( ) Dim degrees As Single Degrees = txtInput.Text txtOutput.Text = Celsius (degrees) End Sub Passes data Returns result

Function Subprograms A function can have several arguments but should only produce a single value. Private Function loops(first, last) As Integer Dim counter, loops As Integer loops = 0 For counter = first To last loops = loops + 1 Next Return loops End Function Procedures…

Procedure Subprograms A procedure is a subprogram that performs an action. We have already written many procedures that are called by an event, so the syntax is not new: Private Sub ProcedureName(argumentList) ‘ procedure body End Sub

Procedure Subprograms But it is also possible to create procedures that are not associated with control events. Private Sub convert() Dim degrees As Single degrees = txtInput.Text txtOutput.Text = (degrees - 32) * 5 / 9 End Sub must be included

Procedure Subprograms These procedures can be called by name from another procedure. Private Sub convert() Dim degrees As Single degrees = txtInput.Text txtOutput.Text = (degrees - 32) * 5 / 9 End Sub __________________________ Private Sub cmdGo_Click () Call convert End Sub

Procedure Subprograms Note that procedures perform actions, so to invoke them we simply call their name. Private Sub convert() Dim degrees As Single degrees = txtInput.Text txtOutput.Text = (degrees - 32) * 5 / 9 End Sub __________________________ Private Sub cmdGo_Click () Call convert End Sub Passes CONTROL

Procedure Subprograms End Sub passes control back to the calling subprogram. Private Sub convert() Dim degrees As Single degrees = txtInput.Text txtOutput.Text = (degrees - 32) * 5 / 9 End Sub __________________________ Private Sub cmdGo_Click () Call convert End Sub Passes CONTROL Returns CONTROL

Procedure Subprograms Sometimes it is necessary to send data to procedures. This is accomplished with a parameter list. Private Sub convert(ByVal degrees As Single) txtOutput.Text = (degrees - 32) * 5 / 9 End Sub ______________________________________ Private Sub cmdGo_Click () Dim temperature As Single temperature = txtInput.Text Call convert (temperature) End Sub

Procedure Subprograms Data is passed from the Call to the argument. Private Sub convert(ByVal degrees As Single) txtOutput.Text = (degrees - 32) * 5 / 9 End Sub ______________________________________ Private Sub cmdGo_Click () Dim temperature As Single temperature = txtInput.Text Call convert (temperature) End Sub Passes data

Procedure Subprograms Since the subprogram requires the data as input, it is passed ByVal. Private Sub convert(ByVal degrees As Single) txtOutput.Text = (degrees - 32) * 5 / 9 End Sub ______________________________________ Private Sub cmdGo_Click () Dim temperature As Single temperature = txtInput.Text Call convert (temperature) End Sub Passes data

Subprogram Parameters Often a procedure subprogram will both receive data and return data. To return values to the calling routine, parameters must be declared as ByRef.

Subprogram Parameters Private Sub convert (ByVal F As Single,_ ByRef C As Single) C = (F - 32) * 5 / 9 End Sub _______________________________ Private Sub cmdGo_Click() Dim degreesF As Single Dim degreesC As Single degreesF = txtStart.Text Call convert (degreesF, degreesC) txtOut.Text = degreesC End Sub

Subprogram Parameters Notice how multiple arguments are passed from the Call statement: Private Sub convert (ByVal F, ByRef C) _______________________________ Call convert (degreesF, degreesC) Arguments are listed in the same order they appear in the procedure header, separated by commas.

Subprogram Parameters There are 2 things to note in the example: Private Sub convert (ByVal F, ByRef C)

Subprogram Parameters There are 2 things to note in the example: Private Sub convert (ByVal F, ByRef C) 1.More than one parameter can be used. Data is passed according to the ORDER of the parameters. 1

Subprogram Parameters There are 2 things to note in the example: Private Sub convert (ByVal F, ByRef C) 1.More than one parameter can be used. Data is passed according to the ORDER of the parameters. 2.It is not necessary to identify the data type in the parameter list (but is good practice). 1 2

Side Effects Subprograms can produce dangerous side effects. For example: Private Function convert(ByRef F ) As Single Return (F - 32) * 5 / 9 F = F + 50 ‘why? is unimportant End Function _____________________________________ Private Sub cmdGo_Click() Dim degreesF As Single degreesF = txtIn.Text txtOut.Text = convert( degreesF ) txtIn.Text = degreesF End Sub

Side Effects Sub cmdGo_Click() calls the convert function, coupling degreesF with F. Private Function convert(ByRef F ) As Single Return (F - 32) * 5 / 9 F = F + 50 End Function _____________________________________ Private Sub cmdGo_Click() Dim degreesF As Single degreesF = txtIn.Text txtOut.Text = convert( degreesF ) txtIn.Text = degreesF End Sub

Side Effects The function calculates a value which is passed back and assigned to txtOut.Text. Private Function convert(ByRef F ) As Single Return (F - 32) * 5 / 9 F = F + 50 End Function _____________________________________ Private Sub cmdGo_Click() Dim degreesF As Single degreesF = txtIn.Text txtOut.Text = convert( degreesF ) txtIn.Text = degreesF End Sub

Side Effects A new value is assigned to F, which is coupled with degreesF. Private Function convert(ByRef F ) As Single Return (F - 32) * 5 / 9 F = F + 50 End Function _____________________________________ Private Sub cmdGo_Click() Dim degreesF As Single degreesF = txtIn.Text txtOut.Text = convert( degreesF ) txtIn.Text = degreesF End Sub Changes F And changes degreesF

Side Effects For safety, parameters passed to functions should ALWAYS be stipulated as ByVal. Private Function convert (ByVal F ) As Single Return (F - 32) * 5 / 9 F = F + 50 End Function _____________________________________ Private Sub cmdGo_Click() Dim degreesF As Single degreesF = txtIn.Text txtOut.Text = convert( degreesF ) txtIn.Text = degreesF End Sub Changes F But NOT degreesF

Side Effects Of course the same kind of thing can happen with procedure subprograms. The best practice is to declare only those parameters specifically needed to return data as ByRef.