Chapter 7: User-Defined Functions II Instructor: Mohammad Mojaddam.

Slides:



Advertisements
Similar presentations
Chapter 6: User-Defined Functions I
Advertisements

C++ Programming: Program Design Including Data Structures, Third Edition Chapter 7: User-Defined Functions II.
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 7: User-Defined Functions II.
Chapter 7: User-Defined Functions II
Chapter 7 User-Defined Methods. Chapter Objectives  Understand how methods are used in Java programming  Learn about standard (predefined) methods and.
C++ Programming: Program Design Including Data Structures, Third Edition Chapter 7: User-Defined Functions II.
Chapter 14: Overloading and Templates C++ Programming: Program Design Including Data Structures, Fifth Edition.
An Introduction to Programming with C++ Fifth Edition
1 Lecture 18:User-Definded function II(cont.) Introduction to Computer Science Spring 2006.
Chapter 14: Overloading and Templates
C++ Programming: From Problem Analysis to Program Design, Second Edition Chapter 7: User-Defined Functions II.
Chapter 6: User-Defined Functions I
1 Chapter 7 User-Defined Methods Java Programming from Thomson Course Tech, adopted by kcluk.
C++ Programming: From Problem Analysis to Program Design, Second Edition Chapter 6: User-Defined Functions I.
Chapter 6. 2 Objectives You should be able to describe: Function and Parameter Declarations Returning a Single Value Pass by Reference Variable Scope.
Chapter 6: User-Defined Functions I
Java Programming: From Problem Analysis to Program Design, 4e Chapter 7 User-Defined Methods.
Chapter 7: User-Defined Methods
Chapter 15: Operator Overloading
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 14: Overloading and Templates.
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 15: Overloading and Templates.
Chapter 6: User-Defined Functions I Instructor: Mohammad Mojaddam
C++ for Engineers and Scientists Third Edition
1 Chapter 9 Scope, Lifetime, and More on Functions.
A First Book of C++: From Here To There, Third Edition2 Objectives You should be able to describe: Function and Parameter Declarations Returning a Single.
Chapter 6: Modularity Using Functions. In this chapter, you will learn about: – Function and parameter declarations – Returning a single value – Returning.
C++ for Engineers and Scientists Second Edition Chapter 6 Modularity Using Functions.
Chapter 6: User-Defined Functions
C++ Programming: From Problem Analysis to Program Design, Fifth Edition, Fifth Edition Chapter 7: User-Defined Functions II.
Project 1 Due Date: September 25 th Quiz 4 is due September 28 th Quiz 5 is due October2th 1.
CHAPTER 5 FUNCTIONS I NTRODUCTION T O C OMPUTER P ROGRAMMING (CSC425)
USER-DEFINED FUNCTIONS. STANDARD (PREDEFINED) FUNCTIONS  In college algebra a function is defined as a rule or correspondence between values called the.
Data Structures Using C++ 2E Chapter 3 Pointers. Data Structures Using C++ 2E2 Objectives Learn about the pointer data type and pointer variables Explore.
Chapter 12: Pointers, Classes, Virtual Functions, and Abstract Classes.
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 6: User-Defined Functions I.
User Defined Functions Chapter 7 2 Chapter Topics Void Functions Without Parameters Void Functions With Parameters Reference Parameters Value and Reference.
A FIRST BOOK OF C++ CHAPTER 6 MODULARITY USING FUNCTIONS.
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 15: Overloading and Templates.
User Defined Methods Methods are used to divide complicated programs into manageable pieces. There are predefined methods (methods that are already provided.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 6: User-Defined Functions I.
An Introduction to Programming with C++ Sixth Edition Chapter 10 Void Functions.
User-Defined Functions II TK1914: C++ Programming.
Chapter 13: Overloading and Templates. Objectives In this chapter, you will – Learn about overloading – Become familiar with the restrictions on operator.
Functions Math library functions Function definition Function invocation Argument passing Scope of an variable Programming 1 DCT 1033.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 6: User-Defined Functions I.
Scis.regis.edu ● CS-361: Control Structures Week 2 Dr. Jesús Borrego Lead Faculty, COS Regis University 1.
1 MORE ON MODULAR DESIGN: MODULE COMMUNICATIONS. 2 WHEN A FUNCTION IS INVOKED, MEMORY IS ALLOCATED LOCALLY FOR THE FORMAL PARAMETERS AND THE VALUE OF.
Chapter 3: User-Defined Functions I
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 6: User-Defined Functions I.
1 Chapter 9 Scope, Lifetime, and More on Functions.
1 Scope Lifetime Functions (the Sequel) Chapter 8.
Chapter 7 - Functions. Functions u Code group that performs single task u Specification refers to what goes into and out of function u Design refers to.
A First Book of ANSI C Fourth Edition
1 Chapter 8 Scope, Lifetime, and More on Functions CS185/09 - Introduction to Programming Caldwell College.
Chapter 9: Value-Returning Functions
Chapter 7 User-Defined Methods.
Java Programming: From Problem Analysis to Program Design, 3e Chapter 7 User-Defined Methods.
Chapter 6: User-Defined Functions I
Chapter 7: User-Defined Functions II
Chapter 13: Pointers, Classes, Virtual Functions, and Abstract Classes
Java Programming: Guided Learning with Early Objects
Chapter 10: Void Functions
Programmazione I a.a. 2017/2018.
User-Defined Functions
C++ for Engineers and Scientists Second Edition
Chapter 12: Pointers, Classes, Virtual Functions, and Abstract Classes
User Defined Functions
Chapter 7: User-Defined Functions II
Chapter 6: User-Defined Functions I
Presentation transcript:

Chapter 7: User-Defined Functions II Instructor: Mohammad Mojaddam

Objectives 2 In this chapter, you will: Learn how to construct and use void functions in a program Discover the difference between value and reference parameters Explore reference parameters and value-returning functions Learn about the scope of an identifier

Objectives (cont'd.) 3 Examine the difference between local and global identifiers Discover static variables Learn how to debug programs using drivers and stubs Learn function overloading Explore functions with default parameters

Void Functions 4 Void functions and value-returning functions have similar structures  Both have a heading part and a body User-defined void functions can be placed either before or after the function main If user-defined void functions are placed after the function main  The function prototype must be placed before the function main

Void Functions (cont'd.) 5 A void function does not have a return type  return statement without any value is typically used to exit the function early Formal parameters are optional A call to a void function is a stand-alone statement

Void Functions (cont'd.) 6 Function definition syntax: Formal parameter list syntax:  The symbol & after dataType has a special meaning; it is used only for certain formal parameters.

Void Functions (cont'd.) 7 Function call syntax: Actual parameter list syntax:

C++ Programming: From Problem Analysis to Program Design, Fifth Edition 8

9

10

C++ Programming: From Problem Analysis to Program Design, Fifth Edition 11

Void Functions (cont'd.) 12

Void Functions (cont'd.) 13 Value parameter: a formal parameter that receives a copy of the content of corresponding actual parameter Reference parameter: a formal parameter that receives the location (memory address) of the corresponding actual parameter

Void Functions (cont'd.) 14

Value Parameters 15 If a formal parameter is a value parameter  The value of the corresponding actual parameter is copied into it The value parameter has its own copy of the data During program execution  The value parameter manipulates the data stored in its own memory space

Value Parameters: Example 16

Value Parameters: Example 17

Reference Variables as Parameters 18 If a formal parameter is a reference parameter  It receives the memory address of the corresponding actual parameter A reference parameter stores the address of the corresponding actual parameter During program execution to manipulate data  The address stored in the reference parameter directs it to the memory space of the corresponding actual parameter

C++ Programming: From Problem Analysis to Program Design, Fifth Edition 19

Example 7-5: Calculate Grade 20

21 Example 7-5: Calculate Grade (cont'd.)

C++ Programming: From Problem Analysis to Program Design, Fifth Edition 22 The statement in Line 2 calls the function getScore with the actual parameter courseScore (a variable declared in main). Because the formal parameter score of the function getScore is a reference parameter, the address (that is, the memory location of the variable courseScore ) passes to score. Any changes made to score immediately change the value of courseScore. Example 7-5: Calculate Grade (cont'd.)

C++ Programming: From Problem Analysis to Program Design, Fifth Edition 23 The statement in Line 5 reads and stores the value entered by the user (85 in the sample run) in score, which is actually courseScore (because score is a reference parameter). Next, the statement in Line 6 outputs the value of score as shown by the third line of the sample run. After Line 6 executes, control goes back to the function main Example 7-5: Calculate Grade (cont'd.)

C++ Programming: From Problem Analysis to Program Design, Fifth Edition 24 The statement in Line 3 executes next. It is a function call to the function printGrade with the actual parameter courseScore. Example 7-5: Calculate Grade (cont'd.)

Reference Variables as Parameters (cont'd.) 25 Reference parameters can:  Pass one or more values from a function  Change the value of the actual parameter Reference parameters are useful in three situations:  Returning more than one value  Changing the actual parameter  When passing the address would save memory space and time

Value and Reference Parameters and Memory Allocation 26 When a function is called  Memory for its formal parameters and variables declared in the body of the function (called local variables) is allocated in the function data area In the case of a value parameter  The value of the actual parameter is copied into the memory cell of its corresponding formal parameter

Value and Reference Parameters and Memory Allocation (cont'd.) 27 In the case of a reference parameter  The address of the actual parameter passes to the formal parameter  That is, the content of the formal parameter is an address. During data manipulation, the content of the formal parameter directs the computer to manipulate the data of the memory cell indicated by its content. Thus, in the case of a reference parameter, both the actual and formal parameters refer to the same memory location. Consequently, during program execution, changes made by the formal parameter permanently change the value of the actual parameter

Value and Reference Parameters and Memory Allocation (cont'd.) 28

Value and Reference Parameters and Memory Allocation (cont'd.) 29

Value and Reference Parameters and Memory Allocation (cont'd.) 30

Value and Reference Parameters and Memory Allocation (cont'd.) 31

Value and Reference Parameters and Memory Allocation (cont'd.) 32

Value and Reference Parameters and Memory Allocation (cont'd.) 33

Value and Reference Parameters and Memory Allocation (cont'd.) 34

Value and Reference Parameters and Memory Allocation (cont'd.) 35

Value and Reference Parameters: Example 36

Value and Reference Parameters: Example 37

Value and Reference Parameters: Example 38

Value and Reference Parameters: Example 39

Value and Reference Parameters: Example 40

Reference Parameters and Value-Returning Functions 41 By definition, a value-returning function returns a single value  This value is returned via the return statement If a function needs to return more than one value, you should change it to a void function and use the appropriate reference parameters to return the values

Scope of an Identifier 42 The scope of an identifier refers to where in the program an identifier is accessible (Recall that an identifier is the name of something in C++, such as a variable or function name.) Local identifier: identifiers declared within a function Global identifier: identifiers declared outside of every function definition C++ does not allow nested functions  The definition of one function cannot be included in the body of another function

Scope of an Identifier (cont'd.) 43 Rules when an identifier accessed:  Global identifiers  Declared before function definition  Function name different from identifier  Parameters to function have different names  All local identifiers have different names

Scope of an Identifier (cont'd.) 44

Scope of an Identifier (cont'd.) 45

Scope of an Identifier (cont'd.) 46

Scope of an Identifier (cont'd.) 47

Scope of an Identifier (cont'd.) 48

Scope of an Identifier (cont'd.) 49  Nested block  Identifier accessible from declaration to end of block  Within nested blocks if no identifier with same name exists  Scope of function name similar to scope of identifier declared outside any block(That is, the scope of a function name is the same as the scope of a global variable)

Scope of an Identifier (cont'd.) 50 Some compilers initialize global variables to default values The operator :: is called the scope resolution operator ::t By using the scope resolution operator  A global variable declared before the definition of a function (block) can be accessed by the function (or block) Even if the function (or block) has an identifier with the same name as the variable

C++ Programming: From Problem Analysis to Program Design, Fifth Edition 51

Scope of an Identifier (cont'd.) 52 C++ provides a way to access a global variable declared after the definition of a function  In this case, the function must not contain any identifier with the same name as the global variable In example:  To declare w as an external variable inside function one, the function one must contain the following statement:

Global Variables, Named Constants, and Side Effects 53 Using global variables causes side effects A function that uses global variables is not independent If more than one function uses the same global variable and something goes wrong  It is difficult to find what went wrong and where  Problems caused by global variables in one area of a program might be misunderstood as problems caused in another area Global named constants have no side effects

Global Variables, Named Constants, and Side Effects 54

Global Variables, Named Constants, and Side Effects 55

C++ Programming: From Problem Analysis to Program Design, Fifth Edition 56 You can manipulate the value of t by using either a reference parameter or t itself If the last value of t is incorrect, it would be difficult to determine what went wrong and in which part of the program. Strongly recommended that do not use global variables; Instead, use the appropriate parameters.

Example 57

Example 58

Example 59

Example 60

Example 61

Static and Automatic Variables 62 Automatic variable: memory is allocated at block entry and deallocated at block exit  By default, variables declared within a block are automatic variables Static variable: memory remains allocated as long as the program executes  Variables declared outside of any block are static variables  Declare a static variable within a block by using the reserved word static

Static and Automatic Variables (cont'd.) 63 The syntax for declaring a static variable is: The statement static int x; declares x to be a static variable of the type int Static variables declared within a block are local to the block  Their scope is the same as any other local identifier of that block

C++ Programming: From Problem Analysis to Program Design, Fifth Edition 64

C++ Programming: From Problem Analysis to Program Design, Fifth Edition 65

C++ Programming: From Problem Analysis to Program Design, Fifth Edition 66 Because memory for static variables remains allocated between function calls, static variables allow you to use the value of a variable from one function call to another function call. Even though you can use global variables if you want to use certain values from one function call to another, the local scope of a static variable prevents other functions from manipulating its value.

Debugging: Using Drivers and Stubs 67 Driver program: separate program to test a function  Make sure that each function is working properly When results calculated by one function are needed in another function  Use a stub: function that is not fully coded

Function Overloading: An Introduction 68 In a C++ program, several functions can have the same name  This is called function overloading or overloading a function name

Function Overloading (cont'd.) 69 Two functions are said to have different formal parameter lists if both functions have:  A different number of formal parameters, or  If the number of formal parameters is the same, then the data type of the formal parameters, in the order you list them, must differ in at least one position

Function Overloading (cont'd.) 70 The following functions all have different formal parameter lists: The following functions have the same formal parameter list:

Function Overloading (cont'd.) 71 Function overloading: creating several functions with the same name The signature of a function consists of the function name and its formal parameter list Two functions have different signatures if they have either different names or different formal parameter lists Note that the signature of a function does not include the return type of the function

Function Overloading (cont'd.) 72 Correct function overloading: Syntax error:

C++ Programming: From Problem Analysis to Program Design, Fifth Edition 73 If a function is overloaded, then in a call to that function, the signature—that is, the formal parameter list of the function—determines which function to execute

Functions with Default Parameters 74 In a function call, the number of actual and formal parameters must be the same  C++ relaxes this condition for functions with default parameters You specify the value of a default parameter when the function name appears for the first time (e.g., in the prototype) If you do not specify the value of a default parameter, the default value is used

Functions with Default Parameters (cont'd.) 75 All default parameters must be the right most parameters of the function In a function call where the function has more than one default parameter and a value to a default parameter is not specified:  You must omit all of the arguments to its right However, you cannot assign a constant value as a default value to a reference parameter

Functions with Default Parameters (cont'd.) 76 Consider the following prototype: Assume:  a, b are int, ch is char, d is double Examples of legal calls: Examples of illegal calls:

Functions with Default Parameters (cont'd.) 77 Examples of illegal function prototypes with default parameters:

Programming Example: Classify Numbers 78 In this example, we use functions to rewrite the program that determines the number of odds and evens from a given list of integers Main algorithm remains the same:  Initialize variables, zeros, odds, evens to 0  Read a number  If number is even, increment the even count  If number is also zero, increment the zero count; else increment the odd count  Repeat Steps 2-3 for each number in the list

Programming Example: Classify Numbers 79 The program functions include:  initialize : initialize the variables, such as zeros, odds, and evens  getNumber : get the number  classifyNumber : determine if number is odd or even (and whether it is also zero); this function also increments the appropriate count  printResults : print the results

Programming Example: Classify Numbers 80

Programming Example: Classify Numbers 81

Programming Example: Main Algorithm 82 Call initialize to initialize variables Prompt the user to enter 20 numbers For each number in the list  Call getNumber to read a number  Output the number  Call classifyNumber to classify the number and increment the appropriate count Call printResults to print the final results

Programming Example: Main Algorithm (cont’d.) 83

Summary 84 Void function: does not have a data type  A return statement without any value can be used in a void function to exit it early  The heading starts with the word void  To call the function, you use the function name together with the actual parameters in a stand-alone statement Two types of formal parameters:  Value parameters  Reference parameters

Summary (cont'd.) 85 A value parameter receives a copy of its corresponding actual parameter A reference parameter receives the memory address of its corresponding actual parameter  If a formal parameter needs to change the value of an actual parameter, you must declare this formal parameter as a reference parameter in the function heading

Summary (cont'd.) 86 Variables declared within a function (or block) are called local variables Variables declared outside of every function definition (and block) are global variables Automatic variable: variable for which memory is allocated on function/block entry and deallocated on function/block exit Static variable: memory remains allocated throughout the execution of the program C++ functions can have default parameters