branching constructs review l what are branching constructs? what type of branching constructs have...
TRANSCRIPT
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
action
true false
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
false
expression
5
The for Statement syntax for(init_statement; expression; post_statement)
action semantics
execute init_statement evaluate expression if true
– execute action
– execute post_statement
– repeat example
for (int i = 0; i < 20; ++i) cout << "i is " << i << endl;
expression
action
true
false
init_statement
post_statement
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