0% found this document useful (0 votes)
32 views87 pages

Chpater 6

c ++

Uploaded by

yacob
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)
32 views87 pages

Chpater 6

c ++

Uploaded by

yacob
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/ 87

C++ Programming:

Chapter 6: User-Defined Functions I


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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 2


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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 3
Introduction (continued)

• Functions
− Called modules
− Like miniature programs
− Can be put together to form a larger program

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 4


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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 5


Predefined Functions (continued)

• 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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 6
Predefined Functions (continued)
• 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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 7


Predefined Functions (continued)

• 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

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


Predefined Functions (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 9


Predefined Functions (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 10


Predefined Functions (continued)

• Example 6-1 sample run:

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 15


Value-Returning Functions
(continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 16


Value-Returning Functions
(continued)
• 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)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 17


Syntax: Value-Returning Function

• Syntax:

• functionType is also called the data type


or return type

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 18


Syntax: Formal Parameter List

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


Function Call

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 20


Syntax: Actual Parameter List

• The syntax of the actual parameter list is:

• Formal parameter list can be empty:

• A call to a value-returning function with an


empty formal parameter list is:

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 21


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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 22


Syntax: 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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 23
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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 25


Function Prototype (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 27


Palindrome Number

• A nonnegative integer is a palindrome if it


reads forward and backward in the same way
− Examples: 5, 44, 789656987

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 28


Palindrome Number (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 29


Flow of Execution

• Execution always begins at the first statement


in the function main
• Other functions are executed only when they
are called
• Function prototypes appear before any
function definition
− The compiler translates these first
• The compiler can then correctly translate a
function call
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 30
Flow of Execution (continued)

• A function call results in transfer of control to


the first statement in the body of the called
function
• After the last statement of a function is
executed, control is passed back to the point
immediately following the function call
• A value-returning function returns a value
− After executing the function the returned value
replaces the function call statement

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 31


Programming Example: Largest
Number
• The function larger is used to determine the
largest number from a set of numbers
• Program determines the largest number from
a set of 10 numbers
• Input: a set of 10 numbers
• Output: the largest of 10 numbers

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 32


Programming Example: Program
Analysis
• Suppose that the input data is:
15 20 7 8 28 21 43 12 35 3
• Read the first number of the data set
− Because this is the only number read to this
point, you may assume that it is the largest
number so far and call it max
• Read the second number and call it num
− Compare max and num, and store the larger
number into max

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 33


Programming Example: Program
Analysis (continued)
• Now max contains the larger of the first two
numbers
• Read the third number and compare it with max
and store the larger number into max
− max contains the largest of the first three
numbers
• Read the next number, compare it with max,
and store the larger into max
• Repeat this process for each remaining number
in the data set
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 34
Programming Example: Algorithm
Design
• Read the first number
− Because this is the only number that you have
read, it is the largest number so far
− Save it in a variable called max
• For each remaining number in the list
− Read the next number
− Store it in a variable called num
− Compare num and max

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 35


Programming Example: Algorithm
Design (continued)
• For each remaining number in the list
(continued)
− If max < num
• num is the new largest number
• update the value of max by copying num into max
− If max >= num, discard num; that is, do
nothing
• Because max now contains the largest
number, print it

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 36


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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 37
Summary (continued)

• 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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 38
Summary (continued)

• 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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 39
Objectives

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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 40


Objectives (continued)

• Examine the difference between local and


global identifiers
• Discover static variables
• Learn function overloading
• Explore functions with default parameters

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 41


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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 42


Void Functions (continued)

• 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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 43


Void Functions without Parameters

• Function definition syntax:

• void is a reserved word


• Function call syntax:

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 44


Void Functions with Parameters
• Function definition syntax:

• Formal parameter list syntax:

• Function call syntax:

• Actual parameter list syntax:

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 45


Void Functions with Parameters
(continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 46


Void Functions with Parameters
(continued)
• 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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 47


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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 48


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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 49
Reference Variables as Parameters
(continued)
• 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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 50


Calculate Grade

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


Calculate Grade (continued)

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 52


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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 54


Value and Reference Parameters
and Memory Allocation (continued)
• 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
• Stream variables (e.g., ifstream) should be
passed by reference to a function

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 55


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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 63


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

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


Scope of an Identifier (continued)

• Some compilers initialize global variables to


default values
• The operator :: is called the scope resolution
operator
• 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, Fourth Edition 66
Scope of an Identifier (continued)

• 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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 67


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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 68
Static and Automatic Variables
• 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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 69
Static and Automatic Variables
(continued)
• 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, Fourth Edition 70
Function Overloading: An
Introduction
• In a C++ program, several functions can have
the same name
− This is called function overloading or
overloading a function name

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 71


Function Overloading (continued)

• 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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 72


Function Overloading (continued)

• The following functions all have different


formal parameter lists:

• The following functions have the same formal


parameter list:

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 73


Function Overloading (continued)

• 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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 74


Function Overloading (continued)

• Correct function overloading:

• Syntax error:

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 75


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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 76


Functions with Default Parameters
(continued)
• 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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 77
Functions with Default Parameters
(continued)
• Consider the following prototype:

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

• Examples of illegal calls:

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 78


Functions with Default Parameters
(continued)
• Examples of illegal function prototypes with
default parameters:

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 79


Programming Example: Classify
Numbers
• 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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 80
Programming Example: Classify
Numbers (continued)
• 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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 81


Programming Example: Main
Algorithm
• 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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 83


Summary
• 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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 85
Summary (continued)

• 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

C++ Programming: From Problem Analysis to Program Design, Fourth Edition 86


Summary (continued)

• 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
C++ Programming: From Problem Analysis to Program Design, Fourth Edition 87

You might also like