Chapter 5 Repetition and Loop Statements Lecture Notes Prepared By: Blaise W. Liffick, PhD Department of Computer Science Millersville University Millersville,

Slides:



Advertisements
Similar presentations
Computer Science 1620 Loops.
Advertisements

Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Starting Out with C++: Early Objects 5 th Edition Chapter 5 Looping.
1 ICS103 Programming in C Lecture 7: Repetition Structures.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth Edition Chapter 5: Looping by Tony.
Chapter 5: Control Structures II (Repetition)
Chapter 5: Loops and Files.
Objectives You should be able to describe:
Control Structures Control structures control the flow of program execution. 3 types of control structures: sequence, selection.
CS 1 Lesson 5 Loops and Files CS 1 -- John Cole.
11 Chapter 4 LOOPS AND FILES. 22 THE INCREMENT AND DECREMENT OPERATORS To increment a variable means to increase its value by one. To decrement a variable.
C++ Programming: Program Design Including Data Structures, Fourth Edition Chapter 5: Control Structures II (Repetition)
Chapter 5: Control Structures II (Repetition)
CHAPTER 5: CONTROL STRUCTURES II INSTRUCTOR: MOHAMMAD MOJADDAM.
EGR 2261 Unit 5 Control Structures II: Repetition  Read Malik, Chapter 5.  Homework #5 and Lab #5 due next week.  Quiz next week.
Unit 4 Repetition and Loops. Key Concepts Flowcharting a loop Types of loops Counter-controlled loops while statement Compound assignment operator for.
Repetition and Loop Statements Chapter 5. 2 Why iterate? t Example: Algorithm for searching a letter w in a string that consists of n letters 1. Extract.
Programming Logic and Design Fifth Edition, Comprehensive
Mr. Dave Clausen1 La Cañada High School Chapter 6: Repetition Statements.
Chapter 5 Repetition and Loop Statements J. H. Wang ( 王正豪 ), Ph. D. Assistant Professor Dept. Computer Science and Information Engineering National Taipei.
Looping II (for statement). CSCE 1062 Outline  for statement  Nested loops  Compound assignment operators  Increment and decrement operators.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 5: Repetition and Loop Statements Problem Solving, Abstraction, and.
Chapter 5: Control Structures II (Repetition). Objectives In this chapter, you will: – Learn about repetition (looping) control structures – Learn how.
Lecture 12: Control Flow. Repetition and Loop structures COS120 Software Development Using C++ AUBG, COS dept.
Chapter 8 Iteration Dept of Computer Engineering Khon Kaen University.
An Introduction to Programming with C++ Sixth Edition Chapter 7 The Repetition Structure.
 2008 Pearson Education, Inc. All rights reserved JavaScript: Control Statements I.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 5 Looping.
+ Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy Walters, and Godfrey Muganda Chapter 5: Looping.
COS120 Software Development Using C++ AUBG Fall semester 2010 Ref book: Problem Solving, Abstraction and Design Using C++ Authors: Frank Friedman, Elliot.
Control Structures RepetitionorIterationorLooping Part I.
Before we get started…. First, a few things… Weighted Grading System Programming Style Submitting your assignments… The char and string variable types.
Loops and Files. 5.1 The Increment and Decrement Operators.
1 Standard Version of Starting Out with C++, 4th Brief Edition Chapter 5 Looping.
Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 5: Looping.
A First Book of C++: From Here To There, Third Edition2 Objectives You should be able to describe: The while Statement cin within a while Loop The for.
A FIRST BOOK OF C++ CHAPTER 5 REPETITION. OBJECTIVES In this chapter, you will learn about: The while Statement Interactive while Loops The for Statement.
A First Book of C++ Chapter 5 Repetition.
Chapter 5: Repetition and Loop Statements By: Suraya Alias.
C++ Programming: From Problem Analysis to Program Design, Fourth Edition Chapter 5: Control Structures II (Repetition)
Copyright © 2012 Pearson Education, Inc. Chapter 5: Loops.
Alternate Version of STARTING OUT WITH C++ 4 th Edition Chapter 5 Looping.
Chapter 5 Repetition. 2 Objectives You should be able to describe: The while Statement cin within a while Loop The for Statement The do Statement Common.
Iteration & Loop Statements 1 Iteration or Loop Statements Dept. of Computer Engineering Faculty of Engineering, Kasetsart University Bangkok, Thailand.
Chapter Looping 5. The Increment and Decrement Operators 5.1.
Copyright 2006 Addison-Wesley Brief Version of Starting Out with C++ Chapter 5 Looping.
Chapter 6: Looping. Objectives Learn about the loop structure Create while loops Use shortcut arithmetic operators Create for loops Create do…while loops.
Chapter Looping 5. The Increment and Decrement Operators 5.1.
Lecture 7 – Repetition (Loop) FTMK, UTeM – Sem /2014.
Chapter 4 Repetition Statements Program Development and Design Using C++, Third Edition.
1 ICS103 Programming in C Lecture 7: Repetition Structures.
Problem Solving and Program Design in C Chap. 5 Repetition and Loop Statement Chow-Sing Lin.
CHAPTER 6: REPETITION AND LOOP STATEMENTS Learning outcomes  Define the concept of repetition structure.  Specify.
Introduction to Loop. Introduction to Loops: The while Loop Loop: part of program that may execute > 1 time (i.e., it repeats) while loop format: while.
Introduction to Computer Programming
REPETITION CONTROL STRUCTURE
CHAPTER 6: REPETITION AND LOOP STATEMENTS
Chapter 5: Looping Starting Out with C++ Early Objects Seventh Edition
Control Structures Combine individual statements into a single logical unit with one entry point and one exit point. Used to regulate the flow of execution.
Chapter 5: Looping Copyright © 2010 Pearson Education, Inc. Publishing as Pearson Addison-Wesley.
Control Structures Combine individual statements into a single logical unit with one entry point and one exit point. Used to regulate the flow of execution.
Chapter 5: Looping Starting Out with C++ Early Objects Seventh Edition
Repetition and Loop Statements
Chapter 6: Repetition Statements
Looping III (do … while statement)
Objectives You should be able to describe: The while Statement
Repetition Statements (Loops) - 2
Based on slides created by Bjarne Stroustrup & Tony Gaddis
Based on slides created by Bjarne Stroustrup & Tony Gaddis
Chapter 4 Repetition Structures
ICS103: Programming in C 5: Repetition and Loop Statements
Presentation transcript:

Chapter 5 Repetition and Loop Statements Lecture Notes Prepared By: Blaise W. Liffick, PhD Department of Computer Science Millersville University Millersville, PA

© 2004 Pearson Addison-Wesley. All rights reserved5-2 Control Structures Sequence Selection Repetition

© 2004 Pearson Addison-Wesley. All rights reserved Counting Loops and while Loop – a control structure that repeats a group of statements in a program Loop body – the statements that are repeated in a loop

© 2004 Pearson Addison-Wesley. All rights reserved5-4 Counter-Controlled Loop Repetition managed by a loop control variable whose value represents a count Counting Loop –Set loop control variable to an initial value of 0 –While loop control variable < final value … Increase loop control variable by 1

© 2004 Pearson Addison-Wesley. All rights reserved5-5 Counter-Controlled Loop Used when we can determine prior to loop execution how many loop repetitions will be needed to solve problem Number of repetitions should appear as the final count in the while condition

© 2004 Pearson Addison-Wesley. All rights reserved5-6 Listing 5.1 Program fragment with a loop

© 2004 Pearson Addison-Wesley. All rights reserved5-7 The while Statement - Example Loop Body –Compound statement –Gets an employee’s payroll data –Computes and displays employee’s pay After 7 weekly pay amounts are displayed, the statement following loop body executes –Displays message “All employees processed.”

© 2004 Pearson Addison-Wesley. All rights reserved5-8 The while Statement - Example countEmp = 0; –Sets initial value of 0, representing the count of employees processed so far Condition evaluated (countEmp < 7) –If true, loop body statements are executed –If false, loop body is skipped and control passes to the display statement (cout) that follows the loop body

© 2004 Pearson Addison-Wesley. All rights reserved5-9 The while Statement - Example countEmp = countEmp + 1; –Increments the current value of the counter by 1 After executing the last statement of the loop body –Control returns to the beginning of the while –The condition is reevaluated

© 2004 Pearson Addison-Wesley. All rights reserved5-10 Loop Repetition Condition Follows while reserved word Surrounded by parentheses When true, the loop body is repeated When false, exit the loop

© 2004 Pearson Addison-Wesley. All rights reserved5-11 Figure 5.1 Flowchart for a while loop

© 2004 Pearson Addison-Wesley. All rights reserved5-12 Loop Control Variable Initialize Test Update

© 2004 Pearson Addison-Wesley. All rights reserved5-13 while Statement Syntax Form while (loop repetition condition) statement; E.g. countStar = 0; while (countStar < n) { cout << “*”; countStar = countStar + 1; }

© 2004 Pearson Addison-Wesley. All rights reserved5-14 Loop Notes If the loop control variable is not properly updated, an infinite loop can result. If the loop repetition condition evaluates to false the first time it’s tested, the loop body statements are never executed.

© 2004 Pearson Addison-Wesley. All rights reserved Accumulating a Sum or Product in a Loop Loops often accumulate a sum or product by repeating an addition of multiplication operation.

© 2004 Pearson Addison-Wesley. All rights reserved5-16 Listing 5.2 Program to compute company payroll

© 2004 Pearson Addison-Wesley. All rights reserved5-17 Listing 5.2 Program to compute company payroll (continued)

© 2004 Pearson Addison-Wesley. All rights reserved5-18 Example – Compute Payroll Initialization statements totalPay = 0.0;// pay accumulator countEmp = 0;// loop control variable that // counts number of // employees processed Accumulation totalPay = totalPay + pay; // add next pay Incrementation countEmp = countEmp + 1;

© 2004 Pearson Addison-Wesley. All rights reserved5-19 Writing General Loops Process exactly 7 employees while (countEmp < 7) Process an indefinite number of employees; number of employees must be read into variable numberEmp before the while statement executes while (countEmp < numberEmp)

© 2004 Pearson Addison-Wesley. All rights reserved5-20 Multiplying a List of Numbers product = 1; while (product < 10000) { cout << product << endl;// display product so far cout << “Enter data item: “; cin >> item; product = product * item;// update product }

© 2004 Pearson Addison-Wesley. All rights reserved5-21 Conditional Loop 1.Initialize the loop control variable 2.While a condition involving the loop control variable is true 3.Continue processing 4.Update the loop control variable

© 2004 Pearson Addison-Wesley. All rights reserved5-22 Compound Assignment Operators General form of common operations variable = variable op expression; E.g. countEmp = countEmp + 1; time = time - 1; totalPay = totalPay + pay; product = product * item;

© 2004 Pearson Addison-Wesley. All rights reserved5-23 Special Assignment Operators += -= *= /= %= general form variable op= expression; E.g. countEmp += 1; time -= 1; totalPay += pay; product *= item;

© 2004 Pearson Addison-Wesley. All rights reserved5-24 The for Statement Especially useful for counting loops Form for (initializing expression; loop repetition condition; update expression) statement;

© 2004 Pearson Addison-Wesley. All rights reserved5-25 The for Statement E.g. for (countStar = 0; countStar < N; countStar += 1; cout << “*”;

© 2004 Pearson Addison-Wesley. All rights reserved5-26 Listing 5.3 Using a for statement in a counting loop

© 2004 Pearson Addison-Wesley. All rights reserved5-27 Formatting the for Statement Placement of expressions can be on one line or separate lines Body of loop indented Position of { } align with for keyword on separate lines (style for this book)

© 2004 Pearson Addison-Wesley. All rights reserved5-28 Increment and Decrement Operators Apply to a single variable Side effect - a change in the value of a variable as a result of carrying out an operation

© 2004 Pearson Addison-Wesley. All rights reserved5-29 Increment and Decrement Operators Prefix operator –E.g.m = 3; n = ++m; Postfix operator –E.g.m = 3; n = m++; Often used to update loop control variable

© 2004 Pearson Addison-Wesley. All rights reserved5-30 Listing 5.4 Function to compute factorial

© 2004 Pearson Addison-Wesley. All rights reserved5-31 Localized Declarations of Variables Commonly used for loop control variables Declared at point of first reference Value has meaning (i.e. can be referenced) only inside loop.

© 2004 Pearson Addison-Wesley. All rights reserved5-32 Example - Localized Variables string firstName; cout << “Enter your first name: “’ cin >> firstName; for (int posChar = 0; posChar < firstName.length( ); posChar++;) cout << firstName.at(posChar) << endl;

© 2004 Pearson Addison-Wesley. All rights reserved5-33 Listing 5.5 Converting Celsius to Fahrenheit

© 2004 Pearson Addison-Wesley. All rights reserved5-34 Listing 5.5 Converting Celsius to Fahrenheit (continued)

© 2004 Pearson Addison-Wesley. All rights reserved5-35 Output - Celsius to Fahrenheit Celsius Fahrenheit

© 2004 Pearson Addison-Wesley. All rights reserved5-36 Displaying a Table of Values setw( ) manipulator helps create neat columns It is a member function of the iomanip class. Requires the iomanip library to be included

© 2004 Pearson Addison-Wesley. All rights reserved5-37 Conditional Loops Used when you can’t determine before loop execution begins exactly how many loop repetitions are needed. The number of repetitions is generally stated by a condition that must remain true in order for the loop to continue.

© 2004 Pearson Addison-Wesley. All rights reserved5-38 Conditional Loop Initialize the loop control variable. While a condition involving the loop control variable is true Continue processing. Update the loop control variable

© 2004 Pearson Addison-Wesley. All rights reserved5-39 Case Study: Monitoring Oil Supply Problem We want to monitor the amount of oil remaining in a storage tank at the end of each day. The initial supply of oil in the tank and the amount taken out each day are data items. Our program should display the amount left in the tank at the end of each day and it should also display a warning when the amount left is less than or equal to 10 percent of the tank’s capacity. At this point, no more oil can be removed until the tank is refilled.

© 2004 Pearson Addison-Wesley. All rights reserved5-40 Case Study: Analysis Clearly, the problem inputs are the initial oil supply and the amount taken out each day. The outputs are the oil remaining at the end of each day and a warning message when the oil left in the tank is less than or equal to 10 percent of its capacity.

© 2004 Pearson Addison-Wesley. All rights reserved5-41 Case Study: Data Requirements Problem Constants CAPACITY = 1000// tank capacity MINPCT = 0.10// minimum % Problem Input float supply// initial oil supply Each day’s oil use

© 2004 Pearson Addison-Wesley. All rights reserved5-42 Case Study: Data Requirements Problem Output float oilLevel// final oil amount Each day’s oil supply A warning message when the oil supply is less than minimum.

© 2004 Pearson Addison-Wesley. All rights reserved5-43 Case Study: Data Requirements Program Variable float minOil// minimum oil supply Formulas Minimum oil supply is 10 percent of tank’s capacity

© 2004 Pearson Addison-Wesley. All rights reserved5-44 Case Study: Initial Algorithm 1.Get the initial oil supply. 2.Compute the minimum oil supply. 3.Compute and display the amount of oil left each day (implement as function monitorOil). 4.Display the oil left and a warning message if necessary.

© 2004 Pearson Addison-Wesley. All rights reserved5-45 Analysis for Function monitorOil Function monitorOil must display a table showing the amount of oil left at the end of each day. To accomplish this, the function must read each day’s usage and deduct that amount from the oil remaining. The function needs to receive the initial oil supply and the minimum oil supply as inputs (arguments) from the main function.

© 2004 Pearson Addison-Wesley. All rights reserved5-46 Function Interface for monitorOil Input Parameters float supply// initial oil supply float minOil// minimum oil supply Output Returns the final oil amount Local Data float usage // input from user - each day’s oil use float oilLeft // output from user - each day’s oil supply

© 2004 Pearson Addison-Wesley. All rights reserved5-47 Design of monitorOil The body of monitorOil is a loop that displays the oil usage table. We can’t use a counting loop because we don’t know in advance how many days if will take to bring the supply to the critical level. We do know the initial supply of oil, and we know that we want to continue to compute and display the amount of oil remaining (oilLeft) as long as the amount of oil remaining does not fall below the minimum. So the loop control variable must be oilLeft. We need to initialize oilLeft to the initial supply and to repeat the loop as long as oilLeft > minOil is true. The update step should deduct the daily usage (a data value) from oilLeft.

© 2004 Pearson Addison-Wesley. All rights reserved5-48 Initial Algorithm for monitorOil 1.Initialize oilLeft to supply. 2.While (oilLeft > minOil) 2.1Read in the daily usage. 2.2Deduct the daily usage from oilLeft 2.3Display the value of oilLeft

© 2004 Pearson Addison-Wesley. All rights reserved5-49 Listing 5.6 Program to monitor oil supply // File: oilSupply.cpp Displays daily usage and amount left in oil tank. #include using namespace std; float monitorOil(float, float); int main() { const float CAPACITY = 10000;// tank capacity const float MINPCT = 10.0; // minimum percent float supply; // input - initial oil supply float oilLeft; // output - oil left in tank float minOil; // minimum oil supply

© 2004 Pearson Addison-Wesley. All rights reserved5-50 // Get the initial oil supply. cout << "Enter initial oil supply: "; cin >> supply; // Compute the minimum oil supply. minOil = CAPACITY * (MINPCT / 100.0); // Compute and display the amount of oil left each day oilLeft = monitorOil(supply, minOil); // Display warning message if supply is less than minimum cout << endl << oilLeft << " gallons left in tank." << endl; return 0; } Listing 5.6 Program to monitor oil supply (continued)

© 2004 Pearson Addison-Wesley. All rights reserved5-51 float monitorOil(float supply, float minOil) { // Local data... float usage; // input from user - Each day's oil use float oilLeft;// Amount left each day oilLeft = supply; while (oilLeft > minOil) { cout << "Enter amount used today: "; cin >> usage; oilLeft -= usage; cout << "After removal of " << usage << " gallons, "; cout << "number of gallons left is " << oilLeft << endl << endl; } return oilLeft; } Listing 5.6 Program to monitor oil supply (continued)

© 2004 Pearson Addison-Wesley. All rights reserved5-52 Case Study: Testing To test the program, try running it with a few samples of input data. One sample should bring the oil level remaining to exactly 10 percent of the capacity. For example, if the capacity is 10,000 gallons, enter a final daily usage amount that brings the oil supply to 1,000 gallons and see what happens.

© 2004 Pearson Addison-Wesley. All rights reserved5-53 Case Study: Testing Enter initial oil supply: 7000 Enter amount used today: 1000 After removal of 1000 gallons, number of gallons left is 6000 Enter amount used today: 4000 After removal of 4000 gallons, number of gallons left is 2000 Enter amount used today: 1500 After removal of 1500 gallons, number of gallons left is gallons left in tank Warning - amount of oil left is below minimum!

© 2004 Pearson Addison-Wesley. All rights reserved Loop Design and Loop Patterns Sentinel-Controlled Loops 1. Read the first data item. 2. While the sentinel value has not been read 3. Process the data item. 4. Read the next data item. initialization Loop repetition condition update

© 2004 Pearson Addison-Wesley. All rights reserved5-55 Sentinel-Controlled Loops A sentinel is a specific predetermined value used to terminate one type of event- controlled loop It is the same type as the other data being processed It is outside the range of valid values for the data

© 2004 Pearson Addison-Wesley. All rights reserved5-56 Example: Sum Exam Scores 1.Initialize sum to zero 2.Read first score 3.While score is not the sentinel 4. Add score to sum 5. Read next score

© 2004 Pearson Addison-Wesley. All rights reserved5-57 Listing 5.7 A sentinel-controlled loop // File: sumScores.cpp // Accumulates the sum of exam scores. #include using namespace std; void displayGrade(int); int main() { const int SENTINEL = -1; int score; int sum; int count; int average;

© 2004 Pearson Addison-Wesley. All rights reserved5-58 // Process all exam scores until sentinel is read count = 0; sum = 0; cout << "Enter scores one at a time as requested." << endl; cout << "When done, enter " << SENTINEL << " to stop." << endl; cout << "Enter the first score: "; cin >> score; while (score != SENTINEL) { sum += score; count++; displayGrade(score); cout << endl << "Enter the next score: "; cin >> score; } Listing 5.7 A sentinel-controlled loop (continued)

© 2004 Pearson Addison-Wesley. All rights reserved5-59 cout << endl << endl; cout << "Number of scores processed is " << count << endl; cout << "Sum of exam scores is " << sum << endl; // Compute and display average score. if (count > 0) { average = sum / count; cout << "Average score is " << average; } return 0; } Listing 5.7 A sentinel-controlled loop (continued)

© 2004 Pearson Addison-Wesley. All rights reserved5-60 // Displays the letter grade corresponding to an exam // score assuming a normal scale. void displayGrade(int score)// IN: exam score { if (score >= 90) cout << “Grade is A” << endl; else if (score >= 80) cout << “Grade is B” << endl; else if (score >= 70) cout << “Grade is C” << endl; else if (score >= 60) cout << “Grade is D” << endl; else cout << “Grade is F” << endl; } Listing 5.7 A sentinel-controlled loop (continued)

© 2004 Pearson Addison-Wesley. All rights reserved5-61 Testing: sumScores Enter the scores one at a time as requested. When done, enter -1 to stop. Enter the first score: 85 Grade is B Enter the next score: 33 Grade is F Enter the next score: 77 Grade is C Enter the next score: -1 Number of scores processed is 3 Sum of exam scores is 195 Average score is 65

© 2004 Pearson Addison-Wesley. All rights reserved5-62 Calculating an Average Requires keeping a count of the number of values processed (e.g. count in sumScores) Counter is initialized to zero before loop begins Counter is incremented (e.g. count++; ) within loop body Counter is not the loop control variable in this case

© 2004 Pearson Addison-Wesley. All rights reserved5-63 Flag Controlled Loops 1. Set the flag to false. 2. While the flag is false 3. Perform some action. 4. Reset the flag to true if the anticipated event occurred. initialization Loop repetition condition update

© 2004 Pearson Addison-Wesley. All rights reserved5-64 Flag Controlled Loops Type bool variables often used as flags Flag initialized to false before loop entry Flag reset to true when a particular event occurs Note: because flag is initially false, the loop condition uses ! (not) operator to reverse the flag’s value

© 2004 Pearson Addison-Wesley. All rights reserved5-65 Listing 5.8 Function getDigit

© 2004 Pearson Addison-Wesley. All rights reserved The do-while Statement The do while statement is similar to the while loop, but the do while loop has the test at the end. General form: do { statement; } while ( expression ) ; Notice the iterative part executes before the loop-test)

© 2004 Pearson Addison-Wesley. All rights reserved5-67 Data-validation Loop do prompt for and read a data item while data item is not valid E.g. do { cout << “Enter number of employees: “; cin >> numEmp; } while (numEmp < 0);

© 2004 Pearson Addison-Wesley. All rights reserved5-68 Listing 5.9 Function getIntRange

© 2004 Pearson Addison-Wesley. All rights reserved5-69 do-while and Menus Often used to control a menu-driven program Display a list of choices for user to select from

© 2004 Pearson Addison-Wesley. All rights reserved5-70 Typical Menu List of edit operations: D - Delete a substring F - Find a string I - Insert a string R - Replace a substring Q - Quit Enter D, F, I, R, or Q as your selection:

© 2004 Pearson Addison-Wesley. All rights reserved5-71 Main Control Routine do Display the menu Read the user’s choice Perform the user’s choice Display the edited string while the choice is not Quit

© 2004 Pearson Addison-Wesley. All rights reserved5-72 Listing 5.10 Main function for text editor program

© 2004 Pearson Addison-Wesley. All rights reserved5-73 Listing 5.10 Main function for text editor program (continued)

© 2004 Pearson Addison-Wesley. All rights reserved5-74 Listing 5.11 Finding the largest value

© 2004 Pearson Addison-Wesley. All rights reserved5-75 Listing 5.11 Finding the largest value (continued)

© 2004 Pearson Addison-Wesley. All rights reserved Review of Loop Forms while –most commonly used when repetition is not counter controlled –condition test precedes each loop repetition –loop body may not be executed at all

© 2004 Pearson Addison-Wesley. All rights reserved5-77 Review of Loop Forms for –used to implement a counting loop –also convenient for other loops with simple initialization and update steps –condition test precedes the execution of the loop body –loop body may not be executed at all

© 2004 Pearson Addison-Wesley. All rights reserved5-78 Review of Loop Forms do-while –convenient when at least one repetition of the loop body is required

© 2004 Pearson Addison-Wesley. All rights reserved Nested Loops As with if statements, loop statements can be nested Each time outer loop is repeated, any inner loop is restarted - loop control components are reevaluated and all required iterations are performed

© 2004 Pearson Addison-Wesley. All rights reserved5-80 Listing 5.13 Nested for loop program

© 2004 Pearson Addison-Wesley. All rights reserved5-81 Listing 5.13 Nested for loop program (continued)

© 2004 Pearson Addison-Wesley. All rights reserved5-82 Listing 5.14 Displaying the multiplication table

© 2004 Pearson Addison-Wesley. All rights reserved5-83 Listing 5.14 Displaying the multiplication table (continued)

© 2004 Pearson Addison-Wesley. All rights reserved Debugging and Testing Programs Modern Integrated Development Environments (IDEs) include features to help you debug a program while it is executing. If you cannot use a debugger, insert extra diagnostic output statements to display intermediate results at critical points in your program.

© 2004 Pearson Addison-Wesley. All rights reserved5-85 Debugging Without a Debugger Insert diagnostic output statements –at locations where you suspect things are going wrong or other critical points in the code beginning and end of functions after complex calculations –to display intermediate results, e.g. variables affected by each major algorithm step Remove extra output statements when problem solved, or use // to “comment out”

© 2004 Pearson Addison-Wesley. All rights reserved5-86 Off-by-one Errors Common logic error - a loop that executes one time too many or one time too few Check initial and final values for loop control variables Check loop repetition condition Check loop boundaries during testing

© 2004 Pearson Addison-Wesley. All rights reserved5-87 Testing Thorough testing necessary Check all paths through decision statements and the number of iterations for loops Make enough test runs to verify that the program works properly for representative samples of all possible data combinations

© 2004 Pearson Addison-Wesley. All rights reserved Common Programming Errors Omitting braces ( { }) Omitting a closing brace ( } ) Infinite loop Misuse of = for == Bad sentinel value Using do-while instead of while Incorrect use of compound assignment Incorrect use of increment and decrement operators