Control structures repetition
Download
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