Algoritma & Pemrograman
Control Flow (1)
Prepared by
Frans Panduwinata, S.Kom, M.T
Loops
• Loops are used to perform a set of instructions repeatedly.
• The set of instructions to be iterated is called the loop
body.
• C++ offers three language elements to formulate iteration
statements: while, do-while, and for.
• The number of times a loop is repeated is defined by a
controlling expression.
Structogram for while
The while Statement
• The while statement takes the following format:
SYNTAX:
while( expression )
statement // loop body
The while Statement (cont)
• When entering the loop, the controlling expression is
verified, i.e. the expression is evaluated.
– If this value is true,
the loop body is then executed before the controlling expression is
evaluated once more.
– If the controlling expression is false,
i.e. expression evaluates to false, the program goes on to
execute the statement following the while loop.
Building Blocks
• If you need to repeat more than one statement in a
program loop, you must place the statements in a block
marked by parentheses { }.
• A block is syntactically equivalent to a statement, so you
can use a block wherever the syntax requires a statement.
Sample Program
Structogram for for
Initializing and Reinitializing
• A typical loop uses a counter that is initialized, tested by
the controlling expression and reinitialized at the end of
the loop.
EXAMPLE:
int count = 1; // Initialization
while( count <= 10) // Controlling
expression
{
cout<<count<< ". loop"<<endl;
++count; // Reinitialization
}
Initializing and Reinitializing (cont)
• In the case of a for statement the elements that control
the loop can be found in the loop header.
SYNTAX:
for( expression1; expression2; expression3 )
statement
expression1 is executed first and only once to initialize the loop.
expression2 is the controlling expression, which is always
evaluated prior to executing the loop body:
if expression2 is false, the loop is terminated
if expression2 is true, the loop body is executed. Subsequently, the
loop is reinitialized by executing expression3 and expression2 is
re-tested.
Initializing and Reinitializing (cont)
• EXAMPLE:
int count;
for( count = 1; count <= 10; ++count)
cout << count<< ". loop" << endl;
• EXAMPLE:
for( int i = 0; i < 10; cout << i++ )
;
As this example illustrates,
The loop body can be an empty statement.
This is always the case if the loop header contains all necessary
statements.
However, to improve readability, even the empty statement should
occupy a line of its own.
Sample Program
The Comma Operator
• You can use the comma operator to include several
expressions where a single expression is syntactically
correct.
SYNTAX:
expression1, expression2 [, expression3 ...]
The expressions separated by commas are evaluated from left to
right.
The Comma Operator (cont)
• EXAMPLE:
int x, i, limit;
for( i=0, limit=8; i < limit; i += 2)
x = i * i, cout << setw(10) << x;
The comma operator separates the assignments for the variables i
and limit and is then used to calculate and output the value of x in a
single statement.
The Comma Operator (cont)
• EXAMPLE:
x = (a = 3, b = 5, a * b);
In this example the statements in brackets are executed before the
value of the product of a * b is assigned to x.
Sample Program
Sample Program (cont)
Screen Output:
Structogram for do-while
The do-while Statement
• In contrast to while and for loops, which are controlled
by their headers,
the do-while loop is controlled by its footer.
• This results in the loop body being performed at least
once.
SYNTAX:
do
statement
while(expression);
Nesting Loops
• Loops can be nested, that
is, the loop body can also
contain a loop.
• The ANSI standard
stipulates a maximum
depth of 256 nested loops.
Nesting Loops (cont)
Screen Output:
Structogram for the if-else Statement
Selections with if-else
• The if-else statement can be used to choose between
two conditional statements.
SYNTAX:
if( expression )
statement1
[ else
statement2 ]
– expression is first evaluated.
– If the result is true, statement1 is executed and statement2 is
executed in all other cases, provided an else branch exists.
– If there is no else and expression is false, the control jumps to the
statement following the if statement.
Nested if-else Statements
• Multiple if-else statements can be nested. But not
every if statement has an else branch.
EXAMPLE:
if( n > 0 )
if( n%2 == 1 )
cout << " Positive odd number ";
else
cout << "Positive even number";
– In this example, the else branch belongs to the second if.
– An else branch is always associated with the nearest preceding if
statement that does not have an else branch.
Nested if-else Statements (cont)
• However, you can use a code block to redefine the
association of an else branch.
EXAMPLE:
if( n > 0 )
{
if( n%2 == 1 )
cout << " Positive odd number \n";
}
else
cout << " Negative number or zero\n";
Defining Variables in if Statements
• You can define and initialize a variable within an if
statement.
• The expression is true if converting the variable’s value to
a bool type yields true.
EXAMPLE:
if( int x = func() )
{...} // Here to work with x.
– The return value of the function, func(), is used to initialize the variable x.
– If this value is not 0, the statements in the next block are executed.
– The variable x no longer exists after leaving the if statement.
Sample Program
Structogram for an else-if Chain
Layout and Program Flow
• You can use an else-if chain to selectively execute one
of several options.
SYNTAX:
if ( expression1 )
statement1
else if( expression2 )
statement2
.
.
.
else if( expression(n) )
statement(n)
[ else statement(n+1)]
Sample Program
Screen Output:
Screen Output:
EXERCISES