A procedural abstraction is a mapping from arguments to results, with possible modification of some of the arguments. The arguments are members of the *domain* of the procedure, and the results are members of its *range*.

A procedure often makes sense only for arguments in a subset of its domain. For example, a procedure that computes the factorial makes sense only if its argument is positive. As another example, the `search`

procedure can return the index of the element only if the element appears in the array.

One way of coping with such a situation is to use partial procedures, as discussed in Chapter 3. For example, we might define `gcd`

only when its arguments are positive:

public static int gcd (int n, int d) // REQUIRES: n, d > 0 ...

Start Free Trial

No credit card required