Transcript while

loops
Chapter 4
“while” structures
• It repeats a set of statements while a condition is true.
while (condition)
{
execute these statements;
}
“while” structures
• It repeats a set of statements while a condition is true.
while ( condition ) 1
{
execute these statements;
}
2
3
The dynamics of “while”
1. Evaluate condition:
• if TRUE go to 2
• If FALSE go to 3
2. Execute statements, and then go to 1
3. Continue with next statement.
“while” structures
• It repeats a set of statements while a condition is true.
int speedLimit = 55;
int speed
= 0;
while ( speed <= speedLimit )
{
speed = speed + 1;
}
// since we don’t want a ticket…
speed = speed - 1;
• What is the value of “speed” after the
last statement?
A.
B.
C.
D.
E.
55
54
56
0
none of the
above
“while” structures
• It repeats a set of statements while a condition is true.
int speedLimit = 55;
int speed
= 0;
1
initialize variables
in conditional
while ( speed < speedLimit )
2
{
modify variables
speed = speed + 1;
in conditional
}
// since we don’t want a ticket…
speed = speed - 1;
•
“while” structures:
Exercises
Determine the output of the following methods:
public void foo1() {
int i=0;
while (i <= 20) {
System.out.println( i );
i = i + 4; // or i+= 4;
}
}
A.
B.
C.
D.
E.
0 4 8 12 16 20
4 8 12 16
0 4 8 12 16 20 24
0 4 8 12 16
none of the above
(on separate lines)
public void foo2() {
A. 20 10 5 2.5 1.25
int i = 20;
B. 10 5 2 1 0
while (i > 0) {
C. 20 5 2 1
D. 20 5 2 1 0
i = i / 2;
System.out.println( i ); E. none of the above
(on separate lines)
}
}
Do on the board
1. Write a method named “countDown” that receives an integer
parameter named “number”, and displays (using
System.out.println) all numbers from the number down to 0.
• For example, if the parameter was 8, the method should
display numbers 7, 6, 5, 4, 3, 2, 1, 0, in this order and with
each number in one line.
2. Write a method named “countEven” that receives an integer
parameter named “number”, displays (using
System.out.println) all even numbers between 0 and the
number received, and returns a integer value with the number of
even numbers displayed.
• For example, if the parameter was 8, the method should
display numbers 2, 4 and 6, in this order and with each
number in one line, and return a value of 3 (which is how
many even numbers were between 0 and 8).
“for” structures
• It (also) repeats statements while a condition is true. Works
best when loop will be repeated a known number of times
1
2
4
loop
initial
modify
for ( statement ; condition; statement )
{
statements;
3
}
5
The dynamics of “for”
1. Initialize condition variables.
2. Evaluate loop condition:
• if TRUE go to 3
• If FALSE go to 5
3. Execute statements; then go to 4
4. Modify condition variables; then go to 2
5. Continue with next statements.
prime using for
Write a method named “prime” that returns a boolean value
indicating whether an integer parameter named number is a
prime number.
How to write Java:
Answer the questions: Exactly how do you do this? What is a step
by step description?
WRITE IN ENGLISH. NOT Java
or Draw pictures.
or both
Debug the English: Trace through with numbers. especially with
going through the loop 0 times, 1 time, >= 1 times. Fix the
ENGLISH.
Write a method that returns a boolean value indicating whether
an integer parameter named number is a prime number.
1. Brainstorm. How do you figure out if a
number is prime? prime(11) prime(12).
Talk to each other.
2. Write an algorithm for that
3. Translate the algorithm to Java
Write a method that returns a boolean value indicating
whether an integer parameter named number is a prime
number.
public boolean prime(int nbr) // assumes nbr > 0
{
if (nbr < 2) // only look at positive numbers
return false;
for (int i=2;i<nbr;i++)
for loop
if (i % nbr == 0)
return false;
leaves loop and method
// else
// return true means there is no loop
return true; outside the loop
}
“for” structures: Exercises
1. Write a method named “factorial” that calculates the
factorial of an integer parameter named “number” (where
factorial is the multiplication of all numbers from 1 to
number-1). The method should return an integer number
with the result of the factorial, and it should work only with
positive numbers (return 0 in the case of non-positive
parameter numbers).
2. Write a call to factorial that prints the result of 4!
Embedded loops
• Write a method to draw a square box given
its size as a parameter
1. Write the first line (for loop
printing n stars)
2. println
3. for each internal line (n-2 of them)
a. print a *
b. print n-2 spaces
c. println a *
4. print the last line
public void printBox(int size)
{
if (size < 2) return; // boxes must be 2d
for (int i=0;i<size;i++)
System.out.print('*'); // first line
System.out.println( );
for (int i=0;i<size-2;i++) // print internal lines
{ System.out.print('*');
// loop within loop
for (int j=0;j<size-2;j++) // print internal spaces
System.out.print(' ');
System.out.println('*'); }
for (int i=0;i<size;i++)
System.out.print('*'); // last line
System.out.println( );
}
Embedded Loop Practice
• Write a loop that prints a times table 0-2:
0 01 2
1. Write the first line
0 00 0
2. for each number on the left (0*, 1*,
1 01 2
2*)
2 02 4
a. print the left number (the LHS of
the table)
b. for each number on the right (*0,
*1, *2)
i. print the product
c. println.