Download presentation

Presentation is loading. Please wait.

Published byBenjamin Schroeder Modified over 3 years ago

1
COMP 110: Introduction to Programming Tyler Johnson Feb 11, 2009 MWF 11:00AM-12:15PM Sitterson 014

2
COMP 110: Spring 20092 Announcements Lab 3 due tomorrow by midnight Program 1 has been graded

3
COMP 110: Spring 20093 Questions?

4
COMP 110: Spring 20094 Today in COMP 110 Programming with Loops Programming Demo Using the Debugger

5
COMP 110: Spring 20095 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

6
COMP 110: Spring 20096 Review Do-While Syntax do { Statement_1 Statement_2 … Statement_N } while (Boolean_Expression); //note the semicolon! Execute Statements_1…N If Boolean_Expression is true, repeat

7
COMP 110: Spring 20097 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

8
COMP 110: Spring 20098 Review Choosing a loop Do-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

9
COMP 110: Spring 20099 The Break Statement Causes the immediately enclosing switch statement or loop to end The remainder of the loop (or switch) is not executed int i = 0; while (i < 5) { if(i == 3) break; i++; } //value of i is 3

10
COMP 110: Spring 200910 The Continue Statement Causes the current loop iteration to end immediately Execution resumes at the loop condition for (int i = 0; i < 5, i++) { if(i == 3) continue; System.out.println(i + ", "); } 0, 1, 2, 4, Output

11
COMP 110: Spring 200911 Break & Continue Avoid using break and continue inside loops Can make your programs difficult to understand!

12
COMP 110: Spring 200912 Nested Loops Its possible, and sometimes necessary to place loops inside other loops This is called nesting Just like with nested if-statements

13
COMP 110: Spring 200913 Nested Loops Example int sum = 0; int i = 0; while(i < 10) { for(int j = 0; j < 20; j++) sum = sum + j; //executes 10 * 20 times i++; //executes 10 times, i = [0, 9] }

14
COMP 110: Spring 200914 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);

15
COMP 110: Spring 200915 Designing Loops Creating a loop involves designing three things Initialization of Variables Loop Body Stopping Condition

16
COMP 110: Spring 200916 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

17
COMP 110: Spring 200917 Designing a Loop Body Output instructions to the user Initialize variables Prompt user for input Read a number into variable next sum = sum + next; Prompt user for input Read a number into variable next sum = sum + next; 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

18
COMP 110: Spring 200918 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?

19
COMP 110: Spring 200919 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.

20
COMP 110: Spring 200920 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;

21
COMP 110: Spring 200921 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

22
COMP 110: Spring 200922 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

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

24
COMP 110: Spring 200924 Off-by-One errors Loop repeats one too many or one too few times How many times do these loops iterate? for (count = 1; count < 10; count++); Loop for count = [1,9] (9 iterations) for (count = 0; count <= 10; count++); Loop for count = [0,10] (11 iterations) for (count = 1; count <= 10; count++); Loop for count = [1,10] (10 iterations)

25
COMP 110: Spring 200925 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.next(); } while (answer.equalsIgnoreCase("yes"));

26
COMP 110: Spring 200926 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(); }

27
COMP 110: Spring 200927 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);

28
COMP 110: Spring 200928 Exercise What does the following display? int product = 1; int max = 20; for(int i = 0; i <= max; i++) product = product * i; System.out.println("The product is " + product); The product is 0 Output

29
COMP 110: Spring 200929 Example Problem Find the lowest and highest ages in the class

30
COMP 110: Spring 200930 Loop Body Get age of student 1 Update min/max ages Get age of student 2 Update min/max ages... Get age of student 37 Update min/max ages End loop Output min and max ages

31
COMP 110: Spring 200931 Min/Max Ages int min = 2000; // initialize to large value int max = 0; // initialize to small value for (int count = 1; count <= 37; count++) { //Ask student #count for age if (age > max) max = age; if (age < min) min = age; } //Output min and max ages

32
COMP 110: Spring 200932 Min/Max Ages if (age > max) max = age; if (age < min) min = age; Agesmaxmin 02000 20 23 20 182318 2318 25 18 122512 94 12 369412 …

33
COMP 110: Spring 200933 Debugging What to do if theres something wrong with your program, but youre not sure what? Trace the variables Watch the variables change as the program executes

34
COMP 110: Spring 200934 Tracing Variables Two ways to trace variables Manually Using print statements Automatically Using the debugger

35
COMP 110: Spring 200935 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) { System.out.println(next); sum = sum + next; System.out.println(sum); System.out.print("Enter a number: "); next = keyboard.nextInt(); }

36
COMP 110: Spring 200936 Using a DEBUG flag Use a DEBUG flag to disable the tracing of variables when no longer needed final boolean DEBUG = true; //trace variables? … if(DEBUG) { //print the values of variables }

37
COMP 110: Spring 200937 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

38
COMP 110: Spring 200938 Programming Demo Hand-shaking problem Given a group of n people, everyone shakes hands with everyone else How many handshakes?

39
COMP 110: Spring 200939 Programming Demo Example, n = 4 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

40
COMP 110: Spring 200940 Programming Demo Example, n = 4 Person 1 shakes hands with Person 2 shakes hands with Person 3 shakes hands with Person 4 Person 2 shakes hands with Person 3 shakes hands with Person 4 Person 3 shakes hands with Person 4 6 handshakes

41
COMP 110: Spring 200941 Handshake Problem 123456 1XXXXX 2XXXX 3XXX 4XX 5X 6 n = 6 Outer Loop Inner Loop

42
COMP 110: Spring 200942 Programming Demo Implementation using nested loops

43
COMP 110: Spring 200943 Tutorial Using the jGRASP Debugger

44
COMP 110: Spring 200944 Friday Recitation Bring Laptops (fully charged) Textbook Questions about Program 2

Similar presentations

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google