A-level Computing/AQA/Problem Solving, Programming, Data Representation and Practical Exercise/Problem Solving/Trace tables

Hand tracing or 'dry running' allows you to use a trace table to
 * see what code will do before you have to run it
 * find where errors in your code are

Taking a program like the one below we need to keep track (trace) all the variables and outputs. To do this we create a trace table:

The exam will normally ask you to create a trace table of some sort so you need to be very confident with them. The exam will usually give you the headings but just in case, there are several steps in making a trace table, the first one is to note the table headings, this involves the following:


 * 1) VARIABLES: note all the variables in the piece of code you are looking at (this includes arrays). Note each variable as a heading
 * 2) OUTPUTS: note if there is an output and put this as a heading
 * 3) INPUTS: if there are inputs specified,  put an inputs column and be prepared to fill it in.

It is very easy to jump right in when filling in trace tables, but you must be careful. The exam will try and trick you, so trying to predict what a trace table will do is not a good idea. In fact, the best idea is to switch your brain off and tackle the problem line by line, exactly as a computer would. Take a look at the following example:

So we should construct the following table: Now looking at the names of the variables you might be tempted to add all the values in the array together to find the sum, and then find the average number from this calculation $$35/7 = 5$$. However, you'd be wrong, create a trace table and see if you can find the correct answer:
 * 1) note all the variables: num array / sum / avg / x
 * 2) note if there is an output: yes
 * 3) if there are inputs specified: no

So what went wrong? If you look at the trace table you can see that we never added the number 2 from the num array to the sum, it stopped at element 5. To fix this we would adjust the following line:

Complete the trace table for the following code, where the number input is 39

As always with programming there is a shorter way of performing this task, take a look at: Do you think you can work out how to output an hex, base 16 number? I bet you can.

What does the above code do?

It converts a base10 (denary/decimal) number into its binary equivalent

Complete the trace table for the following code:

What function does the above code perform?

It finds the highest value in an array of values