Pages

20.8.11

Exercises on Section 4

Exercise 9

For each of the following functions, give the signature and suggest a suitable precondition.
  • (a) TOUPPER, which changes a string, containing only lower-case letters, into the corresponding string consisting of upper-case letters. (So, for example, TOUPPER(“word”) = “WORD”.)

  • (b) REMOVELAST, which, given a sequence, deletes its last member.

  • (c) LAST, which returns the last member of a sequence.

Answer

Solution

  • (a) This function inputs a string and outputs a string, therefore it has signature TOUPPER : SeqOfCharSeqOfChar. It requires a precondition that the input sequence consists entirely of lower-case letters.

  • (b) The members of the sequence may come from any set, which we will denote by X. The input is a sequence and the returned value is also a sequence. So the signature is REMOVELAST : SeqOfXSeqOfX . The input sequence should contain at least one member (otherwise there is no last member to delete), so we need a precondition that the input sequence is not empty.

  • (c) This is similar to (a), except that the returned value is an item from X, rather than a sequence. The signature is LAST : SeqOfXX. We again need the precondition that the input sequence is not empty.

Exercise 10

Suppose that the days of the week are represented by numbers, with Mon-day represented by 1, Tuesday represented by 2, and so on, with Sunday represented by 7. Describe a function TOMORROW2, giving the next day with Days represented in this way.

Answer

Solution

You may have given this description.
function TOMORROW2(d in Int) return in Int
pre d is in the set {1,2,3,4,5,6,7}.
post The returned value is t, where:
  • if d = 1 then t = 2

  • if d = 2 then t = 3

  • if d = 3 then t = 4

  • if d = 4 then t = 5

  • if d = 5 then t = 6

  • if d = 6 then t = 7

  • if d = 7 then t = 1.

Or you may have given a shorter description, such as:
function TOMORROW2(d in Int) return in Int
pre 1 ≤ d ≤ 7.
post The returned value is t, where:
t = d + 1 if 1 = d = 6;
t = 1 if d = 7.
Either of these answers is fine.

Exercise 11

  • (a) With s = “abcd”, evaluate each of:
    • (i) AT(1, s);

    • (ii) PUT(2, s, AT(1, s)).


  • (b) For a general sequence s, describe how the sequence PUT(2, s, AT(1, s)) is obtained from s.

The functions AT and PUT were described in Activity 16.

Answer

Solution

  • (a)(i) With s = “abcd”, AT(1,s) = ‘a’.

  • (ii) Then PUT(2,s,AT(1,s)) = PUT(2,“abcd”,‘a’) = “aacd”.

  • (b) In general, PUT(2,s,AT(1,s)) is formed by replacing the second member of the sequence s with a copy of the first member of s.

No comments:

Post a Comment