Data and processes in computing
Data and processes in computing

This free course is available to start right now. Review the full course description and key learning outcomes and create an account and enrol if you want a free statement of participation.

Free course

Data and processes in computing

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.



  • (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.



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.



  • (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.


Take your learning further

Making the decision to study can be a big step, which is why you'll want a trusted University. The Open University has 50 years’ experience delivering flexible learning and 170,000 students are studying with us right now. Take a look at all Open University courses.

If you are new to university level study, find out more about the types of qualifications we offer, including our entry level Access courses and Certificates.

Not ready for University study then browse over 900 free courses on OpenLearn and sign up to our newsletter to hear about new free courses as they are released.

Every year, thousands of students decide to study with The Open University. With over 120 qualifications, we’ve got the right course for you.

Request an Open University prospectus