Transcript LECT10.PPT

Algorithms IV
Top-Down
Design
CMSC 104
1
Pseudocode and Then Some
We can write an algorithm for finding the
average of two integers:
Get an integer, num1, from the user
Get an integer, num2, from the user
sum = num1 + num2
average = sum / 2
Print “The average of “ num1 “ and ” num2
“ is ” average.
 Steps 1, 2 & 5 will make use of code found
CMSC 104 in the run-time library.

2
Investigating Steps 1 & 5
Get an integer, num1, from the user
Print “The average = “ average.
 Are these really single steps?
 Each of them is really a sequence of
steps, a subprogram. Two kinds of
subprograms:
CMSC 104
o Functions - an answer is returned to the
main program.
o Procedures - no answer returned to the
main program
3
Functions and Procedures
In our example, the function that gets a
value from the user and the procedure
that prints out the answer were already
written.
 Many times it is necessary for us to
write our own procedures or functions.

CMSC 104
4
More Problem Solving
If we look at the problem as a whole; it
may seem impossible, because it is so
complex.
 Complex problems can be solved using
a Top-Down approach aka Stepwise
refinement

o Break the problem into parts
o Then break the parts into parts
o Soon each of the parts will be easy to do
CMSC 104
5
Advantages of Top-down Design



CMSC 104
Breaking the problem down into parts
helps us to clarify what needs to be done.
At each step of refinement, the new parts
become less complicated and therefore
easier to figure out.
What if you’ve broken a problem down as
much as you can and you still don’t know?
o Missing information
o More detail is needed
6
A Practical Example

Scenario:
o We own a home improvement company
o We do painting, roofing and basement
waterproofing
o A section of town has recently had flooding
o We want to send out waterproofing
pamphlets to our customers in that area
CMSC 104
7
Our Algorithm
Get the customer list from a file
 Sort the list according to zipcode
 Make a new file of only the customers
with the zipcode 21222 from the sorted
customer list
 Print an envelope for each customer in
the new file

CMSC 104
8
Single steps ?
None of our steps are single steps
 Employ Top-Down Design
 Start with the large idea and break into
large parts
 Each part will end up being a function or
a procedure

CMSC 104
9
Pseudocode for our Main Program
Call Get Customer List
 Call Sort on customer list by zipcode
 Call Make Target List from customer list
using only zipcode 21222
 Call Print Envelopes using target list

CMSC 104
10
The Next Step
Write algorithms for each of the
functions or procedures.
 These may include steps that are really
several steps, too.
 Give names to these new functions and
procedures.
 Write algorithms for them.
 Continue this process until done.

CMSC 104
11
Structured Programs




CMSC 104
Top-down design will be used for all of our
programming projects
This is the standard way of writing programs.
Programs produced using this method and
using only the 3 kinds of structures,
sequential, selection and repetition are called
structured programs.
Structured programs are easier to modify
later and also easier for other programmers
to understand.
12
Another Example

CMSC 104
Problem: Write a program that draws
this picture of a house.
13
The Algorithm
Draw the outline of the house
 Draw the chimney
 Draw the door and doorknob
 Draw the windows

CMSC 104
14
Similarities
All three windows are identical.
 They are simply in different positions.
 We can write a function called
DrawWindow that will draw one window
at a position we specify and call it 3
times with the three different positions.
 Another benefit of Top-down design is
reuseability. We are reusing the code
for DrawWindow.

CMSC 104
15
The Pseudocode
Call DrawHouseOutline giving a position
 Call DrawChimney giving position
 Call DrawDoor giving position
 Call DrawWindow giving position #1
 Call DrawWindow giving position #2
 Call DrawWindow giving position #3

CMSC 104
16
Problem Solving Techniques

We have investigated three problem
solving techniques:
• Multiple attacks
• Working backwards
• Top-down design
CMSC 104
17