cs 1400 chap 6 functions. library routines are functions! root = sqrt (a); power = pow (b, c);...
Post on 22-Dec-2015
213 views
TRANSCRIPT
Library routines are functions!
root = sqrt (a);
power = pow (b, c);
function name
function name
argument
arguments
Functions
• General form;
type Name ( parameters ){ …
return value ;}
parameters is a list of comma-separated declarations – or it can be empty
Example: my_abs()int my_abs (int value){ int answer;
if (value < 0)answer = -value;
elseanswer = value;
return answer;
}
number passed into the function
number passed back from the function
Example: main programint main (){ int number, answer;
cout << “enter a number: “;cin >> number;answer = my_abs (number);cout << “absolute value is: “ << answer << endl;
}
More on functions…
• Functions can be placed– after boilerplate but before main() simplest– below main() covered later– in another file covered later
• A function has its own variables!
types…
• The return value of a function must match the function type.
• Arguments passed to function parameters must match in type and in position.
if either of these rules is neglected, the computer will force (cast) a match.
Value passing…int MyFunc (float a, int b)
{ int temp = x+y;
return temp;
}
int main()
{ float x=5.1;
int z, y=21;
z = MyFunc (x, y);
Examples:
• Function ExampleSquare cout << Square (21.6);
Cube y = Cube (z);
Max cout << Max (a, b);
Abs y = Abs (x);
PrintHead PrintHead();
GetBetween y = GetBetween (21, 80);
Round cout << Round (3.567);
Quiz• Write a void function that accepts two integer
parameters and puts them in numerical order. In other words, if the first is less than the second, their values are exchanged.
• Example use:
int a, b;cout << “Enter two integers: “;cin >> a >> b;Order (a, b);cout << “In order: “ << a << “, “ << b << endl;
Global variables…• Variables declared outside of main() or a
function are globally accessible.int x;int main(){ cout << x;
…
• Local variables may eclipse global variables int x;
int main(){ int x;
cout << x; …
Static variables…• Static variables retain their values when a
function exits and are only created and initialized once
void MyFunc (){ static int counter = 0; cout << counter++;}int main(){ MyFunc(); // outputs 0
MyFunc(); // outputs 1MyFunc(); // outputs 2…
Reference parameters…• A function using reference parameters can
modify corresponding arguments
void Swap (int &a, int &b){ int temp = a;
a = b; b = temp;
}int main() { …
Swap (x, y); Swap (cost, rate);
The value passed or copied into a reference parameter is a forwarding address…
main()
Swap()
x y cost rate
a b
see x in main()
see y in main()
temp
Swap (x, y);
5 9 12 39
main()
Swap()
x y cost rate
a b
see cost in main()
see rate in main()
temp
Swap (cost, rate);
9 5 12 39
main()
Swap()
x y cost rate
a b
see cost in main()
see rate in main()
temp
9 5 12 39
Results…
39 12
12
Example: Max()
• The function Max() is intended to determine the maximum value of a list of N numbers input by the user (The argument N is provided by the caller).
Example: MaxMin()
• The function MaxMin() is intended to determine two values; the maximum and minimum values of a list of 10 numbers input by the user
Functions need not return a value!
• If a function does not return a value, its type is void and it does not need a return
void MyFunc ( int a )
{ cout << “the value is: “ << a;
cout << “and the square is: “ << a*a;
}
Alternate function locations…
• Functions can be placed below calling functions if the function prototype is above the other functions that call it. A prototype is the first line or title of a function – followed by a semicolon.
• Functions can be placed in a separate file if the function prototype is above other functions that call it and the function file is included in the project
Example A
void Swap (int &a, int &b){ int temp = a; a = b; b = temp;}
int main(){ … // function Swap() is used here return 0;}
Example Bvoid Swap (int &a, int &b); // function prototype
int main(){ … // function Swap() is used here return 0;}
void Swap (int &a, int &b){ int temp = a; a = b; b = temp;}
Example C
FILE A.cpp:
void Swap (int &a, int &b);
int main()
{ … // Swap used here
return 0;
}
FILE B.cpp:
void Swap (int &a, int &b)
{ int temp = a;
a = b;
b = temp;
}
Overloading functions…
• Several functions may have the same name
• Each function must have a unique signature– name– number and type of parameters
Note that the return type of a function is not part of its signature!
Default Arguments
• A function may specify default values for parameters in its prototype.
• Example:
• Example function calls:
int TotalPrice (float item_cost; float taxrate = 0.065; int count=1);
cout << TotalPrice (5.98);
cout << TotalPrice (7.95, 0.075);
cout << TotalPrice (3.56, 0.055, 3);
Default Arguments…
• Only the last or ending arguments may have default values
• Illegal:
cout << TotalCost (4.68, , 4); // ERROR!!
Reference Parameters (bis)
• All arguments for reference parameters must be simple variables – expressions are not allowed;
int MyFunc (int x, int& y);
…
z = MyFunc (5+a, 7*b);
OK Illegal!