|
|
The good news is: you have learned all of them now !
However, you still need to learn how to use them effectively
|
|
We will now learn how to use the power of a programming language (Java) by combining (nesting) different statements
|
|
|
|
|
|
|
We will use this notation to expression some of our algorithms.
input: n = some integer number |
Note:
|
The algorithm contains some abstract steps that need to be fleshed out (work out the details)
|
Apply this programming technique to obtain a refined algorithm:
Now the algorithm contain only (concrete) steps that can be easily translated into a Java program !!!
import java.util.Scanner; public class Divisors01 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n; int x; System.out.print("Enter a number n: "); n = in.nextInt(); // Read in number x = 1; while ( x <= n ) // Run x = 1, 2, ..., n { if ( n % x == 0 ) { // x is a divisor of n System.out.println(x); // Print x (because it's a divisor) } x++; // Make sure we more to the next number !! // or else: infinite loop !!! } } } |
How to run the program:
|
for every possible value x do { if ( x is a solution ) print x; } |
|
|
|
|
input x, y; min = min(x, y); // this is the range of the brute force search for (a = 1, 2, ...., min) do { if (x and y are divisible by a) { print a; } } |
import java.util.Scanner; public class Divisors02 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int x, y, a, min = 0; x = in.nextInt(); // Read in x y = in.nextInt(); // Read in y if ( x < y ) // Find min(x,y) min = x; else min = y; a = 1; while ( a <= min ) // Run a = 1, 2, ..., min(x,y) { 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) } a++; // Make sure we move to the next number !! // or else: infinite loop !!! } } } |
How to run the program:
|
|
|
for ( every possible position i ) { if ( character at position i in string x == 'a ) { position i is a correct solution } } |
Ending position to search: x.length() − 1 !!!
import java.util.Scanner; public class FindChar01 { public static void main(String[] args) { Scanner in = new Scanner(System.in); String x; /* =========================================== Read in the word and store it in variable x ============================================ */ System.out.print("Enter a word x = "); x = in.next(); // Read in a word int i; i = 0; while ( i <= x.length() - 1 ) // Run i = 0, 1, ..., x.length()-1 { if ( x.charAt(i) == 'a' ) { // found 'a' at position i System.out.println(i); // Print position i } i++; // Make sure we more to the next position !! // or else: infinite loop !!! } } } |
How to run the program:
|
|
|
|
input x; a = 2; <---- Try use a = 2 as factor for x as long as x is not equal to 1 do { if (x is divisible by a) { // a is a factor of x !!! print a; (Because we have found another factor) Remove factor a from the number x (and continue) } else { Try use a+1 as factor } } |
|
import java.util.Scanner; public class Factor01 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int x; int a; System.out.print("Enter a number x: "); x = in.nextInt(); // Read in number a = 2; while ( x > 1 ) { if ( x % a == 0 ) { // a is a factor of x System.out.println(a); // Print a (because it's a divisor) x = x / a; // Remove factor a from x } else { a++; // Use next number as factor } } } } |
How to run the program:
|
|
Divide: 37 by 7 Initially: Quotient = 0 Remainder = 37 Is Remainder >= 7 ? Yes: Quotient = 1, Remainder = 30 Is Remainder >= 7 ? Yes: Quotient = 2, Remainder = 23 Is Remainder >= 7 ? Yes: Quotient = 3, Remainder = 16 Is Remainder >= 7 ? Yes: Quotient = 4, Remainder = 9 Is Remainder >= 7 ? Yes: Quotient = 5, Remainder = 2 Is Remainder >= 7 ? NO Answer: Quotient = 5, Remainder = 2 |
Input A, B Q = 0; R = A; as long as ( R >= B ) { Q = Q + 1; R = R - B; } Print Q, R |
import java.util.Scanner; public class Divide01 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int A, B; int Q, R; System.out.print("Enter A = "); A = in.nextInt(); // Read in number System.out.print("Enter B = "); B = in.nextInt(); // Read in number Q = 0; R = A; while ( R >= B ) { Q = Q + 1; R = R - B; } System.out.println("Quotient = " + Q); System.out.println("Remainder = " + R); } } |
How to run the program:
|