Skip to content
Skip to main content

About this free course

Download this course

Share this free course

Data and processes in computing
Data and processes in computing

Start this free course now. Just create an account and sign in. Enrol and complete the course for a free statement of participation or digital badge if available.

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.