iterative constructs
Download
Report
Transcript iterative constructs
Branching Constructs Review
what are branching constructs? what type of branching
constructs have we studied?
what is nested if?
what is multiway if? How does multiway if relate to nested if?
what is a switch statement? is it better than multiway if?
what does break inside switch do?
what is conditional assignment? what construct can be used
instead?
what are named constants? why are they needed?
what is a block? what is special about declaring a variable
inside a block? what is a scope of a variable?
what is programming idiom?
what is a unary, binary, ternary operator?
1
Iterative Constructs
while, for, do-while
Iterative Constructs
provide
ability to execute the same code multiple times
three constructs
while statement
do-while statement
for statement
3
The while Statement
syntax
while (expression)
action
semantics
if expression is true then
execute action
repeat this process until
expression evaluates to
false
action is either a single
statement or a block
expression
true
false
action
4
The do-while Statement
syntax
do
action
while (expression);
semantics
execute action
if expression is true then
execute action again
repeat this process until
expression evaluates to
false
action is either a single
statement or a block
action
true
expression
false
5
The for Statement
init_statement
syntax
for(init_statement;
expression
expression; post_statement)
action
true
semantics
execute init_statement
action
evaluate expression if true
– execute action
– execute post_statement
post_statement
– repeat
example
for (int i = 0; i < 20; ++i)
cout << "i is " << i << endl;
false
6
Iterate and Keep Track Idiom
what is idiom again?
often need to iterate while keep track of some value across iterations –
maximum found, sum, if all positive, etc.
idiom
before loop declare variable to keep track, initialize it
inside loop, update tracking variable, use branching if necessary to
examine
after loop, use the tracking variable that accumulated the result
example:
cout << "Input number [0 to quit]: ";
int max, n;
cin >> n; max = n;
while (n != 0 ) {
cin >> n;
if ( n > max) max = n;
}
cout << ”Maximum number: ” << max << endl;
7
Break and Continue with
Iterative Constructs
break - exits innermost loop
int sum=0;
while(sum < 100) {
int i; cin >> i;
if (i< 0) {
cout << ”found negative number\n”;
break;
}
sum +=i;
}
continue - skip the remaining statements and start a new iteration (evaluate
expression)
int sum=0;
for (int i = 0; i < 20; ++i) {
int intVar; cin >> intVar;
if(intVar < 0) continue;
sum +=i;
}
avoid break/continue with loops as they make code less readable (avoid regular
loop exit)
first try to code loop without them
8
Nesting of Iterative Constructs
iterative constructs can be nested: one iterative construct may be
inside the body of another
example:
for (int i = 0; i < 10; ++i) // outer loop
for (int j = 0; j < 10; ++j) // inner loop
cout << i << j << endl;
what would this code output?
note, there is no need for curly brackets
nesting may be more than two loops deep
for/while/do-while can be mixed in nesting
besides nested loops, loop body may contain other code
including branching constructs: a branching construct nested
in the loop
9
Iteration
key points
make sure there is a statement that will eventually nullify the
iteration criterion (i.e., the loop must stop)
make sure that initialization of any loop counters or iterators is
properly performed
have a clear purpose for the loop
document the purpose of the loop and how the body of the
loop advances the purpose of the loop
10