Post on 14-Dec-2015
transcript
The Plan for Today
Program design process Algorithms, decomposition, and step-wise
refinement Example
Program design example
Learning Objectives
List and describe the steps in designing a computational solution (computer program) to a problem
Articulate what is meant by an algorithm
Apply the steps to a particular problem
Program Design Process
Define the problem
List the inputs and outputs
Design the solution algorithm
Check the algorithm by hand
Write the program code
Test the program code
Program Design Process – step 1
Define the problem
List the inputs and outputs
Design the solution algorithm
Check the algorithm by hand
Write the program code
Test the program code
State the problem in aclear and concise manner
ExampleWrite a program to find the
distance between two points
P1 P2or
P1 P2 P1
P2or
Better
Write a program to find the straight line distance between two points
Is the problem statement okay?
Program Design Process – step 2
Define the problem
List the inputs and outputs
Design the solution algorithm
Check the algorithm by hand
Write the program code
Test the program code
Write a program to find the straight line distance between two points
Inputs• •
Outputs• •
Program Design Process – step 3
Define the problem
List the inputs and outputs
Design the solution algorithm
Check the algorithm by hand
Write the program code
Test the program code
Decompose Refine
Write a program to find the straight line distance between two points
Definition of an Algorithm
An algorithm is a well-ordered collection of unambiguous and effectively computable operations, that when executed, produces a result and halts in a finite amount of time. Well-ordered means the steps are in a clear order Unambiguous means the operations described are understood
by a computing agent without further simplification A computing agent is the thing that is supposed to carry out the
algorithm Effectively computable means the computing agent can actually
carry out the operation
This definition comes from, An Invitation to Computer Science (Gersting/Schneider) viahttp://www.cs.xu.edu/csci170/08f/sect01/Overheads/WhatIsAnAlgorithm.html (visited 19JUN2009)
Program Design Process – step 3,cont.
Define the problem
List the inputs and outputs
Design the solution algorithm
Check the algorithm by hand
Write the program code
Test the program code
Two approaches are often used to help think through the steps to be carried out by the program code:
1. Pseudocode
2. Flow Charts
We’ll use the pseudocode method first.
Pseudocode
Pseudocode (also called Program Design Language,
PDL) is English-like statements that precisely describe specific operations1: Action statements Focuses on the logic of the program Avoids language-specific elements Written at a level so that code can be
generated almost automatically. Will likely need to refine in more and more detail
1This definition comes from, McConnel, S. (1993). Code Complete, Microsoft Press, Redmond, WA, p. 54.
Pseudocode – First Pass
1. Prompt user to enter points
2. Get points from user
3. Calculate the straight line distance
4. Display distance to the monitor
Write a program to find the straight line distance between two points
Comments
1.High level – just the major steps
2.Focus on the logic
Pseudocode - Refinement
1. Start
2. Declare variables: X1, Y1, X2, Y2, D
3. Prompt user to enter X1 and Y1
4. Display X1 and Y1 to the monitor
5. Prompt user to enter X2 and Y2
6. Display X2 and Y2 to the monitor
7. Calculate the straight line distance, D
8. Display D to the monitor
9. Stop
Write a program to find the straight line distance between two points
Comments
1.Refine high level ideas down to computable actionsWhat could still be refined?
Calculating the Distance, D
Define the problem
List the inputs and outputs
Design the solution algorithm
Check the algorithm by hand
Write the program code
Test the program code
Write a program to find the straight line distance between two points
P1
P2
X1 X2
Y1
Y2 D
How do you find D?
P1
P2D
X
Y22 YXD
12
12
YYY
XXX
22 1212 YYXXD
Program Design Process – step 4
Define the problem
List the inputs and outputs
Design the solution algorithm
Check the algorithm by hand
Write the program code
Test the program code
Write a program to find the straight line distance between two points
What values of Xi, Yi (where i=1, 2) would be good to test the algorithm with?
Program Design Process – step 5
Define the problem
List the inputs and outputs
Design the solution algorithm
Check the algorithm by hand
Write the program code
Test the program code
If you have refined your algorithm sufficiently, writing the code should proceed straightforwardly from it.
If not, continue refining the algorithm until you can write the code directly from it.
Your pseudocode can be turned into the comments for your code.
Program Design Process – step 6
Define the problem
List the inputs and outputs
Design the solution algorithm
Check the algorithm by hand
Write the program code
Test the program code
Test your code with cases that you know the answer to.
Try the ‘boundary’ cases to make sure your code works for them too.
Algorithm – Items to Consider Is the problem statement clear and concise?
Could be better: “Find the midpoint on a line between two points
What are the inputs? X and Y coordinates of the two points:
x1, y1 and x2, y2
What are the outputs? The midpoint between the points:
Xm, Ym
Algorithm – Items to Consider, cont.
Solution algorithm Point must be on the line Midpoint means ‘halfway’
between the points Halfway in x and halfway in y
This should suggest a solution strategy
P1
P2
X1 X2
Y1
Y2
M