The break and continue statements

advertisement
The break and continue
statements
Introduction
• There are 2 special statements that can affect the execution
of loop statements (such as a while-statement)
• The special statements are:
• break
• continue
We will study their meaning and how to use these special
statements inside the while-statement
The break statement
• Syntax:
break
;
Effect:
• When the break statement is executed inside a loopstatement, the loop-statement is terminated
immediately
• The execution of the program will continue with the
statement following the loop-statement
The break statement (cont.)
• Schematically:
Programming example using the break
statement: find the GCD
• Problem description:
• Write a Java program that reads in 2 numbers x and
y...
• and prints the largest common divisor of both x and
y
Programming example using the break
statement: find the GCD (cont.)
• A concrete example:
• Input: x = 24 and y = 16
• Output: 8
Programming example using the break
statement: find the GCD (cont.)
• What would you do to solve this problem ?
• Suppose: x = 24 and y = 16
• The lesser of the values is 16
• Therefore, all divisors are ≤ 16
Programming example using the break
statement: find the GCD (cont.)
• Check if 16 and 24 are divisible by 16: no
• Check if 16 and 24 are divisible by 15: no
• ...
• Check if 16 and 24 are divisible by 10: no
• Check if 16 and 24 are divisible by 9: no
• Check if 16 and 24 are divisible by 8: YES
• Print 8 and STOP
Programming example using the break
statement: find the GCD (cont.)
• Rough algorithm:
input x, y;
min = min(x, y); // this is the range of the brute force search
for every value a = {min, min-1, min-2, ..., 1} do
{
if (x and y are divisible by a)
{
print a;
exit the while loop !!!
}
}
Programming example using the break
statement: find the GCD (cont.)
• Algorithm (structured diagram):
Programming example using the break
statement: find the GCD (cont.)
• Java program:
import java.util.Scanner;
public class GCD01
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int x, y, a, min = 0;
x = in.nextInt();
y = in.nextInt();
if ( x < y )
min = x;
else
min = y;
// Read in number
// Read in number
Programming example using the break
statement: find the GCD (cont.)
a = min;
while ( a >= 1 )
// Run a = min(x,y), min(x,y)-1, ..., 1
{
if ( x % a == 0 && y % a == 0 )
{ // a is a divisor of x and y
System.out.println(a); // Print a (because it's a common divisor)
break;
}
else
{
a--;
}
}
}
}
// Exit while loop !!! (Only need the largest)
// Move to the next number !!
Programming example using the break
statement: find the GCD (cont.)
• Example Program: (Demo above code)
– Prog file:
http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/07/Progs/
GCD01.java
• How to run the program:
• Right click on link and save in a scratch directory
• To compile: javac GCD01.java
• To run:
java GCD01
The continue statement
• Syntax:
continue;
The continue statement (cont.)
• Effect:
• When the continue statement is executed inside a loopstatement, the program will skip over the remainder of the
loop-body to the end of the loop
• Note:
• What happens next when the program reaches
the end of a loop depends on the type of loop
statement !!!
The continue statement (cont.)
• Effect of a continue statement in a while-loop:
• As given previously:
• the program will skip over the remainder of the
loop-body to the end of the loop
• In the case of a while-loop, when the program reaches
end of the loop, the program will jump back to the
testing of the loop-continuation-condition
The continue statement (cont.)
• Schematically:
Programming example using the continue
statement: find all divisors of a number
• Problem description:
• Write a Java program that reads in an integer n...
• and prints all its divisors
Programming example using the continue
statement: find all divisors of a number (cont.)
• Previously discussed solution:
We try every number a = 1, 2, ..., n
For each number a, we check if n % a == 0.
Programming example using the continue
statement: find all divisors of a number (cont.)
• We can re-write the same algorithm differently using a
continue statement as follows:
Programming example using the continue
statement: find all divisors of a number (cont.)
Notice that the if-condition has been changed to x % a !=
0, meaning: a is not a divisor of x
When a is not a divisor of x, (the then-part), we increment
a (to try next number) and jump to the end of the whileloop using the continue statement.
When x % a != 0 is false, the program will print a and
increment a (to try next number)
Programming example using the continue
statement: find all divisors of a number
(cont.)
• Java program:
public class Continue01
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int n, a;
n = in.nextInt();
// Read in number
a = 1;
Programming example using the continue
statement: find all divisors of a number
(cont.)
while ( a <= n )
// Run a = 1, 2, ..., n
{
if ( n % a != 0 )
{ // a is NOT a divisor of n
a++;
continue;
// Jump to end of while loop
}
}
}
/* ---------------------------------------------We reach here ONLY when "n % a != 0" is FALSE
I.e.: a is a divisor of x
---------------------------------------------- */
System.out.println(a); // Print a (because it's a divisor)
a++;
// Make sure we more to the next number !!
// or else: infinite loop !!!
}
Programming example using the continue
statement: find all divisors of a number
(cont.)
• Example Program: (Demo above code)
– Prog file:
http://mathcs.emory.edu/~cheung/Courses/170/Syllabus/07/Progs/
Continue01.java
• How to run the program:
• Right click on link and save in a scratch directory
• To compile: javac Continue01.java
• To run:
java Continue01
Programming advice
• Good programming practice:
• A computer program will be easier to understand if it
is transparent.
• One way to improve transparency is a consistent flow
of control Meaning, the program always take the same
path of execution
• The break and the continue commands will alter the
flow of control Therefore, they make a computer
program less transparent
• It is a general recommendation to avoid using break
and continue statements when you can write the
algorithm easily without them.
Download