functions & libraries. introduction functions – modules of code uses – abstraction build...
TRANSCRIPT
Introduction
• Functions – Modules of code
• Uses– Abstraction
• Build complex tasks with simpler ones• Don't worry about details at lower level
– Reuse• Avoid rewriting code
Introduction
• 4 things you need to know:1. Name 2. What information it needs
• 0+ items3. What answer it produces
• 0-1 items4. What it does
Introduction
• 4 things you need to know:1. Name 2. What information it needs3. What answer it produces4. What it does
• Function prototype specifies everything but job– Get job from: Name, comments, docs
Function Heading
• Prototype for an absolute value function– Called myAbsoluteValue– Needs an int (will be called number)– Type is int (gives us an integer answer)
Function Heading
• Heading for a function– Called larger– Needs two doubles (will be called x & y)– Type is double (gives us a double answer)
Using Function
• Using a function– Call its name– Provide actual parameters• Values to use for formal parameters• Must be correct type• May be values or expressions
– Function evaluates to value returned
Ex:int num = myAbsoluteValue(-12); int bad = myAbsoluteValue(12.2); //oops need intint xDist = myAbsoluteValue(x2 – x1);
//ok if x2 – x1 is int
Using Function
• Using a function– Call its name– Provide actual parameters• Values to use for formal parameters• Must be correct type• May be values or expressions
– Function evaluates to value returned
Ex:double biggest = larger(12.2, 4.5); double big = larger(10, 2);
//ok implicit cast from int to double
Functions on Variables
• Calling a math function with a variable does not modify variable
double a = 3;double b = pow(a, 2);
a
3.0
Functions on Variables
• Calling a math function with a variable does not modify variable
double a = 3;double b = pow(a, 2);
a
3.0
b
9.0
Function Composition
• Can compose funcitons– Order of evaluation of parameters unspecified
Ex: double x = larger( larger(2, 4), larger(3, 1) );
Function Composition
• Result of a function call can be actual parameter– Order of evaluation of parameters unspecified
Ex: double x = larger( larger(2, 4), larger(3, 1) );
Function Composition
• Result of a function call can be actual parameter– Order of evaluation of parameters unspecified
Ex: double x = larger( larger(2, 4), 3.0);
Function Composition
• Result of a function call can be actual parameter– Order of evaluation of parameters unspecified
Ex: double x = larger(4.0, 3.0);
Function Composition
• Result of a function call can be actual parameter– Order of evaluation of parameters unspecified
Ex: double x = 4.0;
Function Libraries
• Standard Libraries:– Your new best friend:
http://www.cplusplus.com/reference/clibrary/
<cmath>– Math functions
• cos, sin, pow
<iostream>– Console Input/Output
• cout , cin, endl
<ctime>
– Time/timing
<cstdlib>– Random
Essentials
• Trig functions:
• Radians Degrees : radians * 180/PI• Degrees Radians : degrees * PI/180
Function Description
sin(radians) Returns the trigonometric sine of an angle in radians.
cos(radians) Returns the trigonometric cosine of an angle in radians.
tan(radians) Returns the trigonometric tangent of an angle in radians.
asin(a) Returns the angle in radians for the inverse of sine.
acos(a) Returns the angle in radians for the inverse of cosine.
atan(a) Returns the angle in radians for the inverse of tangent.
Constants
• Constants not a part of C/C++ standard
• Most compilers include these with cmath
• For gcc must#define _USE_MATH_DEFINES
before:#include <cmath>
• Does not work in standards mode:Must define own constants
Symbol Expression
Value
M_E e 2.71828182845904523536
M_LOG2E log2(e) 1.44269504088896340736
M_LOG10E log10(e) 0.434294481903251827651
M_LN2 ln(2) 0.693147180559945309417
M_LN10 ln(10) 2.30258509299404568402
M_PI pi 3.14159265358979323846
M_PI_2 pi/2 1.57079632679489661923
M_PI_4 pi/4 0.785398163397448309616
M_1_PI 1/pi 0.318309886183790671538
M_2_PI 2/pi 0.636619772367581343076
M_2_SQRTPI 2/sqrt(pi) 1.12837916709551257390
M_SQRT2 sqrt(2) 1.41421356237309504880
M_SQRT1_2 1/sqrt(2) 0.707106781186547524401
Essentials
• Exponentials functions: Function Description
exp(x) Returns e raised to power of x (ex).
log(x) Returns the natural logarithm of x (ln(x) = loge(x)).
log10(x) Returns the base 10 logarithm of x (log10(x)).
pow(a, b) Returns a raised to the power of b (ab).
sqrt(x) Returns the square root of x ( x ) for x >= 0.
Essentials
• Rounding/Comparison:
Function Description
ceil(x) x is rounded up to its nearest integer. returned as double
floor(x) x is rounded down to its nearest integer. returned as double
abs(x) x is made positive
min(a, b) returns smaller of a or b
max(a, b) returns larger of a or b
Case Study: Computing Angles of a Triangle
Write a program that prompts the user to enter the x- and y-coordinates of the three corner points in a triangle and then displays the triangle’s angles.
A
B
C
a
b
c
A = acos((a * a - b * b - c * c) / (-2 * b * c))
B = acos((b * b - a * a - c * c) / (-2 * a * c))
C = acos((c * c - b * b - a * a) / (-2 * a * b))
x1, y1
x2, y2
x3, y3