control structures repetition
Download
Skip this Video
Download Presentation
Control Structures - Repetition

Loading in 2 Seconds...

play fullscreen
1 / 34

Control Structures - Repetition - PowerPoint PPT Presentation


  • 104 Views
  • Uploaded on

Control Structures - Repetition. Chapter 5. 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. Why Is Repetition Needed?.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Control Structures - Repetition ' - dean-hart


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
chapter topics
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
why is repetition needed
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
why is repetition needed1
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
the repetition structure
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;
phases of loop execution

while (condition)

false

true

statement 1

statement 2

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

Loop Iteration

Loop Test

Loop Exit

Loop Entry

counter controlled loops
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
count controlled loop
Count Controlled Loop
  • Uses a Loop Control Variable (LCV)

x = 0;while (x <= 10) { cout << “count = “ << x << endl; x = x + 1; }

What gets printed?

count controlled loops

Amen

Count Controlled Loops
  • Initialized
  • Incremented
  • Inspected

The LCV must be ...

count controlled loops1

Initialized

Inspected

Incremented

Count Controlled Loops

x = 0;while (x <= 10) { cout << “count = “ << x << endl; x = x + 1; }

sentinel controlled loops
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

cin>>variable;

while(variable != sentinel)

{ . . .

cin>> variable;

}

flag controlled loops

The flag is set according to some condition

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;

}

eof controlled loops
EOF Controlled Loops
  • End of File Controlled

Do you need to know how many items are in the file? Why? Why not?

testing the state of an i o stream
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
testing the state of an i o stream1
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
eof controlled loops1
EOF Controlled Loops
  • Can also be used in keyboard entry situationscin>>variable;

while(cin)

{ . . .

cin>>variable; // Ctrl-Z to signify eof

}

  • Although a sentinel controlled loop might be more user friendly
eof controlled loops2
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())

{

cout<<ch;

infile.get(ch);

}

a special count controlled loop
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

}

the for loop
The for ( … )Loop
  • Example -- what gets printed?

How did it Happen?

  • x gets initialized
  • value of x inspected
  • x gets incremented
the for loop1
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
for loops
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?

a different looping statement
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
the do while statement
The Do-While Statement
  • Condition tested at end/bottom of loop
  • Guarantees loop body executes at least once
the do while illustrated
The do-while Illustrated

Note: alwaysat least oneiteration

Loop Iteration

Loop Entry

Loop Exit

Loop Trest

the do while statement1
The Do-While Statement
  • Can be used for a counting loop

What gets printed??

How do you change it to go 10 times?

the do while statement2
The Do While Statement
  • This logic sometimes more suitable for some algorithms
  • Example : trap for valid input

do { cout << “Enter value (1 - 5) -> “; cin >> value; if (value < 1 || value > 5) cout << “Invalid input\a” << endl; while (value < 1 || value > 5);

What makes this easier than the while ( … ) loop for this task?

do while loop vs while loop
POST-TEST loop (exit-condition)

The looping condition is tested after executing the loop body.

Loop body is always executed at least once.

PRE-TEST loop (entry-condition)

The looping condition is tested before executing the loop body.

Loop body may not be executed at all.

do-while Loop vs. while Loop
the break statement
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
the continue statement
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
guidelines for choosing a looping statement
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 => use while
testing and debugging
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
testing and debugging1
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
testing and debugging2
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
ad