37 Javanotes 9.0, Quiz on Chapter 8
Quiz on Chapter 8
Question 1:
Why do programming languages
require that variables be declared before they are used? What does this have to
do with correctness and robustness?
Question 2:
What is a precondition? Give an example.
Question 3:
Explain how preconditions
can be used as an aid in writing correct programs.
Question 4:
Find a useful loop invariant for the while loop in
the binary search algorithm (Subsection 7.5.1).
Question 5:
Java has a predefined class
called Throwable. What does this class represent? Why does it
exist?
Question 6:
Write a method that
prints out a 3N+1 sequence starting from a given integer, N.
The starting value should be a parameter to the method. If the parameter is
less than or equal to zero, throw an IllegalArgumentException. If the
number in the sequence becomes too large to be represented as a value of type
int, throw an ArithmeticException.
Question 7:
Rewrite the method from the previous question, using assert
statements instead of exceptions to check for errors. What is the difference between
the two versions of the method when the program is run?
Question 8:
Some classes of exceptions are checked exceptions that
require mandatory exception handling. Explain what this means.
Question 9:
Consider a subroutine processData() that has the header
static void processData() throws IOException
Write a try..catch statement that calls this subroutine and prints
an error message if an IOException occurs.
Question 10:
Why should a subroutine
throw an exception when it encounters an error? Why not just terminate the
program?
Question 11:
Suppose that you have a choice of two algorithms that perform
the same task. One has average-case run time that is Θ(n2) while the run time
of the second algorithm has an average-case run time that is Θ(n*log(n)). Suppose that
you need to process an input of size n = 100. Which algorithm would
you choose? Can you be certain that you are choosing the fastest algorithm for the
input that you intend to process?
Question 12:
Analyze the run time of the following algorithm. That is, find a function
f(n) such that the run time of the algorithm is O(f(n)) or, better, Θ(f(n)).
Assume that A is an array of integers, and use the length of the array
as the input size, n.
int total = 0;
for (int i = 0; i < A.length; i++) {
if (A[i] > 0)
total = total + A[i];
}