Control Structures - Repetition - PowerPoint PPT Presentation

1 / 34
About This Presentation
Title:

Control Structures - Repetition

Description:

Counter Controlled Loops. For when you know exactly how many times ... the State of an ... EOF Controlled Loops. In addition to checking the value of an input ... – PowerPoint PPT presentation

Number of Views:45
Avg rating:3.0/5.0
Slides: 35
Provided by: steve1791
Category:

less

Transcript and Presenter's Notes

Title: Control Structures - Repetition


1
Control Structures - Repetition
  • Chapter 5

2
Chapter Topics
  • Why Is Repetition Needed
  • The Repetition Structure
  • Counter Controlled Loops
  • Sentinel Controlled Loops
  • Flag Controlled Loops
  • EOF Controlled Loops
  • for Loops
  • The do while Looping Structure

3
Why Is Repetition Needed?
  • Consider a task that the computer might automate
  • Calculate and print paychecks
  • Read invoices from a file and print monthly
    statements
  • Read inputs from a sensor and adjust the air-fuel
    mixture of an engine
  • In general
  • The "Input process output" cycle

4
Why Is Repetition Needed?
  • The algorithm requires a set of actions to be
    done over and over again
  • Same set of actions
  • Number of times to be executed is unknown at
    design time
  • We need a structure which allows
  • Statement(s) to be repeated
  • A method of testing to see whether the statements
    should be repeated

5
The Repetition Structure
  • The while loopprovides therepetition structure
  • Statement(s) tobe repeated
  • A means of checking whether the statement(s) will
    be repeated
  • Syntax while ( logicalExpression )
    statement

6
Phases of Loop Execution
  • Loop entry gt flow of control reaches first
    statement inside loop
  • Iteration gt each pass thru the loop
  • Loop test gt condition tested before each
    iteration
  • Loop exit gt when termination condition occurs
  • in while statement, loop is NOT executed another
    time

7
While Loop Illustration
Loop Iteration
Loop Test
Loop Exit
Loop Entry
8
Counter Controlled Loops
  • For when you know exactly how many times the loop
    should run
  • There are 10 employees for which to print checks
  • There are 60 sensor inputs per second
  • The program needs a Loop Control Variable

9
Count Controlled Loop
  • Uses a Loop Control Variable (LCV)

x 0while (x lt 10) cout ltlt count ltlt
x ltlt endl x x 1
What gets printed?
10
Count Controlled Loops
The LCV must be ...
  • I nitialized
  • I ncremented
  • I nspected

11
Count Controlled Loops
x 0while (x lt 10) cout ltlt count ltlt
x ltlt endl x x 1
12
Sentinel Controlled Loops
  • Suppose you want to read some positive integers
    and average them
  • You do not have a preset number of data items in
    mind.
  • Suppose the number 999 marks the end of data.
  • Then the -999 is your "sentinel"

View sample program
cingtgtvariable while(variable ! sentinel) . .
. cingtgt variable
13
Flag Controlled Loops
  • A flag controlled loop uses a Boolean variable to
    control the loop
  • ExampleLet found be the Boolean variablefound
    false
  • while(!found)
  • . . . if(expression)
  • found true

14
EOF Controlled Loops
  • End of File Controlled

Do you need to know how many items are in the
file? Why? Why not?
15
Testing the State of an I/O Stream
  • The name of the input stream (used by itself)
    returns a value
  • returns a 0 if it is NOT successful
  • it returns a NON zero value if it IS successful

16
Testing the State of an I/O Stream
  • When reading a file (a named input stream) we
    wish to know when it reaches the end
  • Since the name returns a 0 or non-0, this can be
    used as a Boolean value
  • Used to control program sequencing, control a
    file reading loop

17
EOF Controlled Loops
  • Can also be used in keyboard entry
    situationscingtgtvariable
  • while(cin)
  • . . .
  • cingtgtvariable // Ctrl-Z to signify eof
  • Although a sentinel controlled loop might be more
    user friendly

18
EOF Controlled Loops
  • In addition to checking the value of an input
    stream variable
  • The function eof with an input stream variable
    can also be used to determine the end of file
    status.
  • Syntax istreamVar.eof()
  • Example

infile.get(ch) while(!infile.eof())
coutltltch infile.get(ch)
19
A Special Count Controlled Loop
  • The for ( ) statement
  • Initialization initializes the LCV
  • Condition usually a comparison, acts like a
    while ( )
  • Incrementing statement LCV is incremented (or
    decremented)

for ( initialization test expression update
) 0 or more statements to repeat
20
The for ( ) Loop
  • Example -- what gets printed?

How did it Happen?
  • x gets initialized
  • value of x inspected
  • x gets incremented

21
The for ( ) Loop
  • All three of the portions inside the parentheses
    can be multiple statements separated by commas
  • Any or all of the three portions inside the
    parenthesis may be missing
  • accomplish those tasks some other way
  • the two semicolons MUST be there

22
for Loops
  • Note the sequence of events in a for loop

Is it possible that the initialization and
condition could be set so that that the loop
statement would never execute?
23
A Different Looping Statement
  • Recall that the while ( ) statement always
    checked the condition BEFORE the loop
  • In certain situations wewish to check the
    condition at
  • The END ofthe loop
  • After the statement

24
The Do-While Statement
  • Condition tested at end/bottom of loop
  • Guarantees loop body executes at least once

25
The do-while Illustrated
Note alwaysat least oneiteration
Loop Iteration
Loop Entry
Loop Exit
Loop Trest
26
The Do-While Statement
  • Can be used for a counting loop

What gets printed??
How do you change it to go 10 times?
27
The Do While Statement
  • This logic sometimes more suitable for some
    algorithms
  • Example trap for valid input

do cout ltlt Enter value (1 - 5) -gt cin
gtgt value if (value lt 1 value gt 5)
cout ltlt Invalid input\a ltlt endl while
(value lt 1 value gt 5)
What makes this easier than the while ( ) loop
for this task?
28
do-while Loop vs. while Loop
  • PRE-TEST loop (entry-condition)
  • The looping condition is tested before executing
    the loop body.
  • Loop body may not be executed at all.
  • POST-TEST loop (exit-condition)
  • The looping condition is tested after executing
    the loop body.
  • Loop body is always executed at least once.

29
The break Statement
  • We saw it in the switch statement
  • Causes immediate exit from innermost block
  • switch, while, do-while, for
  • Can be used to break out of purposely designed
    infinite loop
  • not a good idea a lazy shortcut
  • Use only as last resort to avoid baffling
    combinations of multiple Boolean flags and nested
    ifs

30
The continue Statement
  • Valid only in loops
  • Terminates current loop iteration
  • NOT entire loop
  • Causes branch to bottom of loop
  • skips rest of loop statements
  • Loop then prepares for next iteration
  • for () would increment lcv
  • all loops would check condition

31
Guidelines for Choosing a Looping Statement
  • Simple count-controlled
  • use for () loop
  • Event controlled, body always executed at least
    once
  • use do-while
  • Event controlled and nothing known about first
    execution
  • use while, possibly for
  • When in doubt gt use while

32
Testing and Debugging
  • For do-while loops, make sure to try data sets to
    make loop go exactly one time
  • For data-dependant loop where expressions based
    on values other than constants
  • make sure to test for proper number of iterations
  • Make sure switch statements have every branch
    tested
  • including default

33
Testing and Debugging
  • Remember to use break at end of case alternatives
    in switch statements
  • otherwise next case is also executed!
  • Case labels in switch statement must be values or
    named constants -- no variables
  • Both switch expression case constant cannot be
    floating point
  • Provide default for switch when possibility of
    case values not being matched

34
Testing and Debugging
  • Make sure all needed switch cases are present
  • Choose looping structure carefully
  • for( ) loop heading must have two semicolons
    -- even if portions omitted
  • Break statement can exit only one level of
    nesting
  • innermost switch or loop where break is located
Write a Comment
User Comments (0)
About PowerShow.com