Presentation is loading. Please wait.

Presentation is loading. Please wait.

Announcements Lab 3 was due today Assignment 2 due next Wednesday

Similar presentations


Presentation on theme: "Announcements Lab 3 was due today Assignment 2 due next Wednesday"— Presentation transcript:

1 Announcements Lab 3 was due today Assignment 2 due next Wednesday
Quiz at end of class

2 Questions? Last time we covered loops: for while do-while

3 Today in COMP 110 More Programming with Loops review nested loops

4 Review The while statement can be used to construct a loop in Java
while(Boolean_Expression) { Statement_1 Statement_2 Statement_N } As long as Boolean_Expression is true, the statements in the loop body are executed

5 Review Do-While Syntax Execute Statements_1…N
Statement_N } while (Boolean_Expression); //note the semicolon! Execute Statements_1…N If Boolean_Expression is true, repeat

6 Review For Loop Syntax for(Initializing_Action; Boolean_Expression; Update_Action) { Statement_1 Statement_2 Statement_N } Initializing_Action is used to initialize a counter variable Boolean_Expression is the stopping condition for the loop Update_Action is used to update a counter variable after the loop body is executed

7 Review Choosing a loop Do-While For While
When you want the body to be executed at least once Useful for checking user input For More convenient/readable when the number of iterations is known beforehand, e.g. stored in some counter variable While Safest choice, can be used to create any kind of loop When it might be necessary for the loop to iterate zero times

8 Nested Loops It’s possible, and sometimes necessary to use loops inside other loops This is called nesting Just like with nested if-statements

9 Nested Loops Example int sum = 0; int i = 0; while(i < 10) {
for(int j = 0; j < 20; j++) sum = sum + j; i++; }

10 Commas in For Statements
We can perform multiple initializations or updates using the comma operator int n,c; int product; for (n = 1, c = 1; n <= 5; c = c + 2, n++) { product = product * c * n; } System.out.println(product);

11 Designing Loops Creating a loop involves designing three things
Initialization of Variables Loop Body Stopping Condition

12 Designing a Loop Body How to determine what statements should be inside the body of a loop? Example Calculate the sum of numbers entered by the user

13 Designing a Loop Body Repeated statements become your loop body
Output instructions to the user Initialize variables Prompt user for input Read a number into variable next sum = sum + next; ... Output sum Repeated statements become your loop body Statements that are only done once are not part of your loop body

14 Pseudocode with Loop Body
Output instructions to the user Initialize variables Do the following for the appropriate number of times: { Prompt user for input Read a number into variable next sum = sum + next; } Output sum Initializing statements How do we end the loop? How many iterations?

15 Initializing Statements
Variables used in your loop need to be initialized (set to a value) before the loop next Read a number into variable next We read a new value for next before using it during each iteration of the loop so we do not need to initialize it sum sum = sum + next; sum is on the right side of an assignment statement. sum MUST have a valid value before the loop starts.

16 Initialize Sum What should sum be initialized to?
Consider the first iteration After executing the first iteration, the expected value of sum should be sum == next (the first input value) The assignment statement is sum = sum + next; Therefore, initial value of sum is sum = 0;

17 Loop with Initializations
Output instructions to the user sum = 0; Do the following for the appropriate number of times: { Prompt user for input Read a number into variable next sum = sum + next; } Output sum Initializing statements

18 Ending Loops How to choose a stopping condition for your loop?
Count-controlled loops When you know number of loop iterations for(count = 0; count < iterations; count++) User-controlled loops Ask-before-iterating Sentinel value Boolean The value of a boolean indicates whether the loop should stop

19 Count-Controlled Loops
A program to average exam scores input by the user We know the size of the class is "numStudents" double next, average, sum=0; int i; for(i = 0; i < numStudents; i++) { //# iterations is fixed next = keyboard.nextDouble(); sum = sum+next; } average = sum/numStudents;

20 Ask-Before-Iterating
Sometimes it is useful to have the user decide when a loop should end String answer; do { //perform some computations System.out.print("Continue? yes/no"); answer = keyboard.nextLine(); } while (answer.equalsIgnoreCase("yes")); Do this on board

21 Sentinel Value Signal end of input
System.out.print("Enter a negative number to end the loop"); int next = keyboard.nextInt(); int sum = 0; while (next >= 0) { sum = sum + next; System.out.print("Enter a number: "); next = keyboard.nextInt(); }

22 Booleans int next, sum = 0; boolean moreNumbers = true;
Scanner keyboard = new Scanner(System.in); while(moreNumbers ) { next = keyboard.nextInt(); if (next < 0) moreNumbers = false; //this will be the last iteration else sum = sum + next; } System.out.print("The sum is " + sum);

23 Off-by-One errors Loop repeats one too many or one too few times
for (count = 1; count < 10; count++); Loop for count = [1,9] (9 iterations) for (count = 1; count <= 10; count++); Loop for count = [1,10] (10 iterations) for (count = 0; count <= 10; count++); Loop for count = [0,10] (11 iterations) Do this on board

24 Exercise What does the following display? int product = 1;
int max = 4; for(int i = 0; i <= max; i++) product = product * i; System.out.println("The product is " + product); Output The product is 0

25 Example Problem Find the lowest and highest ages in the class

26 Loop Body Get age of student 1 Update min/max ages
... Get age of student 38 End loop Output min and max ages

27 Min/Max Ages int min = 2000; // initialize to large value int max = 0; // initialize to small value for (int count = 1; count <= 38; count++) { //Ask student #count for age ... //Compute min and max if (age > max) max = age; if (age < min) min = age; } //Output min and max ages

28 Min/Max Ages if (age > max) max = age; if (age < min) min = age;
2000 20 23 18 25 12 94 36 if (age > max) max = age; if (age < min) min = age;

29 Debugging What to do if there’s something wrong with your program, but you’re not sure what? Trace the variables Watch the variables change as the program executes

30 Tracing Variables Two ways to trace variables Manually Automatically
Using print statements Automatically Using the debugger

31 Manual Tracing Insert print statements to output the values of variables System.out.print("Enter a negative number to end the loop"); int next = keyboard.nextInt(); int sum = 0; while (next >= 0) { sum = sum + next; System.out.println(sum); System.out.print("Enter a number: "); next = keyboard.nextInt(); }

32 Using a DEBUG flag Use a DEBUG flag to disable the tracing of variables when no longer needed final boolean DEBUG = true; if(DEBUG) { //print the values of variables }

33 Automatic Tracing Use a debugger
jGRASP provides an integrated debugger Allows you to “step” through your program to see how variables change with each line of code

34 Programming Demo Hand-shaking problem
Given a group of n people, everyone shakes hands with everyone else How many handshakes?

35 Programming Demo Example, n = 4 6 handshakes
Person 1 shakes hands with Person 2 Person 1 shakes hands with Person 3 Person 1 shakes hands with Person 4 Person 2 shakes hands with Person 3 Person 2 shakes hands with Person 4 Person 3 shakes hands with Person 4 6 handshakes

36 Programming Demo Example, n = 4 6 handshakes
Person 1 shakes hands with Person 2 shakes hands with Person 3 shakes hands with Person 4 Person 2 shakes hands with Person 3 Person 3 shakes hands with Person 4 6 handshakes

37 Handshake Problem n = 6 1 2 3 4 5 6 X

38 Programming Demo Implementation using nested loops

39 Friday Recitation Bring Laptops (fully charged)
Questions about Program 2


Download ppt "Announcements Lab 3 was due today Assignment 2 due next Wednesday"

Similar presentations


Ads by Google