The break and continue statements Introduction There are
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 GCD 01 { public static void main(String[] args) { Scanner in = new Scanner(System. in); int x, y, a, min = 0; x = in. next. Int(); // Read in number y = in. next. Int(); // Read in number if ( x < y ) min = x; else min = y;
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; // Exit while loop !!! (Only need the largest) } else { a--; // 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/ GCD 01. java • How to run the program: • Right click on link and save in a scratch directory • To compile: javac GCD 01. java • To run: java GCD 01
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 Continue 01 { public static void main(String[] args) { Scanner in = new Scanner(System. in); int n, a; n = in. next. Int(); // 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/ Continue 01. java • How to run the program: • Right click on link and save in a scratch directory • To compile: javac Continue 01. java • To run: java Continue 01
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.
- Slides: 25