1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging.

Slides:



Advertisements
Similar presentations
Making Choices in C if/else statement logical operators break and continue statements switch statement the conditional operator.
Advertisements

FIT FIT1002 Computer Programming Unit 19 Testing and Debugging.
1 CSE1301 Computer Programming: Lecture 15 Flowcharts and Debugging.
1 CSE1301 Computer Programming Lecture 10: Iteration (Part 1)
Introduction to Computing Dr. Nadeem A Khan. Lecture 4.
Chapter 6 - Repetition. Introduction u Many applications require certain operations to be carried out more than once. Such situations require repetition.
1 CSE1301 Computer Programming Lecture 10: Iteration (Part 1)
Control Structures Control structures control the flow of program execution. 3 types of control structures: sequence, selection.
Lecturer: Omid Jafarinezhad Sharif University of Technology Department of Computer Engineering 1 Fundamental of Programming (C) Lecture 5 Structured Program.
CIS Computer Programming Logic
Algorithms and Computing Lecture 3 Control Statements By Dr. M. Tahir Khaleeq.
Chapter 5: Control Structures II (Repetition)
Repetitive Structures BBS514 Structured Programming (Yapısal Programlama)1.
Testing. 2 Overview Testing and debugging are important activities in software development. Techniques and tools are introduced. Material borrowed here.
Practice and Evaluation. Practice Develop a java class called: SumCalculator.java which computes a sum of all integer from 1 to 100 and displays the result.
Problem Solving Techniques. Compiler n Is a computer program whose purpose is to take a description of a desired program coded in a programming language.
C++ Programming Language Lecture 2 Problem Analysis and Solution Representation By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
Chapter 5 Repetition and Loop Statements J. H. Wang ( 王正豪 ), Ph. D. Assistant Professor Dept. Computer Science and Information Engineering National Taipei.
C Lecture Notes 1 Structured Program Development.
Chapter 5: Control Structures II (Repetition). Objectives In this chapter, you will: – Learn about repetition (looping) control structures – Learn how.
CS101 Computer Programming I Chapter 4 Extra Examples.
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Lucas Bang Lecture 5: Introduction to C: More Control Flow.
CMSC 104, Lecture 171 More Loops Topics l Counter-Controlled (Definite) Repetition l Event-Controlled (Indefinite) Repetition l for Loops l do-while Loops.
Chapter 3 - Structured Program Development Outline 3.1Introduction 3.2Algorithms 3.3Pseudocode 3.4Control Structures 3.5The If Selection Structure 3.6The.
Repetition. Control of Flow SEQUENCE SELECTION (if..else, switch…case) REPETITION.
Loops (cont.). Loop Statements  while statement  do statement  for statement while ( condition ) statement; do { statement list; } while ( condition.
PROGRAM DEVELOPMENT CYCLE. Problem Statement: Problem Statement help diagnose the situation so that your focus is on the problem, helpful tools at this.
1 Program Planning and Design Important stages before actual program is written.
CMSC 104, Version 9/011 More Loops Topics Counter-Controlled (Definite) Repetition Event-Controlled (Indefinite) Repetition for Loops do-while Loops Choosing.
The Hashemite University Computer Engineering Department
Chapter 6 - Repetition. while Loop u Simplest loop u Two parts: test expression and loop body u Pre-tested loop –Execute loop body if test true –Bypass.
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Tevfik Bultan Lecture 4: Introduction to C: Control Flow.
CISC105 – General Computer Science Class 4 – 06/14/2006.
CS1010: Programming Methodology
Lecture 7 – Repetition (Loop) FTMK, UTeM – Sem /2014.
IT CS 200: R EPEATATION Lect. Napat Amphaiphan. T HE ABILITY TO DO THE SAME TASK AGAIN BY AGAIN UNTIL THE CONDITION IS MET LOOP 2.
CS Class 04 Topics  Selection statement – IF  Expressions  More practice writing simple C++ programs Announcements  Read pages for next.
1 CSE1301 Computer Programming: Lecture 16 Flow Diagrams and Debugging.
Sesi 0607EKT120/4 Computer Programming Week 5 – Repetition / Loops.
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Tevfik Bultan Lecture 6: Stepwise refinement revisited, Midterm review.
ECE Application Programming
Chapter 4 – C Program Control
Software Testing.
EKT120 COMPUTER PROGRAMMING
EKT150 INTRODUCTION TO COMPUTER PROGRAMMING
Lecture 7: Repeating a Known Number of Times
Lecture 4 - Loops UniMAP EKT120 Sem 1 08/09.
Week 4 – Repetition Structures / Loops
Lecture 2 Introduction to Programming
Numbering System TODAY AND TOMORROW 11th Edition
2008/10/22: Lecture 12 CMSC 104, Section 0101 John Y. Park
CSI 121 Structure Programming Language Lecture 10: Iteration (Part 1)
Arrays, For loop While loop Do while loop
Outline Altering flow of control Boolean expressions
Software Testing (Lecture 11-a)
CS1100 Computational Engineering
2008/10/22: Lecture 12 CMSC 104, Section 0101 John Y. Park
Structured Program
Chapter 4 - Program Control
1) C program development 2) Selection structure
Chapter 2- Visual Basic Schneider
Assist.Prof.Dr. Nükhet ÖZBEK Ege University
Based on slides created by Bjarne Stroustrup & Tony Gaddis
Based on slides created by Bjarne Stroustrup & Tony Gaddis
More Loops Topics Counter-Controlled (Definite) Repetition
More Loops Topics Relational Operators Logical Operators for Loops.
More Loops Topics Counter-Controlled (Definite) Repetition
More Loops Topics Counter-Controlled (Definite) Repetition
ICS103: Programming in C 5: Repetition and Loop Statements
CHAPTER 6 Testing and Debugging.
Presentation transcript:

1 CSE1301 Computer Programming: Lecture 15 Flowcharts, Testing and Debugging

2 Topics The Software Development Cycle Flowcharts –Selection –Sequence –Iteration How to diagnose errors in your program? –Methods for debugging –Methods for testing

3 Components of the Software Development Process  Define the problem clearly  Analyze the problem  Design an algorithm  top-down design  Document the system  Code (Implement) the algorithm  Test the code

4 Development Cycle AnalysisDesignImplementTest debugging and testing

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

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:

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);

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”

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

10 Example: Debugging Statements... for (i=0; i<N; i++) { scanf(“%s”, name); }

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); }

12 Example: Debugging Statements (alternative) #define DEBUG 1 int main()... for (i=0; i<N; i++) { scanf(“%s”, name); #if DEBUG printf("for: i=%d, name=%s\n", i, name); #endif }

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

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: –Output: Best mark is 96

15 Example: BestMark (cont) set bestMark to 0 loop { input mark if (end of input) then exit loop } output “Best mark is “, bestMark Algorithm

16 Example: BestMark (cont) set bestMark to 0 loop { input mark if (end of input) then exit loop if (mark > bestMark) then { set bestMark to mark } output “Best mark is “, bestMark Algorithm

17 Example: BestMark (cont) set bestMark to 0 loop { 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 validate the input?

18 Classes of Test Data Valid data Valid boundary data Special or unusual cases Invalid data

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

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

21 Test Data: Special Cases Example: BestMark –What if someone is absent or the mark is withheld (special consideration)? input markEntered if (markEntered is “Abs” or “WH”) { output “No mark for this student” set mark to 0 } else { set mark to numerical value of markEntered }

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);

23 Test Data: Invalid Data (cont)... if ((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” }

24 set bestMark to 0 loop { 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 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

25 Flowcharts Represent flow of control of algorithms: –sequences –selection –iteration Useful for: –Finding semantic errors –Determining test data set

26 Sequence (revision) Series of instructions to be carried out in a fixed sequential order Example 1: Step A: input number Step B: add 1 to number Step C: output number

27 Flowchart: Sequence Step A: input number Step B: add 1 to number Step C: output number Instruction in rectangular box Order of execution indicated by arrows Represented by concatenating instructions (usually vertically)

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 algorithm involving “selection” Step A: input number Step C: output number Sequence (cont)

29 Flowchart: Selection Step A if ( condition C1 ) { } else { } Step C Step A C1 true? S2 Step C S1 YES NO Arrow labeled with result of condition test Condition test in diamond

30 Flowchart: Iteration (while loop) while ( condition C1 ) { } C1 true? S1 YES NO

31 Flowchart: Iteration (for loop) for ( init ; condition C1 ; increment ) { } C1 true? S1 YES NO init increment

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

33 input number if number is negative, then add -1 to number else add 1 to number output number input number is number negative? add -1 to number YES NO add 1 to number output number Example: Algorithm to Flowchart

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 ? NOYES

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

36 Algorithm to Flowchart Example: 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

37 is count< totalNumbers? Algorithm to Flowchart Example: 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

38 Algorithm to Flowchart Example: 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

39 Algorithm to Flowchart Exercise: 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 What if totalNumbers is zero?

40 Modify the flowchart to add an extra check so that the mean is output only when count is positive Algorithm to Flowchart Exercise: AddNumbers (cont)

41 Use of Flowcharts Pseudo-code  flowchart Flowchart  code

42 Example – test data for all logical paths 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 NO x>2? Input x,y NO output S2 x<y? output S4 YES output S3 NO YES x>y? output S1 decrement x

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"); YESNO x>2? Input x,y

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 NO x>2? Input x,y YES x>y? output S1 decrement x Example (cont)

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 NO x>2? Input x,y x<y? output S4 YES output S3 NO YES x>y? output S1 decrement x Example (cont)

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 NO x>2? Input x,y NO output S2 x<y? output S4 YES output S3 NO YES x>y? output S1 decrement x Example (cont)

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

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

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 NO x>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”

50 Example (cont): Choice Points YES NO x>2? Input x,y NO output S2 x<y? output S4 YES output S3 NO YES x>y? output S1 decrement x Paths are determined by choice points

51 Example (cont): Choice Points What are the highest level 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");

52 Example (cont): Choice Points YES NO x>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");

53 Example (cont): Choice Points Test data Case 1: NOT (x>2), NOT (x<y) Output: S4 Specific Values: x==2, y == 2 YES NO x>2? Input x,y NO output S2 x<y? output S4 YES output S3 NO YES x>y? output S1 decrement x

54 Example (cont): Choice Points Test data Case 2: NOT (x>2), x<y Output: S3, S4 Specific Values: x==2, y == 3 YES NO x>2? Input x,y NO output S2 x<y? output S4 YES output S3 NO YES x>y? output S1 decrement x

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 NO x>2? Input x,y NO output S2 x<y? output S4 YES output S3 NO YES x>y? output S1 decrement x

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 NO x>2? Input x,y NO output S2 x<y? output S4 YES output S3 NO YES x>y? output S1 decrement x

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 NO x>2? Input x,y NO output S2 x<y? output S4 YES output S3 NO YES x>y? output S1 decrement x

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--; }

59 Exercise: Changing the Algorithm /* Step 1 */ while (x > 0) { /* Step 2 */ if (y == 2) { /* Step 2a */ } else { /* Step 2b */ } /* Step 3 */ } /* Step 4 */ How would you ensure that the loop always terminates? Provide a set of test data: –valid –valid boundary –invalid

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