A **trace table** is a technique used to test an algorithm and predict **step by step** how the computer will run the algorithm. It can be used to understand or predict what an algorithm is doing and to identify potential **logic errors** (when the program compiles but does not produce the expected output).

The animation below demonstrate the use of a trace table used to **track the values of variables** as they change while the program is running.

Using a trace table to test an algorithm is called **dry run testing**.

#### Your Task

Check the following algorithms and complete their trace tables. (Click on any cells of these tables to add content)

Algorithm #1Algorithm #2Algorithm #3Algorithm #4

#### Algorithm #1: While Loop

i = 0 j = 10 WHILE i < j i = i + 1 j = j - 1 END WHILE OUTPUT(i) OUTPUT(j)

#### Trace Table

Line Number | i | j | i < j | OUTPUT | |
---|---|---|---|---|---|

1 | 0 | ||||

2 | 10 | ||||

4 | True | ||||

5 | 1 | ||||

6 | 9 | ||||

4 | True | ||||

… |

#### Algorithm #2: Factorial

number = 5 factorial = number WHILE number>2 number = number - 1 factorial = factorial * number END WHILE OUTPUT(factorial)

#### Trace Table

Line Number | number | factorial | number > 2 | OUTPUT | |
---|---|---|---|---|---|

1 | 5 | ||||

2 | 5 | ||||

… |

#### Algorithm #3: Fizz-Buzz Sequence

FOR i FROM 1 TO 20 IF i MOD 3 == 0 AND i MOD 5 == 0 THEN OUTPUT "Fizz-Buzz" ELSE IF i MOD 3 == 0 THEN OUTPUT "Fizz" ELSE IF i MOD 5 == 0 THEN OUTPUT "Buzz" ELSE OUTPUT i END IF NEXT i OUTPUT("The End")

#### Trace Table

Line Number | i | i MOD 3 == 0 | i MOD 5 == 0 | OUTPUT | |
---|---|---|---|---|---|

1 | 1 | ||||

2 | False | False | |||

4 | False | ||||

6 | False | ||||

8 | |||||

9 | 1 | ||||

1 | 2 | ||||

… |

#### Algorithm #4: Max Function

FUNCTION max(a, b) IF a>b THEN RETURN a ELSE RETURN b END IF END FUNCTION number1 = 7 number2 = 12 number3 = max(number1, number2) OUTPUT(number3)

#### Trace Table

Line Number | number1 | number2 | number3 | a | b | a>b | RETURN | OUTPUT | |
---|---|---|---|---|---|---|---|---|---|

9 | 7 | ||||||||

10 | 12 | ||||||||

11 | 7 | 12 | |||||||

1 | 7 | 12 | |||||||

… |