Transcript Dry Run

Dry Run
• You can test your program without using a
computer by dry running it on paper
• You act as the computer – following the
instructions of the program, recording the
valves of the variables at each stage
• You can do this with a table
Dry Run
• The table with have column headed with the
names of the variables in the program
• Each row in the table will be labelled with a line
number form the program.
• The entries of each row in th e table will be values
of the variables after the execution of the
statement on that line
• You don’t need a row for every line in the
program, just those lines where some significant
change to the state of the program occurs e.g a
variable gets a new value
Dry Run
• In this table you can record all relevant
changes to the variables as the program
progresses, thereby test the logic of the
program / algorithm
• Do a dry run before you code your program
on computer this way any logic errors will
come to light during the dry run
Example of a Dry run
•
•
•
•
•
•
•
•
•
•
L1 Declare two variables , first num second num
L2 Initialise both variables to 0
L3 first num = 0 second num = 0
L4 Ask user to enter first number
L5 Assign user input to first num variable
L6 Ask user to enter second number
L7 Assign user input to second num variable
L8 Add first num to second num
L9 Print result
Do a Dry run for this program assuming the user
enters 17 for first number and 24 for the second
A sample Dry Run table
After
First num Second
num
execution
Line 2
0
0
Line 5
17
0
Line 7
17
24
Line 8
17
24
Result
41
Relational Operators
•
•
•
•
•
•
•
•
Give examples
< less than
> greater than
<= Less than or equal to a<=b
>= greater than or equal c>=d
== equals
!= not equals 5!=6
Boolean expression – TRUE or FALSE
If then Else statements
• If <TEST>
•
<STATEMENT 1 >
• Else
•
<STATEMENT 2 >
• <TEST> is a boolean expression
• Is <TEST? Has a false valve then <STATEMENT 2 > is
executed
• Is <TEST? Has a false valve then <STATEMENT 1 > is
executed
• Note the indentation – this makes it easier to read
• To make your
algorithm easier to
read nest the
statements
If (mark > 69)
grade = “A”
Else If (mark > 59)
grade = “B”
Else If (mark > 49)
grade = “C”
Else If (mark > 39)
grade = “D”
Else
grade = ‘F’
Nesting Layout
If (mark > 69)
grade = “A”
Else
If (mark > 59)
grade = “B”
Else
If (mark > 49)
grade = “C”
Else
If (mark > 39)
grade = “D”
Else
grade = ‘F’
In this alternative the psuedo
code crawls across
Nesting of if-else and while loops
Int number
Number =3
For loop : 1 to 3
if number = 1
print ‘red’
else
if number = 2
print ‘green’
else
if number = 3
print ‘yellow’
endif
Loop end
More Complex Loop Tests
• Sometimes we may want to allow the user to terminate the
program/loop
• We can do this by prompting the user with a question e.g
imagine a user is entering a series of numbers which will
be added to together, like student marks. We can ask the
user the question (Do you want to add another student
mark? )
• We assign the user response to a variable named e.g.
continue
Declare variable continue
Initialise the variable Continue = ‘X’
Ask the user (Do you want to add another student mark? )
Assign/store the user response to variable continue
Continue := user response
While (continue = ‘Y’)
Loop Body…
More Complex Loop Tests
• Sometimes you may want to include more
than one condition in your loop tests
• In such cases you can use boolean
connectives (&& and ||)
• E.g.
• while (continue = ‘y’) && (item number < 10)
•
Where item number = number of items to be added
Problem solving
• Understanding the problem
• The plan – decide how to tackle problem algorithms
• Test and Evaluate – dry run and test plans
Test Plans
• Do before you code!
• Do a test plan for every branch test e.g. if
the else and loop statements
• Extreme values such as 0 or negative
numbers are tested in addition to ‘normal’
values. Testing the bounds is most efficient
way for testing for run time errors
• The following psuedo code / algorithm prints the larger of
two numbers
• Do a test plan to find it – a series of valves to be input in
variables first and second .Run the program several times
Int first
Int second
Int max
Sring str
Prompt user to enter an integer (please enter a number)
Store the number into variable first
Prompt user to enter a second integer (please enter a second number)
Store the second number into variable second
Max = first
if (second > max)
max = second
Print message to screen saying (larger of the two numbers is max)
Test plan example
Test
number
First
Second
1
2
3
4
5
18
10
17
0
A
12
15
17
0
20
6
-10
-17
Expected
Result max
18
15
17
0
Error because
not integer
-10