predefined functions
Download
Report
Transcript predefined functions
Iterative Constructs Review
what is a block? what is special about declaring a variable inside a block?
what is the difference between while and do-while? Can one replace
the other?
what does for do? Why is it needed? what is init-statement, expression,
post-statement in for? Can for replace while/do-while? is reverse
possible?
what is loop variable? Where is it declared in for? What is its scope?
how is break used inside an iterative construct?
what is continue? how is it used?
what is iterate-and-keep-track idiom? what is tracking variable?
what’s a nested iterative construct? what is inner/outer loop? How many
loops can be nested in C++?
1
Predefined Functions
Predefined Functions
C++ comes with libraries of code that can be reused in your programs. The code comes in
the form of pre-defined functions
what is the program that adds pre-defined functions to your code to produce executable?
function name – identifier distinguishing the function from others;
example square root function: sqrt
argument – the value function starts out with; function may have more than one argument;
an argument is an expression (thus, can be just a simple constant or variable);
return value - value computed by the function
result = sqrt(9.0);
function call (function invocation) – expression consisting of function name followed by
arguments in parentheses
nested function call – function call used as an argument for another function
result = sqrt(abs(myVar));
function accepts arguments of certain type and returns value of certain type
sqrt accepts and returns double
to use a function, need to specify include directive:
#include <cmath>
argument may be arbitrary expression
result = sqrt(myVar + 9.0);
3
Type Changing Functions
is there a problem with this code?
int a=9, b=2;
double c=a/b;
casting - explicit type conversion
static_cast<type> converts to type
example:
int a=9, b=2;
double c=static_cast<double>(a)/b;
wrong application of casting:
int a=9, b=2;
double c=static_cast<double>(a/b);
coercion – implicit type conversion
example:
int a=55;
double c = a + 30;
integer expression coerced to double before assignment
4
Random Number Generation
(pseudo) random number generation pre-defined functions are used to
create events unpredictable by user (e.g. events in games)
need to include <cstdlib>
generates a series of numbers, numbers within series are (pseudo)
random
srand(seed) – initializes random number generator, needs to be invoked
once in the program, no return value
seed – selects the (pseudo) random series
rand() – returns a new integer random number in the series, can be used
multiple times in program
the number is from 0 to MAX_RAND – a named constant predefined in
<cstdlib>
ranged random idiom: to get a random number in a specific range, take
a remainder of that range. Example, random number between 0 and 9
can be obtained as:
int myRandValue = rand() % 10;
5
Selecting Random Series with time()
time(nullptr) – returns number of seconds since 01/01/1970,
good for initializing unique series, needs <ctime>
nullptr is there for historical reasons
selecting series
srand(1); - repeats series every time you run your program –
good for debugging
srand(time(nullptr)); - selects unpredictable series every
time you run your program – good for final compilation
srand()
seed
1
1
2
2
time()
rand() invocation
1
41
41
45
45
14987
2
18467
18467
29216
29216
9212
3
6334
6334
24198
24198
26926
4
26500
26500
17795
17795
31604
5
19169
19169
29484
29484
11201
6
15724
15724
19650
19650
32623
6