Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS101 Computer Programming I Chapter 4 Extra Examples.

Similar presentations


Presentation on theme: "CS101 Computer Programming I Chapter 4 Extra Examples."— Presentation transcript:

1 CS101 Computer Programming I Chapter 4 Extra Examples

2 while Loop Example  Write a while loop to print all the even integers between 0 and 20. int i = 0; while ( i <= 20 ) { if ( i % 2 = 0 ) System.out.printf( "%d ", i ); i++; } 2

3 Slide 3- 3 for/while Loop Comparison Write a code to add the numbers from 1 to 10.  Using a while loop: sum = 0; n = 1; while(n <= 10) // add the numbers 1 - 10 { sum = sum + n; n=n+1; //n++; }  Using a for loop: sum = 0; for (n = 1; n <= 10; n++) //add the numbers 1 - 10 sum = sum + n;

4 Slide 3- 4 while loop: Exit on Flag Caution  Consider this loop to identify a student with a grade of 90 or better to find a tutor for week students. (We assume the method compute_grade() has already been defined) (In this example the variable grade serves as the flag) int n = 1; grade = compute_grade(n); while (grade < 90) { n=n+1; //n++; grade = compute_grade(n); } System.out.printf( “Student number %d may be a tutor.\nThis student has a score of %f", n, grade );

5 Slide 3- 5 The Problem  The loop on the previous slide might not stop at the end of the list of students if no student has a grade of 90 or higher It is a good idea to use a second flag to ensure that there are still students to consider The code on the following slide shows a better solution

6 Slide 3- 6 The Exit On Flag Solution  This code solves the problem of having no student grade at 90 or higher : int n=1; grade = compute_grade(n); while (( grade = 90) System.out.printf( “Student number %d may be a tutor.\nThis student has a score of %f", n, grade ); else cout << "No student has a high score.";

7 Slide 3- 7 List Ended With a Sentinel Value nonnegative integers nonnegative integersA while loop is typically used to end a loop using the list ended with a sentinel value method. cout > number; while (number > =0) { sum = sum + number; cout > number; } Notice that the sentinel value is read, but not processed i.e.  -1 is read but not added to sum. 1 2 3 -1

8 Slide 3- 8 Debugging Loops  Common errors involving loops include Off-by-one errors in which the loop executes one too many or one too few times Infinite loops usually result from a mistake in the Boolean expression that controls the loop

9 Slide 3- 9 Fixing Off By One Errors  Check your comparison: should it be < or <=?  Check that the initialization uses the correct value  Does the loop handle the zero iterations case? (  in case, if the loop may sometimes be iterated zero times)

10 Slide 3- 10 Fixing Infinite Loops  Check the direction of inequalities: ?  Test for rather than equality (= =) Remember that doubles are really only approximations

11 Slide 3- 11 More Loop Debugging Tips  Be sure that the mistake is really in the loop  Trace the variable to observe how the variable changes Tracing a variable is watching its value change during execution Many systems include utilities to help with this cout statements can be used to trace a value

12 Slide 3- 12 Debugging Example containing the product of the numbers through 5  The following code is supposed to conclude with the variable product containing the product of the numbers 2 through 5 int next = 2, product = 1; while (next < 5) { next = next+1; //next++ product = product * next; }

13 Slide 13 Tracing Variables  Add temporary print statements to trace variables int next = 2, product = 1; while (next < 5) { next = next+1; //next++ product = product * next; System.out.printf( “next= %d product= %d.\n", next, product ); } next = 3 product = 3 next = 4 product = 12 next = 5 product = 60 Press any key to continue... Required was from 2 to 5 not from 3

14 Slide 3- 14 First Fix  The cout statements added to the loop show us that the loop never multiplied by 2 Solve the problem  by moving the statement next++ int next = 2, product = 1; while (next < 5) { product = product * next; System.out.printf( “next= %d product= %d.\n", next, product ); next = next+1; //next++ } There is still a problem! next = 2 product = 2 next = 3 product = 6 next = 4 product = 24 Press any key to continue...

15 Slide 3- 15 Second Fix  Re-testing the loop  shows us that now the loop never mulitplies by 5 The fix is to use <= instead of < in our comparison int next = 2, product = 1; while (next <= 5) { product = product * next; System.out.printf( “next= %d product=%d.\n", next, product ); next = next+1; //next++ } next = 2 product = 2 next = 3 product = 6 next = 4 product = 24 next = 5 product = 120 Press any key to continue...

16 Slide 3- 16 Loop Testing Guidelines  Every time a program is changed, it must be retested. Changing one part may require a change to another.  Every loop should at least be tested using input to cause: Zero iterations of the loop body One iteration of the loop body One less than the maximum number of iterations The maximum number of iterations

17 Slide 2- 17 Infinite Loops  Loops that never stop are infinite loops.  The loop body should contain a line that will eventually cause the Boolean expression to become false.  If you make a mistake and write your program so that the Boolean expression is always true, then the loop will run forever.  A loop that runs forever is called an infinite loop.

18 Slide 2- 18 Infinite Loops (Cont.)  Example: Print the positive even numbers less than 12. x = 2; while (x != 12) { System.out.println( x ); x = x + 2; }  Print the positive odd numbers less than 12. x = 1; while (x != 12) { System.out.println( x ); x = x + 2; }  This will create an infinite loop since the value of x goes from 11 to 13 and it’s never equal to 12.  Better to use this comparison: while ( x < 12)

19 Slide 2- 19 Example  Show the output of this code if x is of type int? int x = 10; while ( x > 0) { System.out.println( x ); x = x - 3; }  Show the output of the previous code using the comparison x 0? int x = 10; while ( x < 0) { System.out.println( x ); x = x - 3; }


Download ppt "CS101 Computer Programming I Chapter 4 Extra Examples."

Similar presentations


Ads by Google