0% found this document useful (0 votes)
17 views54 pages

Chapter_6_Functions

Chapter 6 covers functions in programming, including standard and user-defined functions, value-returning and void functions, and the differences between value and reference parameters. It explains function prototypes, scope of identifiers, function overloading, and default parameters. The chapter emphasizes the importance of functions in organizing code and enhancing program readability.

Uploaded by

Chen Dishan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views54 pages

Chapter_6_Functions

Chapter 6 covers functions in programming, including standard and user-defined functions, value-returning and void functions, and the differences between value and reference parameters. It explains function prototypes, scope of identifiers, function overloading, and default parameters. The chapter emphasizes the importance of functions in organizing code and enhancing program readability.

Uploaded by

Chen Dishan
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 54

CHAPTER 6

FUNCTIONS

1
Objectives
In this chapter, you will:
• Learn about standard (predefined) functions and
discover how to use them in a program
• Learn about user-defined functions
• Examine value-returning functions, including
actual and formal parameters
• Explore how to construct and use a value-
returning, user-defined function in a program

2
Objectives (cont.)
• 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
• Examine the difference between local and global
identifiers
• Learn function overloading
• Explore functions with default parameters
3
Introduction
• Functions are like building blocks
• They allow complicated programs to be divided
into manageable pieces
• Some advantages of functions:
– A programmer can focus on just that part of the
program and construct it, debug it, and perfect it
– Different people can work on different functions
simultaneously
– Can be re-used (even in different programs)
– Enhance program readability

4
Introduction (cont.)
• Functions
– Called modules
– Like miniature programs
– Can be put together to form a larger program

5
Predefined Functions
• In algebra, a function is defined as a rule
or correspondence between values, called
the function’s arguments, and the unique
value of the function associated with the
arguments
– If f(x) = 2x + 5, then f(1) = 7,
f(2) = 9, and f(3) = 11
• 1, 2, and 3 are arguments
• 7, 9, and 11 are the corresponding values

6
Predefined Functions (cont.)
• Some of the predefined mathematical
functions are:
sqrt(x)
pow(x, y)
floor(x)
• Predefined functions are organized into
separate libraries
• I/O functions are in iostream header
• Math functions are in cmath header
7
Predefined Functions (cont.)
• pow(x,y) calculates xy
– pow(2, 3) = 8.0
– Returns a value of type double
– x and y are the parameters (or arguments)
• The function has two parameters
• sqrt(x) calculates the nonnegative
square root of x, for x >= 0.0
– sqrt(2.25) is 1.5
– Type double
8
Predefined Functions (cont.)
• The floor function floor(x) calculates
largest whole number not greater than x
– floor(48.79) is 48.0
– Type double
– Has only one parameter

9
Predefined Functions (cont.)

10
Predefined Functions (cont.)

11
12
User-Defined Functions
• Value-returning functions: have a return
type
– Return a value of a specific data type using
the return statement
• Void functions: do not have a return type
– Do not use a return statement to return a
value

13
Value-Returning Functions
• To use these functions you must:
– Include the appropriate header file in your
program using the include statement
– Know the following items:
• Name of the function
• Number of parameters, if any
• Data type of each parameter
• Data type of the value returned: called the type of
the function
– Function type
14
Value-Returning Functions
(continued)
• Because the value returned by a value-returning
function is unique, we must:
– Save the value for further calculation
– Use the value in some calculation
– Print the value
• A value-returning function is used in an
assignment or in an output statement
• One more thing is associated with functions:
– The code required to accomplish the task

15
16
Value-Returning Functions (cont.)
• Heading: first four properties above
– Example: int abs(int number)
• Formal Parameter: variable declared in the
heading
– Example: number
• Actual Parameter: variable or expression
listed in a call to a function
– Example: x = pow(u, v)
17
Value-Returning Functions (cont.)
• Syntax:

• functionType is also called the data type or


return type
• Formal parameter list can be empty:

18
return Statement
• Once a value-returning function computes the value, the
function returns this value via the return statement
– It passes this value outside the function via the return
statement
– The return statement has the following syntax:

• In C++, return is a reserved word


• When a return statement executes
– Function immediately terminates
– Control goes back to the caller
• When a return statement executes in the function
main, the program terminates

19
20
Function Prototype
• Function prototype: function heading without the
body of the function
• Syntax:

• It is not necessary to specify the variable name


in the parameter list
• The data type of each parameter must be
specified
21
22
23
Void Functions
• Void functions and value-returning functions
have similar structures
– Both have a heading part and a statement part
• 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

24
Void Functions (cont.)
• 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

25
Void Functions without Parameters
• Function definition syntax:

void is a reserved word


• Function call syntax:

26
Void Functions with Parameters
• Function definition syntax:

Example:

27
Void Functions with Parameters
(cont.)
• 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

28
Value Parameters
• 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

29
Reference Variables as Parameters
• 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

30
Reference Variables as Parameters
(cont.)
• 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

31
32
33
Value and Reference Parameters
and Memory Allocation
• 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
34
Value and Reference Parameters
and Memory Allocation (cont.)
• In the case of a reference parameter
– The address of the actual parameter passes
to the formal parameter
• Content of formal parameter is an address
• During execution, changes made by the
formal parameter permanently change the
value of the actual parameter

35
36
37
Reference Parameters and Value-
Returning Functions
• You can also use reference parameters in a
value-returning function
– Not recommended
• 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

38
Scope of an Identifier
• The scope of an identifier refers to where
in the program an identifier is accessible
• Local identifier: identifiers declared within
a function (or block)
• 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
39
Global Variables, Named
Constants, and Side Effects
• Using global variables has 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 in one area of the program may
appear to be from another area
• Global named constants have no side effects

40
Function Overloading
• In a C++ program, several functions can have
the same name
– This is called function overloading or overloading a
function name
• 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
41
Function Overloading (cont.)
• The following functions all have different formal
parameter lists:

• The following functions have the same formal


parameter list:

42
Function Overloading (cont.)
• 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
43
Function Overloading (cont.)
• Correct function overloading:

• Syntax error:

44
Functions with Default Parameters
• 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

45
Functions with Default Parameters
(cont.)
• All default parameters must be the rightmost
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
• Default values can be constants, global
variables, or function calls
– However, you cannot assign a constant value as a
default value to a reference parameter
46
Functions with Default Parameters (cont.)
• Consider the following prototype:

• Assume:
– a, b are int, ch is char, d is double
• Examples of legal calls:

• Examples of illegal calls:

47
Functions with Default Parameters (cont.)

• Examples of illegal function prototypes with


default parameters:

48
Summary
• Functions (modules) are miniature programs
– Divide a program into manageable tasks
• C++ provides the standard functions
• Two types of user-defined functions: value-
returning functions and void functions
• Variables defined in a function heading are
called formal parameters
• Expressions, variables, or constant values in a
function call are called actual parameters
49
Summary (cont.)
• In a function call, the number of actual
parameters and their types must match with the
formal parameters in the order given
• To call a function, use its name together with the
actual parameter list
• Function heading and the body of the function
are called the definition of the function
• If a function has no parameters, you need
empty parentheses in heading and call
• A value-returning function returns its value via
the return statement

50
Summary (cont.)
• A prototype is the function heading without
the body of the function; prototypes end
with the semicolon
• Prototypes are placed before every
function definition, including main
• User-defined functions execute only when
they are called
• In a call statement, specify only the actual
parameters, not their data types
51
Summary (cont.)
• 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

52
Summary (cont.)
• 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
53
Summary (cont.)
• Variables declared within a function (or
block) are called local variables
• Variables declared outside of every
function definition (and block) are global
variables
• C++ functions can have default
parameters
Source:
C++ Programming: From Problem Analysis to Program Design,
Fourth Edition
54

You might also like