250 likes | 362 Views
CS 1400. Chap 6. Functions. General form; type Name ( parameters ) { … return value ; } parameters is a list of comma-separated declarations. More on functions…. Functions can be placed after boilerplate but before main() simplest after main() covered later
E N D
CS 1400 Chap 6
Functions • General form; typeName ( parameters ) { … return value ; } parametersis a list of comma-separated declarations
More on functions… • Functions can be placed • after boilerplate but before main() simplest • after 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);
Value passing diagrams… main() z x y 5.1 21 MyFunc() temp MyFunc (x, y); a b 5.1 21
Examples: • Function Example Square 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);
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 1 MyFunc(); // 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);
main() The value passed or copied into a reference parameter is a forwarding address… x y cost rate 5 9 12 39 Swap() temp Swap (x, y); a b see x in main() see y in main()
main() Results… x y cost rate 5 9 12 39 9 5 Swap() temp 5 a b see x in main() see y in main()
main() x y cost rate 9 5 12 39 Swap() temp a b Swap (cost, rate); see cost in main() see rate in main()
Results… main() x y cost rate 9 5 12 39 39 12 Swap() temp 12 a b see cost in main() see rate in main()
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 B void 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);
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); Illegal! OK