0% found this document useful (0 votes)
11 views

Week1 Program+Dev+Process+Presentation

The document outlines the program development process, which consists of a problem-solving phase and implementation phase. The problem-solving phase involves 6 steps: 1) understanding the problem, 2) describing inputs/outputs, 3) working through examples by hand, 4) decomposing into steps, 5) generalizing steps into an algorithm, and 6) testing the algorithm. The implementation phase involves coding the algorithm, testing the code, and debugging if needed. An example of developing an algorithm to calculate x^y is provided to illustrate the problem-solving process.

Uploaded by

raley
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
11 views

Week1 Program+Dev+Process+Presentation

The document outlines the program development process, which consists of a problem-solving phase and implementation phase. The problem-solving phase involves 6 steps: 1) understanding the problem, 2) describing inputs/outputs, 3) working through examples by hand, 4) decomposing into steps, 5) generalizing steps into an algorithm, and 6) testing the algorithm. The implementation phase involves coding the algorithm, testing the code, and debugging if needed. An example of developing an algorithm to calculate x^y is provided to illustrate the problem-solving process.

Uploaded by

raley
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

HIGH-LEVEL PROGRAMMING I

Program Development Process by Prasanna Ghali


Outline
2

 Program development process


 Six steps of problem-solving phase
 Implementation phase
Program Development Process
3
Problem-solving phase

Steps 1-2: Steps 3-5: Step 6:


Problem
Analyze Problem Devise Algorithm Trace Algorithm
Incorrect algorithm

Incorrect implementation

Step 3: Step 2: Step 1:


Debug Incorrect Test Code
program
Correct program

Implementation phase
Working Program
Problem-Solving Phase
4

1. Understand problem clearly


2. Describe inputs and outputs
3. Work problem by hand for simple data set
4. Decompose solution into step-by-step details
5. Generalize steps into algorithm
6. Test algorithm with broader variety of data
Algorithm for 𝑥 𝑦 (1/8)
5

 Step 1: Understand problem clearly


 If 𝑥 = 2, 𝑦 = 3, then 23 = 8
4
 If 𝑥 = 3, 𝑦 = 4, then 3 = 81

 Step 2: Describe input and output clearly


 Inputs are integer values, output is integer value

𝒙
𝒙𝒚
𝒚
Algorithm for 𝑥 𝑦 (2/8)
6

 Step 3: Work the problem by hand for simple


data set
 Set𝑥 = 3, 𝑦 = 4
 Multiply 3 by 3
 You get 9
 Multiply 3 by 9
 You get 27
 Multiply 3 by 27
 You get 81
4
3 is 81
Algorithm for 𝑥 𝑦 (3/8)
7

 Step 4: Decompose solution into step-by-step


details
 Each step must be precise
 Nothing is left to guesswork
Algorithm for 𝑥 𝑦 (4/8)
8

 Step 5: Generalize steps into algorithm – you’ll


need to see underlying pattern to solve
problem
 Requires two activities:

 Replace particular values used in each step with


mathematical expressions of parameters
 Find repetition in terms of parameters
Algorithm for 𝑥 𝑦 (5/8)
9

 Replace particular values used in each step with


mathematical expressions of parameters
 Set𝑥 = 𝑛 = 3, 𝑦 = 4
 Multiply 𝑥 by 𝑛 = 3
 You get 𝑛 = 9
 Multiply 𝑥 by 𝑛 = 9
 You get 𝑛 = 27
 Multiply 𝑥 by 𝑛 = 27
 You get 𝑛 = 81
𝑦
𝑥 is 𝑛
Algorithm for 𝑥 𝑦 (6/8)
10

 Find repetition
 Set𝑛 = 𝑥 = 3, 𝑦 = 4
 𝑛 = 𝑚𝑢𝑙𝑡𝑖𝑝𝑙𝑦 𝑥 𝑏𝑦 𝑛

 𝑛 = 𝑚𝑢𝑙𝑡𝑖𝑝𝑙𝑦 𝑥 𝑏𝑦 𝑛

 𝑛 = 𝑚𝑢𝑙𝑡𝑖𝑝𝑙𝑦 𝑥 𝑏𝑦 𝑛
𝑦
 𝑛 = 𝑥 is 𝑟𝑒𝑠𝑢𝑙𝑡
Algorithm for 𝑥 𝑦 (7/8)
11

 Generalize steps into algorithm


 Set𝑛 = 𝑥, 𝑖 = 1
 while (𝑖 < 𝑦)
𝑛 = 𝑛 ∗ 𝑥
𝑖 = 𝑖 + 1

 endwhile

𝑛 is answer
Algorithm for 𝑥 𝑦 (8/8)
12

 Test algorithm with broader variety of data


Implementation Phase
13

 Code the algorithm


 Test code

 Debug code in case testing step generates


incorrect results
Coding the Algorithm
14

#include <stdio.h>

int main(void) {
int x, y, i, n;
printf("Enter two integers: ");
scanf("%d %d", &x, &y);

n = x;
i = 1;
while(i < y) {
n = n * x;
i += 1;
}
printf("%d raised to power of %d is: %d\n", x, y, n);
return 0;
}
Coding the Algorithm – Even better
15
#include <stdio.h>

int exponent(int x, int y);

int main(void) {
printf("Enter base and power: ");
int base, power;
scanf("%d %d", &base, &power);
int result = exponent(base, power);
printf("%d ^ %d is: %d\n", base, power, result);
return 0;
}

int exponent(int x, int y) {


int n = x, i = 1;
while (i < y) {
n = n * x;
i = i + 1;
}
return n;
}
Testing the Code
16

 Whitebox vs. Blackbox testing


 Unit test requires calling function or program

and verifying that results are correct


 If testing step generates incorrect results,

debug code
 Note: There are 2 major bugs in previous

program!!!

You might also like