1 / 34

Control Structures - Repetition

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?.

dean-hart
Download Presentation

Control Structures - Repetition

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. 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

  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 = 0;while (x <= 10) { cout << “count = “ << x << endl; x = x + 1; } What gets printed?

  10. Amen Count Controlled Loops • Initialized • Incremented • Inspected The LCV must be ...

  11. Initialized Inspected Incremented Count Controlled Loops x = 0;while (x <= 10) { cout << “count = “ << x << 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 cin>>variable; while(variable != sentinel) { . . . cin>> variable; }

  13. 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; }

  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 situationscin>>variable; while(cin) { . . . cin>>variable; // 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()) { cout<<ch; 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 << “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?

  28. 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

  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 => 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

More Related