Title: Loops Lecture 12, Tue Feb 21 2006
1Loops Lecture 12, Tue Feb 21 2006
based on slides by Kurt Eiselt
http//www.cs.ubc.ca/tmm/courses/cpsc111-06-spr
2News
- Welcome back!
- resume lectures, labs, tutorials, office hours
- Midterm and Assignment 1 returned
- pick up after class if you don't have yet
- midterm solutions posted on WebCT
- Assignment 2 posted soon
- probably later today
3Reading
- This week Chapter 7 all (7.1-7.4)
4Recap Comparing Strings
- Relational operator is wrong way to compare
- String name1 "Bubba"
- String name2 "Bubba"
- System.out.println(name1 name2) // prints
false - equals method is right way to compare Strings
- String name1 "Bubba"
- String name2 "Bubba"
- System.out.println(name1.equals(name2)) //
prints true - why? diagrams will help
5Recap Comparing Strings
- name1 name2 two different references, false
"Bubba"
name1
name2
"Bubba"
- name1.equals(name2) contents same, true
6Recap Short-Circuting Evaluation
- Java evaluates complex expressions left to right
- short-circuiting Java stops evaluating once
value is clearly true or false - aka lazy evaluation
- if ((b gt a) (c 10))
- System.out.println("when blta
short-circuit") - if ((b gt a) (c 10))
- System.out.println("when bgta short-circuit")
- Corollary avoid statements with side effects
- if ((b gt a) (c))
- System.out.println("Danger Will Robinson!")
7Recap Conditional Syntax
- if ( boolean expression ) statement
- else if ( boolean expression ) statement
- optional zero, one, or many
- else statement
- optional
- if, else are reserved words
- parentheses mandatory
- statement can be
- single line
- block of several lines enclosed in
8Recap Comparing Floats/Doubles
- 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")
- Check if difference close to 0 instead
- if (Math.abs(f1 - f2) lt TOLERANCE)
- System.out.println (Essentially equal.)
9Recap Comparing Characters
- Safe to compare character types with relational
operators - char c 'a'
- char d 'b'
- if (c d)
- System.out.println("they match")
-
10Recap Switch Syntax
- switch ( expression )
- case value
- statements
- break
- case value
- statements
- break
- default
- statements
- switch, case, break are reserved words
- expression and value must be int or char
- value cannot be variable
- break important, or else control flow continues
to next set - statements can be one line or several lines
- default executed if no values match expression
11Objectives
- Practice with conditionals
- Understand basic loops
12public class NestTest3 public static void
main (String args) respondToName("Floc
inaucinihilipiliphication")
respondToName("Supercalifragilisticexpialidocious"
) respondToName("Ambrose")
respondToName("Kermit")
respondToName("Miss Piggy!!!")
respondToName("Spot") respondToName("me")
public static void respondToName(Strin
g name) System.out.println("You're
named " name) if (name.length() gt 20)
System.out.println("Gosh, long
name") System.out.println("Keeping
typists busy...") else if
(name.length() gt 30)
System.out.println("Over the top")
else if (name.length() lt 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() lt 3)
System.out.println("Concise!")
13Repetition, Iteration, Loops
- Computers good at performing same task many times
- Loops allow repetitive operations in programs
- aka iteration statements, repetition statements
- Loops handy in real life too
14Climbing Stairs
- Am I at the top of the stairs?
15Climbing Stairs
- Am I at the top of the stairs?
- No.
- Climb up one step.
16Climbing Stairs
- Am I at the top of the stairs?
- No.
- Climb up one step.
- Am I at the top of the stairs?
17Climbing Stairs
- Am I at the top of the stairs?
- No.
- Climb up one step.
- Am I at the top of the stairs?
- No.
- Climb up one step.
18Climbing Stairs
- Am I at the top of the stairs?
- No.
- Climb up one step.
- Am I at the top of the stairs?
- No.
- Climb up one step.
- Am I at the top of the stairs?
19Climbing Stairs
- Am I at the top of the stairs?
- No.
- Climb up one step.
- Am I at the top of the stairs?
- No.
- Climb up one step.
- Am I at the top of the stairs?
- No.
- Climb up one step.
- Am I at the top of the stairs?
- No.
- Climb up one step.
- ...and so on...
20Washing Hair
21Washing Hair
22Washing Hair
23Washing Hair
- Lather
- Rinse
- Repeat
- When do you stop??
24While Statement
- while (boolean expression)
- body
- Simplest form of loop in Java
- Body of loop can be
- single statement
- whole block of many statements in curly braces
- Control flow
- body executed if expression is true
- then boolean expression evaluated again
- if expression still true, body executed again
- repetition continues until expression false
- then processing continues with next statement
after loop
25If Versus While Statements
how if statement works
boolean expression
true
false
statement
26If Versus While Statements
how while statement works
how if statement works
boolean expression
boolean expression
true
true
false
false
statement
statement
27If Versus While Statements
how while statement works
how if statement works
boolean expression
boolean expression
true
true
false
false
statement
statement
- How can loop boolean change from false to true?
28If Versus While Statements
how while statement works
how if statement works
boolean expression
boolean expression
true
true
false
false
statement
statement
- These diagrams called flowcharts
29Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt limit)
-
- System.out.println("The square of "
counter - " is " (counter
counter)) - counter counter 1
-
- System.out.println("End of demonstration")
-
-
- while statement
30Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt limit)
-
- System.out.println("The square of "
counter - " is " (counter
counter)) - counter counter 1
-
- System.out.println("End of demonstration")
-
-
- boolean expression
31Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt limit)
-
- System.out.println("The square of "
counter - " is " (counter
counter)) - counter counter 1
-
- System.out.println("End of demonstration")
-
-
- while statement body
32Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt limit)
-
- System.out.println("The square of "
counter - " is " (counter
counter)) - counter counter 1
-
- System.out.println("End of demonstration")
-
-
- statement after while
- control flow resumes here when boolean is false
33Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt limit)
-
- System.out.println("The square of "
counter - " is " (counter
counter)) - counter counter 1
-
- System.out.println("End of demonstration")
-
-
- trace what happens when execute
34Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt limit)
-
- System.out.println("The square of "
counter - " is " (counter
counter)) - counter counter 1
-
- System.out.println("End of demonstration")
-
limit
3
35Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt limit)
-
- System.out.println("The square of "
counter - " is " (counter
counter)) - counter counter 1
-
- System.out.println("End of demonstration")
-
limit
3
counter
1
36Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt 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 lt limit? yes
37Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt 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 lt limit? yes
"The square of 1 is 1" printed on monitor
38Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt limit)
-
- System.out.println("The square of "
counter - " is " (counter
counter)) - counter counter 1
-
- System.out.println("End of demonstration")
-
limit
3
counter
2
39Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt 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 lt limit? yes
40Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt 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 lt limit? yes
"The square of 2 is 4" printed on monitor
41Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt limit)
-
- System.out.println("The square of "
counter - " is " (counter
counter)) - counter counter 1
-
- System.out.println("End of demonstration")
-
limit
3
counter
3
42Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt 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 lt limit? yes
43Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt 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 lt limit? yes
"The square of 3 is 9" printed on monitor
44Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt limit)
-
- System.out.println("The square of "
counter - " is " (counter
counter)) - counter counter 1
-
- System.out.println("End of demonstration")
-
limit
3
counter
4
45Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt 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 lt limit? NO!
46Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt 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 lt limit? NO!
End of demonstration" printed on monitor
47Climbing Stairs Again
- Am I at the top of the stairs?
- No.
- Climb up one step.
- Am I at the top of the stairs?
- No.
- Climb up one step.
- Am I at the top of the stairs?
- No.
- Climb up one step.
- Am I at the top of the stairs?
- No.
- Climb up one step.
- ...and so on...
48Climbing Stairs Again
- while (Im not at the top of the stairs)
-
- Climb up one step
-
- Climbing stairs is a while loop!
49Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter gt limit)
-
- System.out.println("The square of "
counter - " is " (counter
counter)) - counter counter 1
-
- System.out.println("End of demonstration")
-
-
- change termination condition
50Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter gt limit)
-
- System.out.println("The square of "
counter - " is " (counter
counter)) - counter counter 1
-
- System.out.println("End of demonstration")
-
-
- change termination condition
- body of loop never executed
51Using while Statements
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter gt counter)
-
- System.out.println("The square of "
counter - " is " (counter
counter)) - counter counter 1
-
- System.out.println("End of demonstration")
-
-
- change termination condition
- always true
52Infinite Loops
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter gt counter)
-
- System.out.println("The square of "
counter - " is " (counter
counter)) - counter counter 1
-
- System.out.println("End of demonstration")
-
-
- if termination condition always true, loop never
ends - infinite loop goes forever
53Infinite Loops
- public class WhileDemo
-
- public static void main (String args)
-
- int limit 3
- int counter 1
-
- while (counter lt limit)
-
- System.out.println("The square of "
counter - " is " (counter
counter)) - counter counter - 1
-
- System.out.println("End of demonstration")
-
-
- good termination condition
- but process never gets closer to condition
54Infinite 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")
-
-
- process gets closer to termination condition
- but never satisfies condition, keeps going past
it
55Another while Example
- public class PrintFactorials
-
- public static void main (String args)
-
- int limit 10
- int counter 1
- int product 1
-
- while (counter lt limit)
-
- System.out.println("The factorial of "
counter - " is " product\)
- counter counter 1
- product product counter
-
- System.out.println("End of demonstration")
-
-
- accumulate product
56Questions?