Download presentation
Presentation is loading. Please wait.
1
University of British Columbia CPSC 111, Intro to Computation 2009W2: Jan-Apr 2010 Tamara Munzner 1 Loops I Lecture 17, Fri Feb 12 2010 http://www.cs.ubc.ca/~tmm/courses/111-10 borrowing from slides by Kurt Eiselt
2
2 Reading n This week: Chapter 5 all (5.1-5.4) n second edition: Chap 6 n Next week: Chapter 6 all (6.1-6.4) n second edition: Chap 7
3
3 News n Next week is reading week n no lectures or labs or tutorials n Midterms returned today n Grades, statistics already posted on WebCT n returned end of class, line up by last name (A- Z)
4
4 Midterm Marks Distribution n marks will not be scaled
5
5 Midterm Distribution: Detailed
6
6 Regrading n Reminder: protocol for regrade requests n read solution and marking scheme first, carefully n no regrade requests accepted until at least 24 hours after material is handed back n exception: arithmetic errors n regrade requests must be in writing (paper or email) n assignments: to marker (listed on cover sheet) n if still have dispute after discussion with TA, can escalate to instructor n exams: to instructor
7
7 Recap: Comparing Strings n Relational operator == is wrong way to compare String name1 = "Bubba"; String name2 = "Bubba"; System.out.println(name1 == name2); // prints false n equals method is right way to compare Strings String name1 = "Bubba"; String name2 = "Bubba"; System.out.println(name1.equals(name2)); // prints true n why? diagrams will help
8
8 Recap: Comparing Strings n name1 == name2 : two different references, false name1 name2 "Bubba" n name1.equals(name2) : contents same, true
9
9 Recap: Short-Circuting Evaluation n Java evaluates complex expressions left to right n short-circuiting: Java stops evaluating once value is clearly true or false n aka lazy evaluation if ((b > a) && (c == 10)) System.out.println("when b<=a short-circuit"); if ((b > a) || (c == 10)) System.out.println("when b>a short-circuit"); n Corollary: avoid statements with side effects if ((b > a) || (c++)) System.out.println("Danger Will Robinson!");
10
10 Recap: Conditional Syntax if ( boolean expression ) statement else if ( boolean expression ) statement n optional: zero, one, or many else statement n optional n if, else are reserved words n parentheses mandatory n statement can be n single line n block of several lines enclosed in { }
11
11 Recap: Comparing Floats/Doubles n Relational operator for equality not safe for floating point comparison if (.3 == 1.0/10.0 + 1.0/10.0 + 1.0/10.0)) System.out.println("Beware roundoff error"); n Check if difference close to 0 instead if (Math.abs(f1 - f2) < TOLERANCE) System.out.println (“Essentially equal.”);
12
12 Recap: Comparing Characters n Safe to compare character types with relational operators char c = 'a'; char d = 'b'; if (c == d) System.out.println("they match");
13
13 Recap: Switch Syntax switch ( expression ) { case value : statements break; case value : statements break; default: statements n switch, case, break are reserved words n expression and value must be int or char n value cannot be variable n break important, or else control flow continues to next set n statements can be one line or several lines n default executed if no values match expression
14
14 Objectives n Practice with conditionals n Understand basic loops
15
15 public class NestTest3 { public static void main (String[] args) { respondToName("Flocinaucinihilipiliphication"); respondToName("Supercalifragilisticexpialidocious"); respondToName("Ambrose"); respondToName("Kermit"); respondToName("Miss Piggy!!!"); respondToName("Spot"); respondToName("me"); } public static void respondToName(String name) { System.out.println("You're named " + name); if (name.length() > 20) { System.out.println("Gosh, long name"); System.out.println("Keeping typists busy..."); } else if (name.length() > 30) { System.out.println("Over the top"); } else if (name.length() < 10) { if (name.charAt(0) == 'A') System.out.println("You're first"); else if (name == "Kermit") System.out.println("You're a frog"); System.out.println("I love animals"); } else if (name.equals("Spot")) { System.out.println("You're spotted"); } else if (name.length() < 3) { System.out.println("Concise!"); }
16
16 Repetition, Iteration, Loops n Computers good at performing same task many times n Loops allow repetitive operations in programs n aka iteration statements, repetition statements n Loops handy in real life too
17
17 Climbing Stairs n Am I at the top of the stairs?
18
18 Climbing Stairs n Am I at the top of the stairs? n No. n Climb up one step.
19
19 Climbing Stairs n Am I at the top of the stairs? n No. n Climb up one step. n Am I at the top of the stairs?
20
20 Climbing Stairs n Am I at the top of the stairs? n No. n Climb up one step. n Am I at the top of the stairs? n No. n Climb up one step.
21
21 Climbing Stairs n Am I at the top of the stairs? n No. n Climb up one step. n Am I at the top of the stairs? n No. n Climb up one step. n Am I at the top of the stairs?
22
22 Climbing Stairs n Am I at the top of the stairs? n No. n Climb up one step. n Am I at the top of the stairs? n No. n Climb up one step. n Am I at the top of the stairs? n No. n Climb up one step. n Am I at the top of the stairs? n No. n Climb up one step. n...and so on...
23
23 Washing Hair n Lather
24
24 Washing Hair n Lather n Rinse
25
25 Washing Hair n Lather n Rinse n Repeat
26
26 Washing Hair n Lather n Rinse n Repeat n When do you stop??
27
27 While Statement while (boolean expression) body n Simplest form of loop in Java n Body of loop can be n single statement n whole block of many statements in curly braces n Control flow n body executed if expression is true n then boolean expression evaluated again n if expression still true, body executed again n repetition continues until expression false n then processing continues with next statement after loop
28
28 If Versus While Statements boolean expression statement true how if statement works false
29
29 If Versus While Statements boolean expression statement true how if statement works boolean expression statement truefalse how while statement works false
30
30 If Versus While Statements n How can loop boolean change from false to true? boolean expression statement true how if statement works boolean expression statement truefalse how while statement works false
31
31 If Versus While Statements n These diagrams called flowcharts boolean expression statement true how if statement works boolean expression statement truefalse how while statement works false
32
32 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } n while statement
33
33 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } n boolean expression
34
34 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } n while statement body
35
35 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } n statement after while n control flow resumes here when boolean is false
36
36 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } n trace what happens when execute
37
37 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } limit 3
38
38 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } limit 3 counter 1
39
39 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } limit 3 counter 1 Is counter <= limit? yes
40
40 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } limit 3 counter 1 Is counter <= limit? yes "The square of 1 is 1" printed on monitor
41
41 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } limit 3 counter 2
42
42 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } limit 3 counter 2 Is counter <= limit? yes
43
43 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } limit 3 counter 2 Is counter <= limit? yes "The square of 2 is 4" printed on monitor
44
44 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } limit 3 counter 3
45
45 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } limit 3 counter 3 Is counter <= limit? yes
46
46 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } limit 3 counter 3 Is counter <= limit? yes "The square of 3 is 9" printed on monitor
47
47 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } limit 3 counter 4
48
48 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } limit 3 counter 4 Is counter <= limit? NO!
49
49 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } limit 3 counter 4 Is counter <= limit? NO! “End of demonstration" printed on monitor
50
50 Climbing Stairs Again n Am I at the top of the stairs? n No. n Climb up one step. n Am I at the top of the stairs? n No. n Climb up one step. n Am I at the top of the stairs? n No. n Climb up one step. n Am I at the top of the stairs? n No. n Climb up one step. n...and so on...
51
51 Climbing Stairs Again while (I’m not at the top of the stairs) { Climb up one step } n Climbing stairs is a while loop!
52
52 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter >= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } n change termination condition
53
53 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter >= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } n change termination condition n body of loop never executed
54
54 Using while Statements public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter >= counter) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } n change termination condition n always true
55
55 Infinite Loops public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter >= counter) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 1; } System.out.println("End of demonstration"); } n if termination condition always true, loop never ends n infinite loop goes forever
56
56 Infinite Loops public class WhileDemo { public static void main (String[] args) { int limit = 3; int counter = 1; while (counter <= limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter - 1; } System.out.println("End of demonstration"); } n good termination condition n but process never gets closer to condition
57
57 Infinite Loops public class WhileDemo { public static void main (String[] args) { int limit = 9; int counter = 0; while (counter != limit) { System.out.println("The square of " + counter + " is " + (counter * counter)); counter = counter + 2; } System.out.println("End of demonstration"); } n process gets closer to termination condition n but never satisfies condition, keeps going past it
58
58 Another while Example public class PrintFactorials { public static void main (String[] args) { int limit = 10; int counter = 1; int product = 1; while (counter <= limit) { System.out.println("The factorial of " + counter + " is " + product’\); counter = counter + 1; product = product * counter; } System.out.println("End of demonstration"); } n accumulate product
59
59 Questions?
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.