Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names ...
-
Upload
monica-little -
Category
Documents
-
view
236 -
download
0
Transcript of Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names ...
![Page 1: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/1.jpg)
Functions
Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in Functions
![Page 2: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/2.jpg)
Programmer-Defined Functions
![Page 3: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/3.jpg)
function declaration
function header
function body
function definition
function call
![Page 4: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/4.jpg)
Programmer-Defined Functions Two components
Function declaration (or function prototype) Shows how the function is called Must appear in the code before the function can be
called Syntax:Type_returned Function_Name(Parameter_List);//Comment describing what function does
Function definition Describes how the function does its task Can appear before or after the function is called Syntax: Type_returned Function_Name(Parameter_List){ //code to make the function work}
;
![Page 5: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/5.jpg)
Function Declaration
Tells the return type Tells the name of the function Tells how many arguments are needed Tells the types of the arguments Tells the formal parameter names
Formal parameters are like placeholders for the actual arguments used when the function is called
Formal parameter names can be any valid identifier
Example:
double total_cost(int number_par, double price_par);// Compute total cost including 5% sales tax on// number_par items at cost of price_par each
![Page 6: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/6.jpg)
Function Definition
Provides the same information as the declaration Describes how the function does its task
Example:
double total_cost(int number_par, double price_par){ const double TAX_RATE = 0.05; //5% tax double subtotal; subtotal = price_par * number_par; return (subtotal + subtotal * TAX_RATE);}
function body
![Page 7: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/7.jpg)
The return Statement
Ends the function call Returns the value calculated by the function Syntax:
return expression; expression performs the calculation
or expression is a variable containing the
calculated value Example:
return subtotal + subtotal * TAX_RATE;
![Page 8: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/8.jpg)
Function Call Details
The values of the arguments are plugged into the formal parameters (Call-by-Value mechanism with call-by-value parameters) The first argument is used for the first formal
parameter, the second argument for the secondformal parameter, and so forth.
The value plugged into the formal parameter is usedin all instances of the formal parameter in the function body
![Page 9: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/9.jpg)
1. Before the function is called, values of the variable number and price are set to 2 and 10, by cin statements.
2. The function call executes and the value of number (which is 2) plugged in for number_par and value of price (which is 10.10) plugged in for price_par.
As for this function call, number and price are arguments
![Page 10: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/10.jpg)
3. The body of the function executes with number_par set to 2 and price_par set to 10.10, producing the value 20.20 in subtotal.
4. When the return statement is executed, the value of the expression after return is evaluated and returned by the function in this case. (subtotal + subtotal * TAX_RATE) is (20.20+20.20*0.05) or 21.21.
![Page 11: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/11.jpg)
5. The value 21.21 is returned to where the function was invoked or called. The result is that total_cost (number, price) is replaced by the return value of 21.21. The value of bill is set equal to 21.21 when the statement bill=total_cost(number,price); ends.
![Page 12: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/12.jpg)
![Page 13: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/13.jpg)
Function Call
Tells the name of the function to use Lists the arguments Is used in a statement where the returned
valuemakes sense
Example:
double bill = total_cost(number, price);
![Page 14: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/14.jpg)
Automatic Type Conversion
Given the definition double mpg(double miles, double gallons) { return (miles / gallons); } what will happen if mpg is called in this way?
cout << mpg(45, 2) << “ miles per gallon”;
The values of the arguments will automatically beconverted to type double (45.0 and 2.0)
14
![Page 15: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/15.jpg)
Function Declarations
Two forms for function declarations List formal parameter names List types of formal parameters, but not names Description of the function in comments
Examples:
double total_cost(int number_par, double price_par);
double total_cost(int, double);
But in definition, function headers must always list formal parameter names!
![Page 16: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/16.jpg)
Order of Arguments Compiler checks that the types of the arguments
are correct and in the correct order! Compiler cannot check that arguments are in the
correct logical order Example: Given the function declaration:
char grade(int received_par, int min_score_par);
int received = 95, min_score = 60;
cout << grade( min_score, received);
Produces a faulty result because the arguments are not in the correct logical order. The compiler will not catch this!
![Page 17: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/17.jpg)
Function Definition Syntax
within a function definition … Variables must be declared before they are used Variables are typically declared before the
executable statements begindouble total_cost(int number_par, double price_par){ const double TAX_RATE = 0.05; //5% tax double subtotal; subtotal = price_par * number_par; return (subtotal + subtotal * TAX_RATE);}
At least one return statement must end the function Each branch of an if-else statement or a switch
statement might have its own return statement
Example: char grade(int received_par, int min_score_par)
![Page 18: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/18.jpg)
![Page 19: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/19.jpg)
Placing Definitions
A function call must be preceded by either The function’s declaration
or The function’s definition
If the function’s definition precedes the call, a declaration is not needed
Placing the function declaration prior to the
main function and the function definitionafter the main function leads naturally to building your own libraries in the future.
![Page 20: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/20.jpg)
Formal Parameter Names
Functions are designed as self-contained modules Programmers choose meaningful names for
formal parameters Formal parameter names may or may not match
variable names used in the main part of the program
It does not matter if formal parameter names match other variable names in the program
Remember that only the value of the argument is plugged into the formal parameter
20Example next
Recall the memory structure of a program.
![Page 21: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/21.jpg)
21
![Page 22: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/22.jpg)
Program Testing Programs that compile and run can still produce errors Testing increases confidence that the program
works correctly Run the program with data that has known output
You may have determined this output with pencil and paperor a calculator
Run the program on several different sets of data Your first set of data may produce correct results in
spite of a logical error in the code Remember the integer division problem? If there is no
fractional remainder, integer division will give apparently correct results
22
![Page 23: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/23.jpg)
Use Pseudocode
Pseudocode is a mixture of English and the programming language in use
Pseudocode simplifies algorithm design by allowing you to ignore the specific syntax of
the programming language as you work out
the details of the algorithm If the step is obvious, use C++ If the step is difficult to express in C++,
use English
23
![Page 24: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/24.jpg)
Local Variables in Functions
![Page 25: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/25.jpg)
Local variables in a function
Variables declared in a function: Are local to that function, i.e., they cannot be
used from outside the function
Have the function as their scope Variables declared in the main part of a program:
Are local to the main part of the program, they cannot be used from outside the main part
Have the main part as their scope
25
![Page 26: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/26.jpg)
26
![Page 27: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/27.jpg)
27
![Page 28: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/28.jpg)
Global Constants
Global Named Constant declared outside any function body declared outside the main function body declared before any function that uses it available to more than one function as well as the
main part of the program Example:
const double PI = 3.14159; double area(double);
int main() {…} PI is available to the main function and to
function volume28
![Page 29: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/29.jpg)
29
![Page 30: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/30.jpg)
30
![Page 31: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/31.jpg)
Global Variables
Global Variable -- rarely used when morethan one function must use a common variable Declared just like a global constant
except keyword const is not used Generally make programs more difficult
to understand and maintain
31
![Page 32: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/32.jpg)
Formal Parameters are Local Variables
Formal Parameters are variables that are local to the function definition They are used just as if they were declared in
the function body
Do NOT re-declare the formal parameters in the function body, as they are declared in the functiondeclaration
The call-by-value mechanism When a function is called the formal parameters
are initialized to the values of the arguments in the function call
32
![Page 33: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/33.jpg)
33
Another example
![Page 34: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/34.jpg)
34
![Page 35: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/35.jpg)
Block Scope
Local and global variables conform to the rules of Block Scope
The code block, generally specified by the { }, where an identifier like a variable is declared.
It determines the scope of the identifier.
Blocks can be nested
35
![Page 36: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/36.jpg)
36A variable can be directly accessed only within its scope. Local and Global scopes are examples of Block Scope.
![Page 37: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/37.jpg)
Namespaces Revisited
The start of a file is not always the best place for using namespace std;
Different functions may use different namespaces Placing using namespace std;
inside the starting brace of a function Allows the use of different namespaces in different functions Makes the “using” directive local to the function
37
![Page 38: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/38.jpg)
38
![Page 39: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/39.jpg)
39
![Page 40: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/40.jpg)
Overloading Function Names
![Page 41: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/41.jpg)
Overloading Function Names
Overloading a function name means providing more than one declaration and definition using the same function name
C++ allows more than one definition for the same function name Very convenient for situations in which the
“same”function is needed for different numbers or typesof arguments
41
![Page 42: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/42.jpg)
42
![Page 43: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/43.jpg)
Overloading Examples
double ave(double n1, double n2){ return ((n1 + n2) / 2);}double ave(double n1, double n2, double n3){ return (( n1 + n2 + n3) / 3);}
Compiler checks the number and types of argumentsin the function call to decide which function to use
cout << ave( 10, 20, 30);
uses the second definition
43
![Page 44: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/44.jpg)
Overloading Details
Overloaded functions must return a value of the same type
in addition, they ... must have different numbers of formal
parameters AND / OR
must have at least one different type of parameter
44
![Page 45: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/45.jpg)
Overloading Example
Revising the Pizza Buying program Rectangular pizzas are now offered! Change the input and add a function to compute
the unit price of a rectangular pizza The new function could be named unitprice_rectangular
Or, the new function could be a new (overloaded) version of the unitprice function that is already used
Example:
double unitprice(int length, int width, double price)
{ double area = length * width; return (price / area);
}45
![Page 46: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/46.jpg)
46
![Page 47: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/47.jpg)
47
![Page 48: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/48.jpg)
48
![Page 49: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/49.jpg)
void Functions
![Page 50: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/50.jpg)
Function regarded as code to do some subtask
A subtask might produce No value (e.g., input or output) to be used by a calling
function. One value to be used by the calling function. Multiple values to be used by the calling function.
We have seen how to implement functions thatreturn one value, through a return statement
A void-function implements a subtask that ... either does not give back any value to the calling function
no return statement
or use return; or gives back multiple values to the calling function, via
the call-by-reference parameters
50
![Page 51: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/51.jpg)
void-Function Definition Differences between void-function definitions and the
definitions of functions that return one value thru return statement.
Keyword void replaces the type of the value returned void means that no value is returned by the function thru return
statement The return statement does not include and expression, or
can be removed in some situations. Example:
void show_results(double f_degrees, double c_degrees) { using namespace std; cout << f_degrees <<“ degrees Fahrenheit is euivalent to “
<< endl << c_degrees << “ degrees Celsius.” << endl; return;} 51
![Page 52: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/52.jpg)
52
![Page 53: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/53.jpg)
Calling a void-Function
A void-function call does not need to be part of another statement it ends with a semi-colon
Example: show_results(32.5, 0.3);
NOT: cout << show_results(32.5, 0.3);
53
![Page 54: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/54.jpg)
void-Function Calls
Mechanism is nearly the same as the function calls we have seen Argument values are substituted for (or plugged
in) the formal parameters It is fairly common to have no parameters in void-
functions In this case there will be no arguments in the function
call Statements in function body are executed Optional return statement ends the function
Return statement does not include a value to return Return statement is implicit if it is not included
54
![Page 55: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/55.jpg)
55
![Page 56: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/56.jpg)
56
![Page 57: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/57.jpg)
void-Functions: Why use a return?
Is a return statement ever needed in avoid-function since no value is returned? Yes for some scenarios, e.g.
a branch of an if-else statement requires that the function ends to avoid producing more output, or creating a mathematical error.
void-function in the example on next page (Display 5.3), avoids division by zero with a return statement
57
![Page 58: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/58.jpg)
58
![Page 59: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/59.jpg)
The Main Function
The main function in a program is used like avoid function…do you have to end the programwith a return-statement? Because the main function is defined to return a
value of type int, the return is needed C++ standard says the return 0 can be omitted,
but many compilers still require it
59
![Page 60: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/60.jpg)
Call-By-Reference Parameters in Functions
![Page 61: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/61.jpg)
Call-by-Reference Parameters Call-by-value
A call-by-value parameter of a function receives the values of the corresponding argument during the execution of the function call
Any change made to the value of the parameter in the function body dose not affect the value of the argument
Call-by-reference A call-by-reference parameter of a function is just another
name of the corresponding argument during the execution of the function call
The call-by-reference parameter and the argument refers to the same memory bock.
Any change made on the value of the parameter in the function body is essentially the change made on the value of the argument
Arguments for call-by-reference parameters must bevariables, not numbers
61
![Page 62: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/62.jpg)
62
![Page 63: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/63.jpg)
63
![Page 64: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/64.jpg)
Example: swap_values void swap(int& variable1, int& variable2)
{ int temp = variable1; variable1 = variable2; variable2 = temp;}
& symbol (ampersand) identifies variable1 and variable2 as call-by-reference parameters
used in both declaration and definition! If called with statement ...
swap(first_num, second_num); first_num is substituted for variable1 in the parameter list
first_num and variable1 are two names for the same variable
second_num is substituted for variable2 in the parameter listsecond_num and variable2 are two names for the same variable
temp is assigned the value of variable1 (or first_num) variable1 (or first_num) is assigned the value in variable2
(or second_num) variable2 (or second_num) is assigned the original value of
variable1 (or first_num) which was stored in temp64
![Page 65: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/65.jpg)
Call-By-Reference Details
Call-by-reference works almost as if the argument variable is substituted for the formalparameter, not the argument’s value
In reality, the memory location of the argumentvariable is given to the formal parameter Whatever is done to a formal parameter in the
function body, is actually done to the value at the memory location of the argument variable
65
![Page 66: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/66.jpg)
Mixed Parameter Lists
Call-by-value and call-by-reference parameters can be mixed in the same function
Example, consider the following function declarationvoid good_stuff(int& par1, int par2, double& par3); par1 and par3 are call-by-reference formal
parameters Changes in par1 and par3 are the changes made on
the corresponding argument variables during function call.
par2 is a call-by-value formal parameter Changes in par2 do not change the argument variable
during function call 66
![Page 67: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/67.jpg)
Choosing Parameter Types
How do you decide whether a call-by-referenceor call-by-value formal parameter is needed? Does the function need to change the value of
the variable used as an argument?
Yes? Use a call-by-reference formal parameter No? Use a call-by-value formal parameter
67
![Page 68: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/68.jpg)
68
![Page 69: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/69.jpg)
Inadvertent Local Variables
If a function is to change the value of a variablethe corresponding formal parameter must be a call-by-reference parameter with an ampersand (&) attached
Forgetting the ampersand (&) creates a call-by-value parameter The value of the variable will not be changed The formal parameter is a local variable that
has noeffect outside the function
Hard error to find…it looks right!
69
![Page 70: Functions Programmer-Defined Functions Local Variables in Functions Overloading Function Names void Functions, Call-By-Reference Parameters in.](https://reader036.fdocuments.us/reader036/viewer/2022062320/56649ce35503460f949afbb7/html5/thumbnails/70.jpg)
70