Java Reference

In-Depth Information

the four loopy questions. This allows you to
separate your concerns
. For exam-

ple, when writing the initialization, you do not worry about the loop condition or

repetend, you just ask yourself what needs to be done to truthify the invariant.

When you are finished writing the loop, test it in your IDE! That is the only way

to be sure you did it properly.

E1.
Write four loops (with initialization) to store in
x
the product of the integers

in the range
2..10
. The postcondition
R
is:
x
is the product of
2..10
.

(a)
Use this invariant
P1. It
was created by replacing constant
10
in
R
by
k:

P1: 2 ≤ k ≤ 10
and
x
is the product of
2..k

(b)
Use this invariant
P2
. It was created by replacing constant
10
in
R
by
k-1:

P2: 2 ≤ k ≤ 11
and
x
is the product of
2..k-1

(c)
Use this invariant
P3
. It was created by replacing constant
2
in
R
by
k:

P3: 2 ≤ k ≤ 10
and
x
is the product of
k..10

(d)
Use this invariant
P4
. It was created by replacing constant
2
in
R
by
k+1:

P4: 1 ≤ k ≤ 10
and
x
is the product of
k+1..10

E2.
Write four loops (with initialization) to determine whether an integer n
is

divisible by an integer in the range
first..last
, where
first ≤ last
. The

answer is stored in a boolean variable
b
: the postcondition
R
is:

R: b = "
n is divisible by an integer in
first..last"

(a)
Use this invariant
P1
, which was created by replacing
last
in
R
by
k:

P1: b = first - 1 ≤ k ≤ last
and

"
n is divisible by an integer in
first..k"

(b)
Use this invariant
P2
. It was created by replacing constant
last
in
R
by
k-1:

P2: first ≤ k ≤ last + 1
and

b = "n
is divisible by an integer in
first..k-1"

(c)
Use this invariant
P3
. It was created by replacing constant
first
in
R
by
k:

P3: first ≤ k ≤ last+1
and
b = "
n is divisible by an integer in
k..last"

(d)
Use this invariant
P4
. It was created by replacing constant
first
in
R
by
k+1:

P4: first-1 ≤ k ≤ last
and

b = "
n is divisible by an integer in
k+1..last"

E3.
Given is
n>0
. Write a loop (with initialization) to store in k the largest

power of
2
that is at most
n
. Note that
2
0
=1
. The obvious way to calculate
k
is

to successively set
k
to
1
,
2
,
4
,
8
, ... until the right power of
2
is reached. Use the

Search WWH ::

Custom Search