1 cse1301 computer programming: lecture 15 flowcharts, testing and debugging
Post on 21-Dec-2015
221 views
TRANSCRIPT
![Page 1: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/1.jpg)
1
CSE1301 Computer Programming:
Lecture 15Flowcharts, Testing and
Debugging
![Page 2: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/2.jpg)
2
Topics
• The Software Development Cycle
• Flowcharts– Selection– Sequence
– Iteration
• How to diagnose errors in your program?– Methods for debugging – Methods for testing
![Page 3: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/3.jpg)
3
Components of the Software Development Process
Define the problem clearlyAnalyze the problem
Design an algorithmtop-down design
Document the system
Code (Implement) the algorithmTest the code
![Page 4: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/4.jpg)
4
Development Cycle
Analysis Design Implement Test
debugging and testing
![Page 5: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/5.jpg)
5
Debugging and Testing
• Debugging: the process of finding and correcting errors (a.k.a “bugs”)
• Testing: executing the program on a test data set
![Page 6: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/6.jpg)
6
Types of Errors• syntactic: how instructions are written
• semantic: what they represent
while (i=0; i < 5; i++){ printf(“%d\n”, i);}
Example 1:
for (i=0; i < 5; i++);{ printf(“%d\n”, i);}
Example 2:
if (choice = ‘Q’) { break;}
Example 3:
![Page 7: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/7.jpg)
7
Debugging Basics
• Know the (C) language well
printf(“%d\n”, &num);
Examples:
scanf(“%s”, &name);
if (i < N);{ scanf(“%d\n”, &i);}
float x, y, z = 3.5;
scanf(“%f”, x);
![Page 8: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/8.jpg)
8
• Pay attention to compiler error and warning messages
Examples:
if (ch = ‘Q’){ break;}
Debugging Basics (cont)
“Possible incorrect assignment”
int N;
… scanf(“%d”, N);
“Possible use of ‘N’ before declaration”
![Page 9: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/9.jpg)
9
Tracing
• Trace execution of a program:– location in the program– status/contents of variables
• Tools:– programming environment
• E.g., “step”, “breakpoints”, “watch”– debugging statements
• E.g., output values of variables, markers at specific locations, etc
![Page 10: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/10.jpg)
10
Example: Debugging Statements
...for (i=0; i<N; i++){scanf(“%s”, name);
}
![Page 11: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/11.jpg)
11
Example: Debugging Statements (cont)
TIP: make debugging statements conditional on a boolean variable
const int debugging = 1;...for (i=0; i<N; i++){scanf(“%s”, name);
if (debugging) {
printf("for: i=%d, name=%s\n", i, name);}
}
![Page 12: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/12.jpg)
12
Example: Debugging Statements (alternative)
#define DEBUG 1int main()...for (i=0; i<N; i++){scanf(“%s”, name);
#if DEBUG printf("for: i=%d, name=%s\n", i, name); #endif
}
![Page 13: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/13.jpg)
13
Testing Techniques
• Test data set should “fully” test the program:– All types of input– All logical paths of the program (i.e., every line
of code should be executed at least once)
• Use the design represented by the flowchart
TIP: build your programs incrementally, testing small components as you go along
![Page 14: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/14.jpg)
14
Example – test data for all types of input: BestMark
Problem:
• Write a program which reads a list of marks, and prints out the best mark
• Example:– Input: 18 56 65 96 24 30– Output: Best mark is 96
![Page 15: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/15.jpg)
15
Example: BestMark (cont)
set bestMark to 0loop{ input mark if (end of input) then exit loop
}output “Best mark is “, bestMark
Algorithm
![Page 16: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/16.jpg)
16
Example: BestMark (cont)
set bestMark to 0loop{ input mark if (end of input) then exit loop
if (mark > bestMark) then { set bestMark to mark }}output “Best mark is “, bestMark
Algorithm
![Page 17: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/17.jpg)
17
Example: BestMark (cont)
set bestMark to 0loop{ input mark if (end of input) then exit loop
if (mark > bestMark) then { set bestMark to mark }}output “Best mark is “, bestMark
Algorithm
How do I validatethe input?
![Page 18: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/18.jpg)
18
Classes of Test Data
• Valid data
• Valid boundary data
• Special or unusual cases
• Invalid data
![Page 19: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/19.jpg)
19
Test Data: Valid Data
• Reasonable data for the problem
• Example: BestMark
– What is the test out of?
– If mark is out of 100, valid test data is
75, 65, 55
![Page 20: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/20.jpg)
20
Test Data: Valid Boundary Data
• Data with extreme values– Example: BestMark
• minimum of 0• maximum of 100
• Test selection conditions
• Test iteration exit conditions
• Test first and last elements of an array
![Page 21: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/21.jpg)
21
Test Data: Special Cases
• Example: BestMark– What if someone is absent or the mark is
withheld (special consideration)?
input markEnteredif (markEntered is “Abs” or “WH”) { output “No mark for this student”
set mark to 0 } else { set mark to numerical value of markEntered
}
![Page 22: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/22.jpg)
22
Test Data: Invalid Data
• Invalid data is– of an incorrect type, or– outside the expected range
• Use features of the programming language to ensure correct data type– Example: BestMark
• mark can be restricted to an integer int mark;
scanf(“%d”, &mark);
![Page 23: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/23.jpg)
23
Test Data: Invalid Data (cont)
...if ((mark < 0) or (mark > 100)){ output “Mark has to be between 0 and 100”}
input markEntered...set mark to numerical value of markEntered
if (cannot get number from markEntered){ output “Invalid input”}
![Page 24: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/24.jpg)
24
set bestMark to 0loop{ input markEntered if (end of input) break loop if ( markEntered is “Abs” or “WH” ) { output “No mark for this student” } else { set mark to numerical value of markEntered if (cannot get number from markEntered)
{ output “Invalid input” } else if ((mark < 0) or (mark > 100))
{ output “Mark has to be between 0 and 100” } else /* valid input! */
{ if (mark > bestMark) set bestMark to mark
}}
}output “Best mark is “, bestMark
Algorithm: BestMark
best1
![Page 25: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/25.jpg)
25
Flowcharts
• Represent flow of control of algorithms:– sequences– selection– iteration
• Useful for:– Finding semantic errors– Determining test data set
![Page 26: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/26.jpg)
27
Flowchart: Sequence
Step A: input number
Step B: add 1 to number
Step C: output number
Instructionin rectangular box
Order of executionindicated by arrows
• Represented by concatenating instructions (usually vertically)
![Page 27: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/27.jpg)
28
Step A: input number
Step B:
if number is negative,
then add -1 to number
else add 1 to number
Step C: output number
Example 2:
an algorithminvolving
“selection”
Step A: input number
Step C: output number
Sequence (cont)
![Page 28: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/28.jpg)
29
Flowchart: Selection
Step A
if ( condition C1 )
{
<sequence S1>
}
else
{
<sequence S2>
}
Step C
Step A
C1 true?
S2
Step C
S1
YES NO
Arrow labeled with result of condition test
Condition test
in diamond
![Page 29: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/29.jpg)
30
Flowchart: Iteration (while loop)
while ( condition C1 )
{
<sequence S1>
}
C1 true?
S1
YES
NO
![Page 30: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/30.jpg)
31
Flowchart: Iteration (for loop)
for ( init ; condition C1 ; increment )
{
<sequence S1>
} C1 true?
S1
YES
NO
init
increment
![Page 31: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/31.jpg)
32
How to choose which iteration?
• Do you know exactly how many times the loop will execute?
– If yes, then use FOR
• Is it possible the sequence may never be executed?
– If yes, then use WHILE
![Page 32: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/32.jpg)
33
input number
if number is negative,
then add -1 to number
else add 1 to number
output number
input number
is numbernegative?
add -1 to number
YES NO
add 1 to number
output number
Example: Algorithm to Flowchart
![Page 33: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/33.jpg)
34
Example: Code to Flowchart (Spot the error!)
for ( i=0; i<10; i++ ) { scanf(“%d\n”, &x); if ( x < 0 ) { break; }}
is i < 10 ?
input value for x
YES
NO
set i to 0
increment i
is x < 0 ?NO YES
![Page 34: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/34.jpg)
35
Example: Code to Flowchart (correct version)
for ( i=0; i<10; i++ ) { scanf(“%d\n”, &x); if ( x < 0 ) { break; }}
is i < 10 ?
input value for x
YES
NO
set i to 0
increment i
is x < 0 ?
NO
YES
![Page 35: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/35.jpg)
36
Algorithm to FlowchartExample: AddNumbers
input totalNumbers
set sum to 0
set count to 0
while (count < totalNumbers)
{
input nextNum
add nextNum to sum
add 1 to count
}
output “Sum was” sum
output “Mean was” sum/count
input value for totalNumbers
set sum to 0
set count to 0
![Page 36: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/36.jpg)
37
is count< totalNumbers?
Algorithm to FlowchartExample: AddNumbers (cont)
input totalNumbers
set sum to 0
set count to 0
while (count < totalNumbers)
{
input nextNum
add nextNum to sum
add 1 to count
}
output “Sum was” sum
output “Mean was” sum/count
input value for nextNum
YES
NO
increment count
add nextNum to sum
![Page 37: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/37.jpg)
38
Algorithm to FlowchartExample: AddNumbers (cont)
input totalNumbers
set sum to 0
set count to 0
while (count < totalNumbers)
{
input nextNum
add nextNum to sum
add 1 to count
}
output “Sum was” sum
output “Mean was” sum/count
output value for sum
output value for sum/count
![Page 38: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/38.jpg)
39
Algorithm to FlowchartExercise: AddNumbers (cont)
input totalNumbersset sum to 0set count to 0while (count < totalNumbers){
input nextNumadd nextNum to sumadd 1 to count
}output “Sum was” sumoutput “Mean was” sum/count
What if totalNumbers
is zero?
![Page 39: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/39.jpg)
40
• Modify the flowchart to add an extra check so that the mean is output only when count is positive
Algorithm to FlowchartExercise: AddNumbers (cont)
![Page 40: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/40.jpg)
41
Use of Flowcharts
• Pseudo-code flowchart
• Flowchart code
![Page 41: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/41.jpg)
42
Example – test data for all logical pathsint x,y; scanf("%d %d", &x, &y);if (x > 2) { while (x > y) { printf("S1,"); x--; } printf("S2,"); } else if (x < y){ printf("S3,"); }printf("S4");
YES NOx>2?
Input x,y
NO
output S2
x<y?
output S4
YES
output S3
NO
YES
x>y?
output S1
decrement x
![Page 42: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/42.jpg)
43
Example (cont)
int x,y; scanf("%d %d", &x, &y);if (x > 2) { while (x > y) { printf("S1,"); x--; } printf("S2,"); } else if (x < y){ printf("S3,"); }printf("S4");
YES NOx>2?
Input x,y
![Page 43: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/43.jpg)
44
int x,y; scanf("%d %d", &x, &y);if (x > 2) { while (x > y) { printf("S1,"); x--; } printf("S2,"); else if (x < y){ printf("S3,"); }printf("S4");
YES NOx>2?
Input x,y
YES
x>y?
output S1
decrement x
Example (cont)
![Page 44: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/44.jpg)
45
int x,y; scanf("%d %d", &x, &y);if (x > 2) { while (x > y) { printf("S1,"); x--; } printf("S2,"); } else if (x < y){ printf("S3,"); }printf("S4");
YES NOx>2?
Input x,y
x<y?
output S4
YES
output S3
NO
YES
x>y?
output S1
decrement x
Example (cont)
![Page 45: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/45.jpg)
46
int x,y; scanf("%d %d", &x, &y);if (x > 2) { while (x > y) { printf("S1,"); x--; } printf("S2,"); } else if (x < y){ printf("S3,"); }printf("S4");
YES NOx>2?
Input x,y
NO
output S2
x<y?
output S4
YES
output S3
NO
YES
x>y?
output S1
decrement x
Example (cont)
![Page 46: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/46.jpg)
47
Example (cont): Valid input data
• Which lines of code indicate what is valid data?
int x,y;
scanf("%d %d\n", &x, &y);
• Valid data is any integer:–positive, –negative, or–zero
![Page 47: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/47.jpg)
48
Example (cont): Test data for all logical paths
• What is done for every input?
int x,y; scanf("%d %d", &x, &y);if (x > 2) { while (x > y) { printf("S1,"); x--; } printf("S2,"); } else if (x < y){ printf("S3,"); }printf("S4");
• What does this say about the output?– S4 must be output at
the end every time
![Page 48: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/48.jpg)
49
int x,y; scanf("%d %d", &x, &y); if (x > 2) { while (x > y) { printf("S1,"); x--; } printf("S2,"); } else if (x < y){ printf("S3,"); }printf("S4");
Example (cont): Test data for all logical paths
YES
YES NOx>2?
Input x,y
NO
output S2
x<y?
output S4
output S3
NO
YES
x>y?
output S1
decrement x
TO DO: Test all paths from “Input” to “Output S4”
![Page 49: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/49.jpg)
50
Example (cont): Choice Points
YES NOx>2?
Input x,y
NO
output S2
x<y?
output S4
YESoutput S3
NO
YES
x>y?
output S1
decrement x
Paths are determined by choice points
![Page 50: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/50.jpg)
52
Example (cont): Choice Points
YES
YES NOx>2?
Input x,y
NO
output S2
x<y?
output S4
output S3
NO
YES
x>y?
output S1
decrement x
int x,y; scanf("%d %d", &x, &y); if (x > 2){ while (x > y) { printf("S1,"); x--; } printf("S2,"); } else if (x < y){ printf("S3,"); }printf("S4");
![Page 51: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/51.jpg)
53
Example (cont): Choice Points
Test data Case 1: NOT (x>2), NOT (x<y)
Output: S4
Specific Values: x==2, y == 2
YES NOx>2?
Input x,y
NO
output S2
x<y?
output S4
YESoutput S3
NO
YES
x>y?
output S1
decrement x
![Page 52: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/52.jpg)
54
Example (cont): Choice Points
Test data Case 2: NOT (x>2), x<y
Output: S3, S4
Specific Values: x==2, y == 3
YES NOx>2?
Input x,y
NO
output S2
x<y?
output S4
YESoutput S3
NO
YES
x>y?
output S1
decrement x
![Page 53: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/53.jpg)
55
Example (cont): Choice Points
int x,y; scanf("%d %d", &x, &y); if (x > 2) { while (x > y) { printf("S1,"); x--; } printf("S2,"); } else if (x < y){ printf("S3,"); }printf("S4");
YES NOx>2?
Input x,y
NO
output S2
x<y?
output S4
YESoutput S3
NO
YES
x>y?
output S1
decrement x
![Page 54: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/54.jpg)
56
Example (cont): Choice Points
Test data Case 3(Loop body not executed):
x > 2, NOT(x > y)
Output: S2, S4
Specific Values: x==3, y == 4
YES NOx>2?
Input x,y
NO
output S2
x<y?
output S4
YESoutput S3
NO
YES
x>y?
output S1
decrement x
![Page 55: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/55.jpg)
57
Example (cont): Choice Points
Test data Case 4(Loop body executed):
x > 2, x > y
Output: S1, S2, S4
Specific Values: x==5, y == 4
YES NOx>2?
Input x,y
NO
output S2
x<y?
output S4
YESoutput S3
NO
YES
x>y?
output S1
decrement x
![Page 56: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/56.jpg)
58
Notes on Loop Tests • Is it possible that a loop never terminates?
– only if the algorithm is incorrect
• Example:
while (x > y) { printf("S1,"); x++; }
while (x > y) { printf("S1,"); x--; }
![Page 57: 1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging](https://reader035.vdocument.in/reader035/viewer/2022062407/56649d6b5503460f94a4b104/html5/thumbnails/57.jpg)
60
Summary
• Testing is an important part of the software development process
• Considering all the test data cases can lead to a change in the algorithm
• Flowcharts can be used to design the test data set