Soon it will be possible to compile and run Mint programs in
DrJava. I just haven’t had time to finish this. In the meantime, here is a program that you can analyze. It is another program that calculates the power x^n.
import edu.rice.cs.mint.runtime.Code;
public class Power_For {
public static void main(String[] args) {
final double x = 2;
int n = 17;
Code
for(int i=0; i<n; ++i) {
c = <| `c * x |>;
}
System.out.println(c.run());
}
}
This time it uses a for loop. I don’t know if you have seen for loops, but the part
for(int i=0; i<17; ++i) { /* something here */ }
sets a variable i to 0, and repeats the part /* something here \*/ as long as i<n. Each time the loop is done with /* something here */, it will execute ++i, which will increase i by 1. So eventually i will be 17, and since n is 17, i is not < n anymore, and the loop exits.
We have a Code<Double> c that starts out with the code for 1.0:
Code<Double> c = <| 1.0 |>;
Then we have the aforementioned for loop. The code that gets executed
over and over in the loop body is
c = <| `c * x |>;
We are creating a new code value, and inside the code value, we’re splicing in c (initially 1.0) and multiplying it with x. Then we assign the new code value back to c. That means after the first
iteration of the loop, c will be the following:
<| 1.0 * x |>
After the second iteration, c will be
<| 1.0 * x * x |>
And so on. After the 17th iteration, it will contain the code
<| 1.0 * x * x * x * x * x * x * x * x * x * x * x * x * x
* x * x * x * x |>
When we run c with c.run() and print out the value, we will get 131072.0, which is 2 to the power of 17, as expected.
You can download the complete source code for the example here:
Power_For.java: Multi-stage Power function using aforLoop
(Re-posted from The Java Mint Blog)
